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.


Topics - Maki

Pages: [1]
1
This is true act of bored person:
OpenVIII - the FF8 engine set:
https://www.dropbox.com/s/069wd7lcvopjf0h/FF8.7z?dl=0

Just two implementations of FF8 engine that works ONLY on real VIII files meaning you wouldn't even run it without Steam release of VIII or slight code change.

In the package you will find:
OpenVIII - This is Unity project, that provides:
  • real-time battle 3D rendering with textures
  • basic field rendering with camera setup
  • all LZSS, field archive and whole core

FF8 - This is Monogame project, that provides:
  • real-time battle 3D rendering with textures that renders face one-by-one considering the CLUT (closest to original fan-made battle stage rendering ever made)
  • basic field rendering
  • real DirectMidi support for direct DLS and SGT music
  • Movie player (unfortunately not Bink wrapping, but casual MPEG4 without sound)
  • all LZSS, field archive and whole core

Use it to learn, use it for your own projects, use it to listen to music or view 1:1 stages with FPS camera, whatever. I simply don't care.

Tutorial:
Before you proceed with anything make sure you have Final Fantasy VIII steam version installed (or 2000 PC version if you can do basic coding)


FF8 - XNA/MonoGame:

1. You may need to install MonoGame for VisualStudio. You can do it without any problems at: http://www.monogame.net/downloads/ ; Just make sure to download DEVELOPMENT build for Visual Studio instead of official releases (they are quite outdated)
2. After grabbing MonoGame you'll be able to open Visual Studio 2015 (minimum) project without any problems. Just open FF8.sln with Visual Studio
3. Open Game1.cs- this is entry-point class. You can uncomment line 26 at init_debugger_Audio.DEBUG(); to enable DirectMusic
4. Open Memory.cs and take a look at lines 37 and 38. You'll understand the drill. Set the path there to your lang-en catalogue of FF8 or change it to e.g. lang-fr, doesn't matter, files should be there. Make sure path ends with '\' (lazy programmer I am)
5. DONE! You'll enter automatically into field mode. Use F keys to change modes:
F2 - change module to battle and set to next stage
F3 - Next music
F4 - change module to field and set to next field
F5 - same as above but gets back to previous field ID
Battle stage:
Movement mouse; WSAD translation
Quitting:
ALT+F4 ;_;

2
Hello everyone! I'm trying to implement my own MIM+MAP algorithm, yet the wiki page is quiet chaotic. Myst6re's Deling source code helped a bit, yet I face some issues:

-When does exactly the stage is type 1 or type 2? Are there really two types? In Wiki and Deling source code we see that types are distinguishable by .MIM filesize, yet I wasn't really able to find 401408 bytes .MIM
Anyway, I treat every single field like a type2. However, there's something odd:
I took two different stages and tried to render it:


Please ignore black spots, I didn't implement blending.
Both the stages have EQUAL .MIM filesize; How do I know when to use palettes 0-8, or when 8-16?
What am I missing?

3
Hoarding again through the FF executables I found the .dotemu references. Quickly found out it's a game porting studio. Here's the interview:
https://squarebd1.wordpress.com/2016/01/27/my-interview-with-dotemu-the-studio-behind-many-recent-final-fantasy-ports/

