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 - Shunsq

Pages: [1]
2
WIP / [FF8 PC]Fields database
« on: 2020-01-18 19:26:24 »
Hello everyone,
I've been thinking about creating a database for all the elements contained in FF8 fields.
The idea is to list all the assets contained in all scenes and in the future to create 3d models of all these assets.
The database would also contain the camera location, focal length and orientation. I force all scenes to be rendered 16:9 :ex:3840x2160 pix for 4K.

So far i've documented 65 / 900 fields.
Total number of assets:192
Total number of materials:103

I need the help of the community. All field pictures can be found here (thank you Maki ;D ):
http://forums.qhimm.com/index.php?topic=18508.msg260606#msg260606

Pick a field in the list below and please describe the assets and the materials.
What is an asset?
An asset is an object or a character populating a scene. ex: boat, car, stone,peebles,raincoat
What is a material?
The material describes the aspect of an asset.
ex: shiny green plastic, rubber, wet cardboard


Here is the googlesheet : FIELD DATABASE


Here is what i have for the field bcport1a:

bcport1a
  • Environment type:Harbor
  • Asset list:
    ocean,honeycomb pavement,concrete floor,ships,brick wall,concrete buildings,flower pot,small wood bark,chains,iron barrier,barrels,big wooden roll, far island
  • Material list:
    ocean,concrete,galvanized iron,brick,leaves
  • Camera focal length(in millimeters):
    32
  • Camera loc([X,Y,Z]in meters):
    [1.58;-24.1;2.6]
  • Camera rot([X,Y,Z]in degrees):
    [81.4;0;0]


3
Completely Unrelated / HAPPY NEW YEAR 2019
« on: 2018-12-31 22:42:29 »
Happy new year from France everyone!

5
Releases / [FF8 STEAM]FF8_Buttons patch : show PSX buttons
« on: 2018-03-06 22:23:53 »
FF8_BUTTONS ver0.2
FF8 buttons is a patch for FF8 that replaces the "B1,B2....,B10" with the original PSX buttons.
         
Basically it waits for the commands to show "B1", "B2",etc... then instead of printing B1 it prints the icon. I replace the "print text" function by the "print icon" function.

To apply this patch you must use one of these tools:
option 1) RaW by DLPB
This first option is preferred because it is more simple to use. Just download the lite version ( no music files included, no interface), put the Raw folder, bass.dll and ddraw.dll in the same folder as your FF8_**.exe .
option 2)HEXTLAUNCH from here :  Hext tools created by DLPB.

Instructions:
Please find here the hext file to use with hextlaunch or RaW:
FF8_FR:FF8_Buttons_FR (VER 0.2)
FF8_EN:FF8_Buttons_EN
FF8_IT :FF8_Buttons_IT
FF8_ES:FF8_Buttons_ES(NEW)
FF8_DE:FF8_Buttons_DE(NEW)
Additional button configuration tool:
If you don't have the icons matching your controller buttons, use this tool to associate any PSX icon to the button.
FF8 Buttons config tool (Ver 0.1)
You must not change the name of this file.

option 1)If you use Raw:
1)After you have installed RaW, copy the RaW folder, bass.dll and ddraw.dll in your FF8 game folder ( the same location as your FF8.exe).
2)Copy FF8_Buttons_(your language).txt and FF8_Buttons{config}.txt in [FF8 game folder]/RaW/GLOBAL/Hext/
3)Run the game.And that's it !

Just to make sure everything worked, open the Log.txt file located in RaW folder. It should show the following:
Code: [Select]
<===GLOBAL===>

#
FF8_buttons_(your language).txt
Changed: 451
Replaced: 0
Permissions: 1
No errors.
#
FF8_buttons{config}.txt
Changed: 12
Replaced: 0
Permissions: 0
No errors.

option 2)If you use HextLaunch ( old method but works):
1) Put hextlaunch.exe and the folder HL_FILES in the same directory as FF8_launcher.exe
2) Put FF8_BUTTONS_(your language).txt and the additional FF8_Buttons{config}.txt in HL_FILES/Hext_in/
3) Configure HL_FILES/settings.ini as follows:
Code: [Select]
[HextLaunch]
File=FF8_FR.exe  //Your version of FF8
Process=FF8_FR.exe //Your version of FF8
Window=
Delay=1000
KeepScanning=1
ReOpen=0
Failed=Failed. Continuing to scan...
WorkingFolder=

