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

Pages: [1]

Off-topic stuff first out. I'm not sure if anyone has yet noted a little lack of updates on FF8 world map exporter/imported (named wmx2obj in tools sections). It's still under work mostly because I want it to be as user friendly as possible. This has also lead me to somewhat what this topic tries to achieve.

So this topic will work on engine side and I hope that with this topic we can fill FF8 Engine information on wiki too.

For starters every addresses that straightly or remotely operates engine functionality somehow will be good to share here, also if there are already full functions constructed from disassembly that would be great. When posting addresses, please post your game version. I'm not sure how much difference there are in addresses between different versions, but if anyone has information on that, it would be good to be addressed here.

I've been debugging a bit of FF8 engine side lately, especially engine module switching from field to world and so on, and there are promising results building up. Here's one address that I found really cool to share now.

Code: [Select]
Game version: FF8 PC - 2000

Address: 00B6D970

    Functionality: Frame limiter?

    Data type: Boolean?
    Size: 4 Bytes?...See information...
    Default value: 01 00 00 00

    Information: This seems to be some kind of boolean value for the first byte in given address. When set to 00, the game is sped up. 01 is the default value.

Edit: Found addresses from dynamic memory that the frame functions compare on each frame, I'll put more info from functions later on, but right now these memory variables are good enough to operate from field module.

Code: [Select]
Game version: FF8 PC - 2000

Address: 01CE4760

    Functionality/Description: Module index to be transported

    Data type: Short?
    Size: 1 Byte, most likely 2 bytes but second one never used.
    Default value: 00 00

    Information: Value is the index to the module to be called. It is checked every frame and defaults to 00 00 in field. This value is only used in field module, other modules uses values from different memory addresses.

    IMPORTANT: Before changing the module index, change the parameters. If parameters are not set correctly before module transfer, the game may crash, freeze or leave the game in a state where it can't yet be recovered without resetting the game.
        01 00 = Call field module with room number in address 01CE4762 U16 (little-endian) (right after this value). There are a lot of parameters yet to be studied, for example where the characters are spawned.
        02 00 = Not used.
        03 00 = Call battle module with parameters right after this value. 01CE4762 U16 (little-endian) value seems to be encounter code, codes are here:
        04 00 = Resets game. Game is restarted.
        05 00 = Call in-game menu module. No parameters seems to be needed, however this does not mean it doesn't take any parameters.
        06 00 = Yet to be confirmed. Soft freeze.
        07 00 = Call world module with parameters right after this value. 01CE476C U8 determines where you are spawned in world map. Value 0x32 spawns you in ragnarok where you left it and value 0x30 spawns you in balamb garden where you left it. More values to be examined later.


While ago I installed windows 10 again on my laptop. Before that I had windows 10 installed with straight update from windows 8 and FF8 worked fine on that.

However, now that i'm trying to install FF8 again on fresh windows I keep encountering problems with it.

Here's APP.LOG from Aali's drivers:
Code: [Select]
[00000000] INFO: FF7/FF8 OpenGL driver version 0.8.1b
[00000000] INFO: Auto-detected version: FF8 1.2 US English
[00000000] INFO: Intel Intel(R) HD Graphics 4400 4.3.0 - Build
[00000000] INFO: OpenGL 2.0 support detected
[00000000] INFO: Using PBO
[00000000] INFO: Found swap_control extension
[00000000] INFO: Max texture size: 16384x16384
[00000000] INFO: Original resolution 640x480, window size 1024x768, output resolution 1024x768, internal resolution 1280x960
[00000000] INFO: Shader limits: varying 64, vert uniform 4096, frag uniform 4096
[00000001]   initializing direct sound
[00000001]   EAXDirectSoundCreate

Also, worth to note that whenever trying to launch EAXUnified.exe, it extracts itself and installshield and pops window with error saying: failed to load custom driver.

Using, non-geforce update 1.20 with HD 4400 integrated gpu since Geforce 840m didn't work with FF8 before installing windows 10 again.

P.S. This stupid problem is limiting the development of wmx2obj/obj2wmx program since I can't test it right now.... Was planning on releasing a version before Christmas, but it's hard to test the correct behavior without FF8.

Edit: Another app.log with different error

Code: [Select]
[00000000] INFO: FF7/FF8 OpenGL driver version 0.8.1b
[00000000] INFO: Auto-detected version: FF8 1.2 US English
[00000000] INFO: Intel Intel(R) HD Graphics 4400 4.3.0 - Build
[00000000] INFO: OpenGL 2.0 support detected
[00000000] INFO: Using PBO
[00000000] INFO: Found swap_control extension
[00000000] INFO: Max texture size: 16384x16384
[00000000] INFO: Original resolution 640x480, window size 1920x1080, output resolution 1440x1080, internal resolution 1920x1440
[00000000] INFO: Shader limits: varying 64, vert uniform 4096, frag uniform 4096
[00000000] ERROR: failed to stat file c:\ff8\final fantasy viii/shaders/main.vert
[00000000] ERROR: failed to load shaders


Would like to share an opinion that I don't like how skinny they made Squall. Should have kept him a little more "buffed" although it's Amano's artwork. Also Zidane's model looks great!


General discussion / [WIP] Squall CGI model
« on: 2015-04-03 13:35:21 »

First I want to state that I'm not a graphic artist in any way and I like to do 3d stuff in my free time as a hobby mind. I use Blender with cycles rendering engine to make this right now.

I've been working on this model for a long time, I've got the head model for pretty good state and base models for clothes made in the same time. The reason why it has taken so much time to just make these is that since I'm a beginner I did a lot of mistakes in topologies and such and I had to correct the errors in the same time as i pushed going for next parts. Briefly, I rushed in to work before planning properly (something you don't want to do in 3d modelling, learned it through hard way :D).