From my personal experience working in commercial gamedev industry, porting game is usually hacking it on your own to make it working with current gen (in case of retro games there's almost never a source code, just an ISO). However, dotemu actually said the dev department of SE did in fact provide support for their game, which happens quite rare. We can't talk about source code for sure, but I think they actually remembered how things go and for example how to use AF3DN.P for memory injection and passed that info to dotemu.

4
Scripting and Reverse Engineering / .SGT audio
« on: 2018-06-24 11:59:50 »
I'm currently on hunt to implement .SGT playing. I got many needed information like how is RIFF container with DMSG built, like here: http://www.vgmpf.com/Wiki/index.php?title=SGT
It's part of DirectMusic that was a part of Dx8, yet I've seen the FMOD works with .SGT and .DLS media. I grabbed FMOD, made the wrappers working and tested with .MP3 and .MID files work flawless yet on .SGT it throws ERR_FORMAT like it doesn't know how to play .SGT (yet it loads .DLS bank properly). I browsed the web and found the FMUSIC of FMOD is capable of playing .SGT, but it's like 14 years ago and no such thing as FMUSIC exists anymore. Therefore- is any of you aware of any library that supports playing .SGT? Or converting to .MID or almost anything else I can use on good license and is capable of storing the data in memory only? I'm trying to implement an audio playing working on real files instead of re-converting them (or at least not leaving any trash behind). I'm working with Dx11, so I can't just grab the old DirectMusic from dx8

Working C# example in my last post!

Basically C# wrapper of C++ wrapper of Dx8 DirectMusic

5
Scripting and Reverse Engineering / [PC] Final Fantasy XV
« on: 2018-02-09 15:32:35 »
The benchmark is available on:
http://benchmark.finalfantasyxv.com/na/

Game engine that parses FFXV files. Uses EARC for archives, tool is available here.
PDB available on torrent site, due to PDB availibility let's all work on r1138403 debug build

Make sure for your comfort to rebase software to 140000000 (default 64 bit entry point) and disable ASLR (0x1EE & 0xBF)

EARC is known

XMB2 (.exml):
Code: [Select]
char[4] IDENTIFIER = "XMB2"
uint FileSize [yes, 4 byte, not qword]
ushort flags
ushort version
uint RootElementOffset <- this points to element root

6
Hello,
I'm slowly approaching breaking into MIPS assembly. On my example I'm trying to break PSOne FFVIII battle stage loader code that is hardcoded in files. Therefore after analysis with IDA I'm having a pretty good understanding of the code, however there are some portions I just can't happen to break which are: stack and arguments. Surely I see:

Code: [Select]
addiu   $sp, -0x18makes stack size of six, where
Code: [Select]
sw      $ra, 0x14($sp) is the return address, therefore five values on stack to reverse. There are some instructions that define loading stages based on arguments which I don't know what are.


Therefore my question is- Do you know of the best way to disassembly on-live PSOne MIPS code played on debugger? Mostly I want to break on as soon as the processor gets to the code to test the stack and etc. I used NO$PSX before, but it's not intuitive enough for locating code I need. What are your ways to hack PSOne games on MIPS level?



UPDATE:
Got it working with IDA. Used IDApsx with IDA 6.8 and PCSXR. Need to tweak plugins, but it's all working like a charm. Took me three hours to setup by the way. :-o

7
General discussion / 8BPP TIM converter
« on: 2017-02-24 17:44:23 »
Does anyone know TIM editing software that is capable of taking care of CLUT palettes for me by converting bitmaps to TIM?
TIM Viewer can support only 16->24 and 24->16 conversion but I'm aiming to 8BPP

8
mobiusff_Data/mobius_data/Hash/...
Compressed Unity3D standalone files with MD5 hash names
Opeanable/decompressable with UnityEx 1.4.3
After decompressing, real package name is at: 0x40. Example name: CAB-b90836_android (terminated with /0)

About fileformats:
MUSIC:
example: music_saranotheme.txt is in AKB2 container. In order to make it working OGG delete 320 bytes from start, so the file starts with OggS header. Voila

Textures:
DXT

AES crypt
e.g. assetList_hash_win.dat is AES crypted
AES128
IV :
Code: [Select]
$MEVIUS-PROJECT#Key:
Code: [Select]
SQUARE-ENIX-BD1%CipherMode: CBC
PaddingMode: ISO10126


assetList_hash_win.dat
OffsetSizeDescription
0x0016 bytesAES IV - Treat as UTF8 bytes
0x16variesCompressed data

Deciphered:
OffsetSizeDescription
0x004 bytesProbably entries count
0x04EntryCount*48Entry

ENTRY:
OffsetSizeDescription
0x0040 bytesANSI file relative path
0x28unsigned intFile revision (uint)
0x2CintFile size


Example MD5 file names:

Text/CutScene/ev_0000_010/ev_0000_010TxtRes__jp

Full JP filelist:
http://cache.jp.mobiusfinalfantasy.com/asset/20170127_0007/mobius_data_middle/win/assetList_hash_win_JP.bin (unknown format, probably AES with default IV and key, too lazy to test UPDATE:Nope, doesn't work)
http://cache.jp.mobiusfinalfantasy.com/asset/20170217_1633/mobius_data_middle/win/managementList_hash_win_JP.txt
http://cache.jp.mobiusfinalfantasy.com/asset/20170217_1633/mobius_data_middle/win/datasheetList_hash_win_JP.txt

9


Rinoa's Toolset is a Final Fantasy VIII modding, ripping and analyzing software. Program has a built-in 3D renderer, support for many file formats, manual ripper and additional minor analyzing tools. Rinoa's toolset is currently the only program that can view full 3D textured geometry model for Battle Stages, World Map Vehicles, geometry for World map segments, geometry for G.Fs stages and items used in animation, also comes with train track visualizer. I'm happy to introduce you program in which I put all my skills and experience, that first github commit was dated in August 2015. I really wish this software would be handy and comfortable. Finally, I would like to thanks everyone that supported me, especially Halfer and Kaspar01. Have fun!


Full list of features
Features - 3D

    Battle Stages + original texture mixing to get texture 1:1 as in-game
    World Map vehicles
    World Map segments
    World Map train track visualizer
    World Map train track editor
    Guardian Forces environment objects
    MCH support (chara.one files) *only static T-pose!

Features - Other

    English dialogs decoding from raw files
    Searcher for development paths inside FF8
    Namedic.bin editor
    LZSS decompressor
    Archive extractor
    Wm2field editor
    Movie unpacker
    TIM support
    TEX support
    World map interactive region editor
    World map encounters editor
    World map draw points editor
    Magic+GFs texture support

Battle Stage support features

    View in real-time 3D any Battle Stage
    Hide and inspect segments
    View UV layout on texture!
    Directly modify vertices with real-time preview
    Convert segments to single OBJ file!
    Get final rendered texture as in game [mixing textures with original algorithm]
    Convert OBJ model to FFVIII ! [Alpha]


@Built-in renderer is powered with custom modified SharpGL

Download


github page: https://github.com/MaKiPL/FF8-Rinoa-s-Toolset
Binary release: https://github.com/MaKiPL/FF8-Rinoa-s-Toolset/releases/latest

Requires .NET Framework 4.0



At the end,
I wish to ask you for any donation. This will motivate me for further and more excessive work on FFVIII research and tools creation. I won't stop anyway.



Thank you kindly, feel free to contact me, ask me anything. Report bugs either here or on github and... Have a nice day!  :wink:

10
So... Anyone waiting?


Code: [Select]
        OS: Windows Vista or later
        CPU: 2.4GHz quad-core CPU
        Memory: 2 GB RAM
        GPU: NVIDIA Geforce GTX 450 / AMD Radeon HD 5750 with 512MB
        HDD: 40 GB

What do you think? Is it again Unity port and we will be able to snatch whole source code?
Is it UnrealEngine based? Is it rewritten to PC?
Any FFX fans out there? Personally I have retail version for PS3 and I really like the HD remaster. :3 Recently made 100% trophies.
Is someone here who is going to mod the PC release?

EDIT: FFIX unity port was prepared by Silicon Studio with probably Square Enix source support. It's hard to find any info, but is is possible the same studio prepared FFX-X2-HD-PC2016?

12
Scripting and Reverse Engineering / [FF9]2016 release
« on: 2016-04-15 17:56:50 »
So... They used Unity3D (LOL, sic!).

FFIX\StreamingAssets\ma\:
FMVXYZ.bytes files are pure OGG
mbgXYZ.bytes files are also pure OGG

FFIX\StreamingAssets\:
P0dataXYZ.bin are "Unity Web Player Scene (non compressed)":
Open with UnityEx 1.5

FFIX\x64\FF9_Data\
sharedassets files, open with UnityEx 1.5

Source notes:
By the way> This can help in reversing FF8 (and FF7 if there's something missing). The engine is similar, so...
So far the most interesting source files are (for related FF):
PSX_LIBGPU.cs (Contains many polygon infos, vertex etc.) [Names like TPage and etc.]
PSX_LIBGTE_EMU.cs - I've seen this huge array in FF8 pseudocode...
PSX.cs - Many definitions about colour, TIM width etc.
PsxCamera.cs - Contains debug dumper for Camera info (reverse engineering?) and ready camera class (Matrix translation etc.)
PSXTexture.cs - Generating texture from TIM? (Yeah, setting new bitmap, copying pixels according to data. Looks like TIM to Bitmap generator)

13
Completely unrelated / April's Fools day
« on: 2016-04-01 10:10:50 »
So, what was your the best troll today?
I haven't done anything yet. :(

14
Completely unrelated / Happy new 2016 year
« on: 2015-12-31 23:27:17 »
Dear friends,
I wish you luck, happiness, big income and all you wish secretely.
It's 2016 now (GMT+1), so Happy new Year!
To every reverser here, let 2016 be the year you success and your software will be 100% ready!

Cheers!
 :-*

15

Description:
This does just what you can see on image above. Fixes bad PC version UV mapping.

Compatibility: Works with all FF8 versions (2000+Steam) multilanguage + any currently available mods
                                 If you're having problems, please proceed with manual patching tutorial.
Requirements: .NET Framework 4 (for ready patcher) or DLPB's Tools 2.0 for manual patching

ASM hack source: http://pastebin.com/WnRA19mM

*Old patcher deleted due to the fact it corrupted the EXEs and overwrote backup. I'm so sorry for destroying your backups. Please, use manual patching for Steam or above for 2000 version.

STEAM Version:
MANUAL PATCHING TUTORIAL: (STEAM)
(Big thanks to Cities.Burn.Quick for writing this tutorial) :)
(Use this if above fails. This applies for English version only, however you can find FF8 2000 HEXT instructions at the bottom of this post)

 1. Backup the FF8_EN.exe file from your Final Fantasy VIII Steam directory (steamapps/common/FINAL FANTASY VIII/) just in case.

2. Download DLPB's Tools 2.0.

3. Unzip the file anywhere on your PC.

4. Open the "HextEdit" folder and move your FF8_EN.exe file from your Steam directory to the HexEdit root folder. The root folder contains another folder named HE_in, the HexEdit.exe, a Readme.rtf, and a test.file (which you should delete).

5. Open the HE_in folder and delete the example Hext instructions.

6. Create a new Notepad text document in the HE_in folder, name it "FF8_EN" or "FF8" and paste:

Code: [Select]
FF8_EN.exe
153CC0 = 00
153CCA = 00
153CD8 = 00
153CE2 = 00
153CF2 = 00
153CFC = 00
153D0C = 00
153D16 = 00
153D26 = 00
153D30 = 00
153D38 = 00
153D42 = 00


7. Save your FF8_EN.txt.

8. Go back to the HextEdit root and run the HextEdit.exe application, press enter when prompted.

9. Once HextEdit finishes it will create a HextEdit.txt. Open this file and insure it reads...
Code: [Select]
---------------------------
FF8_EN.txt (FF8_EN.exe)

Changed: 12
Replaced: 0

No errors.

___________________________


10. If newly created HextEdit.txt has the same output, it was patched successfully.

11. Move your FF8_EN.exe from the HextEdit root back to your Steam directory. Overwrite if need be.

12. Run game and enjoy your newly patched FF8 world map!


PC 2000 release version:
Download and run with launcher:
Downloadhttps://www.dropbox.com/s/zaq4gqquaop00kn/FF8_UVPatchLauncher.7z?dl=0

-=Alternative files (HEXT instructions for DLPB's tools)=-
FF8 2000 English: https://www.dropbox.com/s/zaq4gqquaop00kn/FF8_UVPatchLauncher.7z?dl=0
FF8 Steam English: http://pastebin.com/W72H6yep

16
[obsolete, of course!] :3

This is the only leftovers undocumented that are in battle.fs, after that we would 100% finish battle.fs

=MAG files=
So... Let's say something about MAG files. Those are chaotically managed files, can contain various extension and has no normal formula... I found TIM texture in file like mag115_h.13 and also in mag161_a.dat (See? Extension is not important here). Just recently when I began to looking at files I found QUAD model in one file:
mag094_b.1s0 (Uses the same QUAD format as Battle stages- identical)

also 16B pattern in:
mag094_b.2e0 (starting at 0x298c). There's probably 4B padding before that.
There is 2 149 such triangle-like things. (0xbbe4 a next the same pattern starts)

mag094 is Siren G.F. attack.

I know Kaspar was looking at G.Fs.



=r0win.dat=
This file is responsible for whole winning sequence. I found AKAO frames in it, probably camera movement and whole logic. Game runs into infinite loop when you delete file and win battle. Hud disappears, you can't do anything. Nothing happens. Battle music plays. Nothing.

=b0wave.dat=
I don't know completely what this file is.
When deleted and enters battle, the enemy nor player is loaded and even no battle logic. The stage just plays anim and nothing happens. So, this may be the route:
1.Engine loads stage+music
2.Stage plays opening camera animation
3.b0wave.dat is loading battle core data
4.When you win, r0win.dat handles what comes next

=a9btlfnt.bft=
As above. Nothing happens when deleted.

Feel free to write any notes you have.

@update to MAG:
I deleted mag094_b.2e0 and the game gets into infinite loop after the sea sinks the enemy. The sea is flowing thru enemy, camera is fixed, nothing happens. This means, that the MAG files are sequenced. One part of file is loaded after it passes another part of sequence is loaded. This way programmers probably saved some memory.

17
Disclaimer!
See newest BS software: http://forums.qhimm.com/index.php?topic=17064.0

Born from here: http://forums.qhimm.com/index.php?topic=15906.0

FFVIII Battle stage .X to OBJ converter is intended to analyze, dump and convert data from FF8 .X battle stage files to OBJ with texture coordinates.

Current version: 1.1 (1.1)
Last updated: 25.03.2015


Features
  • GUI
  • Automatically searches for models in two modes: strict and extended (description below)
  • Shows model offset, vertices, triangles and quad count, shows offset for each one
  • Resolves TIM texture size + TPage'ing.
  • Converts model data to OBJ
  • Automatically creates MTL and OBJ needed info
  • And something more I forgot about. :*

List of changes in 1.1
  • Added Magic RIP Button (The most awaited :D)
  • Redone debug info. Shows now full path
  • Redesigned. Deleted unused progress bar and stuff
  • Software now checks if obj is already ripped, if so, overwrites it. No more endless stream.


List of changes in 1.0
  • Changed icon to the one made by LionHartGR. Thanks!
  • Fixed triangle UV. Thanks to Kaspar01 for providing screenshots. Correct order was ABC> BCA
  • Extremely optimized file. Now it's ~300 KB
  • Built with .NET Framework 4.5 instead of 4.5.1

List of changes in 0.9e
  • Added auto texture resolve
  • Added auto MTL generator
  • Injected quad/triangle algorithm as a one operation
  • Made it less ugly (deleted unused options and stuff)

INSTRUCTION
1.Load file by File>Open
2.Click on one of preferred search modes
3.Select model offset from list on left (or click Magic RIP button - rips all valid meshes)
4.Click RIP
5.Generated MTL and OBJ is in your directory where .X file was. Software generates files named by this: (stageFilename)_(offsetOfModel)_(t or q).obj

Modes
Strict mode - Is most stable option to search for models, but it mostly misses many models (segments). This mode takes the models from generic model set as I wrote on wiki (and it's probably not true [what I wrote on wiki], as we can see now there're models before generic object header [will edit this later])
Extended mode - It searches from beginning. This CAN produce offset of models, that ARE NOT a models itself. There's where my model checker comes in action. Before RIP button is going to be available, my validator checks it for conditions:
Triangle count < 10000
Quad count < 10000
Vertices count < 10000
Vertices != 0
However, it's not 100% of possibilities, so there's still 1% of chance, that the wrong model will pass thru my validator. Ripping bad model passing my validator shouldn't crash the software itself, however the mesh would be complete mess.

Download:

https://www.dropbox.com/s/n7vao6448jtse5v/VIII_x_to_obj_11.zip?dl=0

You will need .NET Framework 4.5 to run this.



FAQ

18
While thinking about VIII remake I tried to search for "the making of" to see some 3DS Max or some other 3D modelling software screens of map backgrounds to see if it's more 2D painting job, or real 3D render. After few minutes on google I found out, that Square DIDN'T made background by themself, but they passed the work to so called KUSANAGI Corp. (クサナギ), there I found many of their "showcase" works having at least 5 screens for every game they we're working on. From sketches, to never seen backgrounds. The most intriguing is:
http://www.kusanagi.co.jp/art/artgalleryfre-m/ff8/ff8.htm
the last one.

Chech more by going to:
http://www.kusanagi.co.jp/art.html
clicking on TVゲーム

There you can see sketches and renders that I totally didn't see. You can catch there sketches that you for sure wouldn't find in any "concept art" album. If it's well known, then sorry, but I really didn't see that anywhere. Enjoy!

Pages: [1]