4)Launch FF8 with the default FF8_launcher.exe
5)Execute hextlaunch.exe .

Just to check that it worked, you should see the following in the cmd window:
"FF8_buttons_XX.txt                           451 byte changed, 0 replaced, 1 permission."
"FF8_buttons{config}.txt                      12 byte changed, 0 replaced, 0 permission."

Other mods recommended:
For HD icons use Mcindus texture set : FF8 HD icons
He made a wonderful work on all icons for FF8.

Release notes:
Code: [Select]
-ver0.1: For the moment it works with my FF8_FR.exe. I request the help of people here on qhimm to test the code on different versions of the game. Please give me feedback so that i can improve the patch.
-ver0.2 : FF8_EN,  FF8_IT , FF8_ES,FF8_DE version released. FF8_FR updated to ver0.2.
-2018-23-10 :additionnal config tool. If you want to remap the icons to your controller buttons i created an additional tool.

6
Hi everyone,
I'm trying to get the bone positions from the chara.one file , present in each field archive. The wiki states that the model data is lzs compressed but i can't figure out how to decompress the file.
I've read about LZS compression and wrote a program to decompress chara.one.
It is based on this:
http://forums.qhimm.com/index.php?topic=2023.msg28900#msg28900

Anyway all i obtain is garbage. Or maybe it's not looking like what i'm expecting: isn't it supposed to look like the .MCH file,with number of bones, vertices , etc... in the header?

This is how my code works:
Code: [Select]
typedef struct ALONE ALONE;
struct ALONE
{
    long long int one_offset;
    long int one_datasize;//appears twice
    long long int has_tim;//if >0xd0 then no tim_offset and directly model data offset( which is 0)
    long long int tim_offset;//0 if has_tim>0xd0
    long long int alone_offset;//0 if has_tim>0xd0
    char name[9];
};

//Reads the header then creates a list of ALONE structures ( one for each character of the chara.one)
//I've not included the code here

//---LZS Decompression---//I create a .alone file for each character "i"
for(i=0; i<alone_count; i++)
    {
        sprintf(outputpath,"%s%s.alone",outdir_name,alone_list[i].name);
        FILE*alone=fopen(outputpath,"ab+");

        fseek(inputfile,alone_list[i].one_offset,SEEK_SET);

        memset(outputpath,'\0',255);
        int ctrl_bit[8];//control byte before the compressed data
        char comp[2];//the two bytes of the compressed data
        int comp_len=0;
        int comp_offset=0;
        long int new_pos=0;
        long int last_pos=0;

        memset(ctrl_bit,0,8*sizeof(int));
        memset(comp,'\0',2);

        while(ftell(inputfile)<alone_list[i].one_offset+alone_list[i].one_datasize)
        {
            fscanf(inputfile,"%c",&cbyte);
            convert_to_bits(cbyte,ctrl_bit);//Reference byte

            for(j=0; j<8; j++)
            {
                if(ctrl_bit[7-j]==0)//compressed data
                {
                    for(k=0; k<2; k++)
                    {
                        fscanf(inputfile,"%c",&cbyte);
                        comp[k]=cbyte;//read from left to right
                    }

                    comp_len=comp[1]%0x10+3;//minimum is 3bytes
                    comp_offset=comp[0]+(comp[1]-comp[1]%0x10)*0x10;//if the two byte are read from left to right 0xa4 0xb1 then comp_offset=0xba4;
                    new_pos=ftell(alone)-(ftell(alone)-18-comp_offset)%0x1000;//reference byte pos

                    k=0;
                    if(new_pos<0)
                    {
                        for(k=0;k<comp_len;k++)
                        {
                            fprintf(alone,"%c",NULL);
                        }
                    }
                    else if(new_pos>0)
                    {
                        fseek(alone,new_pos,SEEK_SET);
                        for(k=0;k<comp_len;k++)
                        {
                            fscanf(alone,"%c",&cbyte);//reads at comp_offset
                            fprintf(alone,"%c",cbyte);
                        }
                    }

                }
                else if(ctrl_bit[7-j]==1)//literal data
                {
                    cbyte=0;
                    fscanf(inputfile,"%c",&cbyte);
                    fprintf(alone,"%c",cbyte);
                }
            }
        }
        fclose(alone);
    }
    fclose(inputfile);

