Anonymous

Changes

From Final Fantasy Inside

FF8/Engine/WorldMapCamera

515 bytes removed, 05:22, 23 May 2019
m
8 revisions imported
By MaKiPL. :*
==Camera detail== Camera on world map is set to look-at target. Look at target is Squall, that is read from chara.one in world.fs file.
As the camera is look-at, then it works and moves on "logic" sphere. Memory in FF8 is static. Camera memory starts soon after last face indice layout is hold. Is after 3-4 unknown NULL bytes.
===Camera build=== 
Remember! Values are '''little-endian'''!
Physical camera location/translation:
 {| borderclass="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;wikitable"! style="background:rgb(204,204,204)" | Offset! style="background:rgb(204,204,204)" | Static memory address! style="background:rgb(204,204,204)" | Default or medium value! style="background:rgb(204,204,204)" | Type of value! style="background:rgb(204,204,204)" | Description
|-
| 0
| 00 E4 / 00 E0
| short (2 bytes signed)
| Distance between camera and look-at-target (physical)
|-
| 8
Others:
{| borderclass="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;wikitable"! style="background:rgb(204,204,204)" | Static memory address! style="background:rgb(204,204,204)" | Default or medium value! style="background:rgb(204,204,204)" | Type of value! style="background:rgb(204,204,204)" | Description
|-
| 0x01CA92E4
Logical zoom, for FF8 they're fixed values:
 *640 - when camera mode is set to far*1024 - when camera mode is set to near 
These zoom is operated, when you in-game set the camera near-far preferences. (F default in Steam release)
==Camera OPCODE== PRESENTED OPCODE'S ARE FOR STEAM RELEASE! If no opcode for variable above, then this variable is mostly fixed and is not changed on world map itself. (This is for example static vars). === Camera logical zoom ===
PRESENTED OPCODE'S ARE FOR STEAM RELEASE!
If no opcode for variable above, then this variable is mostly fixed and is not changed on world map itself. (This is for example static vars).
===Camera logical zoom===
FF8_EN.exe+5D7FA - mov [eax*4+FF8_EN.exe+18A927C],ecx
===Tangent Y=== 
FF8_EN.exe+15901F - add word ptr [FF8_EN.exe+1C3ED00],-10
FF8_EN.exe+15900F - add word ptr [FF8_EN.exe+1C3ED00],10
FF8_EN.exe+15848D - mov [FF8_EN.exe+1C3ED00],ax
FF8_EN.exe+1584C4 - mov [FF8_EN.exe+1C3ED00],dx
*ADD applies tick to smooth camera going down logic
*MOV applies camera going up and additional operations
* ADD applies tick to smooth camera going down logic* MOV applies camera going up and additional operations ===Tangent X=== 
FF8_EN.exe+158676 - add [FF8_EN.exe+1C3ED02],ax
FF8_EN.exe+15873E - add [FF8_EN.exe+1C3ED02],ax
FF8_EN.exe+158936 - mov [ecx+0A],ax
*First ADD is applied on regular translation. The one that user can rotate in-game mainly*Second ADD is applied on translations when character is going eg. right, and camera is set to front *Third ADD is applied when Squall has moved enough in one direction, so the camera is rotated hardly*Additional MOV is to finally check and correct camera rotation