So some may ask why I even started doing work of this caliber since I'm a beginner. Well I'm really fascinated of Squall's character (and overally all the FF8 characters and sets) and I wanted to see more CGI stuff like FMV's in FF8. However it has only turned out that the visually stunning models used in FF8 FMV's aren't really used in any other Square games as they were in the game. Yes, there is Dissidia but I don't really like the way they turned Squall visually. So that is why I started to work on this replica model. Also, while right now the purpose is to make Squall's CGI replica, I don't plan to just leave it as that but to hopefully use it for making animations with FF8 setting.

So here are some images of the model I've created so far:

So as you can see there's still a LOT to do and I hope that you can give feedback of this and the most important, point out the errors that I have done and if you have experience maybe help me out with the methods that I should know when making this "huge" project.

I try to keep up with the textures to make a better showcases but right now textures are placeholders.

If you guys want, I can start "blogging" on this thread but only if you guys want to see the progression of this project. I've also thought of asking a helping hands with this project but I don't want to make it a really serious task. So if you have any interest to help in a HOBBY mind, feel free to tell me what is that you want to do for cutting the creating time.


First off, huge thanks to MakiPL for inspiring me and hopefully others with his research on ff8 battle fields. Since he's making a very good and much faster progress than i managed to make I decided to hop on to world map data. This concerns wmx.obj for now since I haven't looked on to the other files yet.

Remember that this info may be inaccurate in some parts since it is a huge file (33MB) and it is a pain in the neck to scroll through. However I'll talk about how to handle this file quicker at the end.


For now (not sure), the world map seems to consist of 768 sections. Each section contains 16 blocks and each block can have different amount of triangles. Luckily, the sea mesh seems to have 32 triangles  (formation told later) so we can do tests on that more easily. Here are pictures with 1 section/16 blocks and 1 block with 32 triangles:


Header consists of 68 bytes. Each section contains the same header structure.
  • First 4 bytes are still unknown since changing these don't seem to do anything.
  • Rest 64 bytes indicates the offset of blocks after the header


Possible render/collision options:
This is very complicated.
After the header, the first 4 bytes seems to remove the whole corresponding block when set to "00 00 00 00", also it creates a collision over it so it can't be fled over. Setting it something else messes with uv's as well as geometry and may cause the game to crash or freeze. Setting it to "30 30 30 30" also affects the next block for some reason. The collision is also changed and in this particular example you can go under the world (something like in ff7 :D).

Triangle data:

The data for 1 triangle is 16 bytes long starting after possible render/collision options.

The next 4 bytes are for triangle vertices. zeroing these gives the following results for one triangle:

Here are the marked triangle vertices:                                                                        And here's how they are formed:

Unknown still:

The next 8 bytes are still unknown, feel free to look at it!
Also the data between in-game blocks in a section is still unknown.

Ground type?

The last 4 bytes for one triangle data seems to contain UV data reference for the corresponding triangle. This is also how I made the example photos for this thread. Changing the value for this changes the triangles type. The marked bytes, when set to "88 88 88 88" gives the ground the type as in in-game example photos:

Also landing on this ground is possible, but as I tested I found out that you can reference to any type of ground with this and I managed to get probably a cliff type where I were unable to land with ragnarok.


Following the data for one section comes a bunch of zeros. This is called padding. The data and padding are 36864 or 0x9000 bytes for every section.

How to manage the file:

Since this file is huge I found out a little solution for managing it. One reason for the size of this file is padding. The header, data and padding seems to be fixed amount of 36864 bytes or 0x9000 bytes for easier reading in hex editor. This helps a lot since each section is therefore 0x9000 bytes long (including padding) and for next section you just add 0x9000 bytes more from the beginning of previous section to get for next section.

How to know which section you are editing in game:

This is still TODO. However I think there is 768 sections, but i'm not sure if one section can be larger or smaller than I showcased. For what I know, the first section in the file is top left corner section in-game and the next sections goes horizontally to the top right corner of the in-game map. This way of thinking isn't true in the vertical way however:

If there was 768 sections in the world map and the aspect ratio would be 4:3 like the world map picture, it would mean that the sections would be 32x24. Here's a picture of first block from 12th section of file which possible render/collision options are nullified:

You can see that it is pretty accurately in place.
If we want 12th section vertically it would be (12x32=) 384th section in file, however it isn't correct so the 768 section hypothesis isn't correct.

Although it isn't correct we can use the first horizontal line and maybe the second one for testing purposes with this hypothesis.


I hope this helps someone with their research on this and someone manages to do something huge with this!

Also the very last section includes the model for great salt lake, its train station and little part of the bridge. Just remember if you replace the first section or any other section with this that there is 36864 or 0x9000 bytes in the section including padding.

Scripting and Reverse Engineering / [FF8] .x battle fields
« on: 2015-01-13 16:55:51 »
Full documentation of battlefields done by MaKiPL found here:

Tool to extract battle stages found here:


I've started to study a bit of Final Fantasy 8 files and I happened to see that there was no documentation of .x battle fields in Qhimm's forum. I didn't find any threads about this file format or I completely missed it so I decided to make this thread.

After searching about this format I came to conclusion that this is DirectX file. However they are compressed and they are not lzs compressed (maybe a modified version?). Since I don't have any experience in decompressing, I wanted to ask if someone has already worked around this or if it's relatively easy to work on based on success of decompressing other files?

Accessing these files would be the next big leap after we finally got the textures working.

Also on side note (off-topic), I found something interesting from wmx.obj (world map object?) while opening it with NuGraf. NuGraf reported that the password was wrong so maybe it's encrypted?

Pages: [1]