7
_________BERRYMAPPER_________
Berrymapper is a tool to use in combination with the texture injector TONBERRY, written by Omzy. Tonberry is a program that extracts texures from the game and replace them with HD ones. To make this possible Tonberry has to identify the texture to be replaced, by giving them "hashcodes". Those hashcodes are generated with BERRYMAPPER.

Here is what Berrymapper produces:
sql_13,1721133567

And when Tonberry reads it it gives this in runtime:


LAST EDIT 2014-12-06:
Here is the program i created to generate the hashmaps:Berrymapper

It's a little console program that reads the content of Berrymapper.exe/INPUT and converts it to hashcode in the OUTPUT folder.

For character hashcodes copy "objmap.csv" and put it in FINAL FANTASY VIII/tonberry/hashmap/

For other textures copy "hashmap.csv" and put it in FINAL FANTASY VIII/tonberry/hashmap/

Follow the directives in the links below: Tonberry directives

Release log:
Version    Published on       Comment       
0002014-11-06First release
0012014-12-06Now you can add entire directories with subdirectories in INPUT/.Fancy loading bar.Columns are clearly identified in objmap.csv.
Press [ESC] TO EXIT

____PROJECTS USING BERRYMAPPER_____

____TONBERRY_____
The original tool (v1.5) can be found there:Tonberry v1.5
I put the link there to give tribute to its creator Omzy.

The newest version of Tonberry ( with brandnew functionalities) is provided there:Tonberry v1.6 and higher


Thank you for contributing to the characters hashmap:
Mortael
FatedCourage

Thank you for painting the textures:
Magochocobo
Devina
Yagami Light
Mortael
Crestian
Mcindus





8
Graphical / [WIP/FF8]FF8 field backgrounds enhancement
« on: 2014-05-24 23:08:00 »
Hello everyone,
I'm new to this forum, my name is Shunsq. I'm working on FF8 backgrounds for several monthes. As i started doing HD renders of FF8, i wanted to integrate them into the game. It is not a easy trick but thanks to some great tools like Translhextion, Deling, mimsAll,Pupu,Unmass or FF8 archiver, and also many hours of reflexion and "programming" i've succeeded in doing what i wanted.

My program is a excel sheet that ease creation of field .MAP and converts 3-bytes palettes to 2-bytes palettes. I use GIMP to generate 3-bytes palettes from each background layers. In a hexeditor i combine all the palettes and export the hexdump to my program.The converted 2-bytes palette, after text treatment, is then pasted into the field .MIM file. The entire process is a bit long to explain so i will do it on several posts. The bghoke_1 background i show below is 544x416 pixels, whereas the original was 320x240 pixels. I did the animations for the curtain(10 frames) and the door(5 frames). There is 4 layers, each one matching  "caracteristic" planes ( 1 for the foreground behind Kadowaki, 1 for the middle plane in front of Kadowaki, 1 for the right wall masking the character when he exits the field, and 1 for the background). Within the excel sheet i can see if i use all the space available on the .MIM file. So the resolution of 544x416 is the maximum i can do on THIS background. If i hadn't any layers, nor animations the maximum multiple of 320x240 would be 752x564.

BGHOKE_1


Here is the link to download the bghoke_1 archive:
bghoke_1

To use it you need the Deling program:http://forums.qhimm.com/index.php?topic=13050.0
1-FIRST OF ALL, copy the field .fi/.fl/.fs that you have in your game folder and put it in a new folder . It is REALLY IMPORTANT if you want to go back to the original state.
2-Decompress the ZIP
3-Open field.fs( the one located in your game installation folder, NOT the back up copy) with Deling. Clic on the import/export section, located at the top right corner.Then go to fre/field/mapdata/bg. There you have the list of fi/fl/fs archives for each field file.
4-Scroll down to the 3 archives (fi/fl/fs) concerning bghoke_1. Select them then clic on the "replace" button located in the upper toolbar. Search for the new bghoke_1 archives you've just downloaded. Once it's done, go back to the field viewer and search for bghoke_1. Normally you will see the thumbnail and all the top right sections are filled ( Texts, Scripts,3D models,Walkmesh, and so on....).

Now you can restart your game to test the Infirmary level. To test it quickly use Hyne save editor and select the bghoke_1 level.





Pages: [1]