[PC] Final Fantasy XV

  • Thread starter Thread starter makipl
  • Start date Start date
Status
Not open for further replies.
M

makipl

Guest
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]
Code:
char[4] IDENTIFIER = "XMB2"uint FileSize [yes, 4 byte, not qword]ushort flagsushort versionuint RootElementOffset <- this points to element root
 
Last edited:
FOUND THE FUCKER!
ucrtbase.dll:00007FFF8A01D800 ucrtbase__Exit -this is called asynchronous by one thread. Suspending thread toally makes the game playable with debugger attached.

UPDATE:
Unfortunately it doesn't print any cool debug stuff (maybe before level loading I saw something with [klang])

Okay, now I'm not quite sure how to enable input here xD I bet the input must be on some thread

DUMP TIME!

Luminous.RenderInterface.DefaultWindow
.rdata:00007FF6374128B0 0000000A C GLADIOLUS   

Hm, maybe this script:
SQEX.Ebony.Framework.Sequence.Event.SequenceEventKeyboardInput
EDIT_DISABLED_KEYBOARD_PAD   

Grab 73k lines of all engine scripts/paths/etc here:
https://www.dropbox.com/s/wytfrid4r3ju5nd/FFXV_dumped.txt?dl=0

UPDATE:
I saw "Luminous" only one time, it's always refered as "Black":
BlackConfig.xml

ucrtbase_exit is called by sub_7FF634CAC230 which is called by sub_7FF634CAC79


[klang][info]version 16.2.26.A

UPDATE:

Code: [Select]
Code:
.rdata:00007FF637646990 00000007 C ESCAPE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .rdata:00007FF6376469C8 00000008 C PRT_SCR                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             .rdata:00007FF6376469D0 00000007 C SCR_LK                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .rdata:00007FF6376469F0 0000000B C BACK_QUOTE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .rdata:00007FF637646A00 00000005 C CAPS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .rdata:00007FF637646A08 00000008 C L_SHIFT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             .rdata:00007FF637646A10 00000007 C L_CTRL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .rdata:00007FF637646A18 00000008 C WINDOWS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             .rdata:00007FF637646A20 00000006 C L_ALT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646A28 00000006 C MINUS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646A30 00000006 C EQUAL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646A38 0000000B C BACK_SPACE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .rdata:00007FF637646A48 0000000D C OPEN_BRACKET                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .rdata:00007FF637646A58 0000000E C CLOSE_BRACKET                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       .rdata:00007FF637646A68 0000000B C BACK_SLASH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .rdata:00007FF637646A78 0000000B C SEMI_COLON                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .rdata:00007FF637646A88 0000000B C APOSTROPHE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .rdata:00007FF637646A94 00000006 C ENTER                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646A9C 00000006 C COMMA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646AA4 00000007 C PERIOD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .rdata:00007FF637646AAC 00000006 C SLASH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646AB8 00000008 C R_SHIFT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             .rdata:00007FF637646AC0 00000006 C SPACE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646AC8 00000006 C R_ALT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .rdata:00007FF637646AD0 00000005 C FUNC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .rdata:00007FF637646AD8 00000005 C MENU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
 
Last edited:
Uhm

Bez_tytu_u.jpg
 
ffxv.exe parameters as said in launcher (which is written in C# and is not obfuscated):

Code: [Select]
Code:
string text = "ffxv.exe";   string text2 = string.Empty;   if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.LowQuality)   {    text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkLow.ini";   }   else if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.MiddleQuality)   {    text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkMiddle.ini";   }   else if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.HighQuality)   {    text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkHigh.ini";   }   if (this.WindowModeComboIndex2 == MainWindow.WindowModeComboIndexes.FullScreen)   {    text2 += " -f";   }   if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_1280x720)   {    text2 += " --displayResolution 1280 720 --renderingResolution 1280 720";   }   else if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_1920x1080)   {    text2 += " --displayResolution 1920 1080 --renderingResolution 1920 1080";   }   else if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_3840x2160)   {    text2 += " --displayResolution 3840 2160 --renderingResolution 3840 2160";   }   if (this.IsAutoLoop)   {    text2 += " --loop_mode";   }   text2 = text2 + " --locale=" + this.LanguageLabels[this.LanguageComboIndex].LocaleText;   ProcessStartInfo startInfo = new ProcessStartInfo   {    UseShellExecute = false,    FileName = text,    Arguments = text2   };   try   {    this.gameProcess = Process.Start(startInfo);   }
 
All possible parameters:
Code: [Select]
Code:
.rdata:00007FF637501D40 0000000A C --locale=.rdata:00007FF637501D50 0000000A C --ui_lang.rdata:00007FF637501D60 0000000D C --numThreads.rdata:00007FF637501D70 00000012 C --numAsyncThreads.rdata:00007FF637501D88 0000000C C --loop_mode.rdata:00007FF637501D98 0000000E C --graphicsIni.rdata:00007FF637501DA8 00000007 C --720p.rdata:00007FF637501DB0 00000008 C --2160p.rdata:00007FF637501DB8 00000014 C --displayResolution.rdata:00007FF637501DD0 00000016 C --renderingResolution.rdata:00007FF637501DE8 00000014 C --noNvidiaAfterMath
for config see this:
Code: [Select]
Code:
.rdata:00007FF637501E40 000002A5 C +wEAAJ8CAAD/W0Jhc2ljU2X/dHRpbmdzXQr/RGlzcGxheVL/ZXNvbHV0aW//bldIPTEyODD/eDcyMApNYXj/RnJhbWVyYXT/ZT0yNDAKUmWPbmRlcvjwBQ8XAUf/cmFwaGljc1D/cmVzZXQ9MAr/U2hvd0Nvbma7aWdZBEZQU1kACnlb/vT0/lNjYWz48O9Nb2RlWQBGUDH/NkJhY2tCdWb/ZmVyPTEKRnX/bGxTY3JlZW7+lAFPblN0YXJ0+3VwWQBIYXJkd+dhcmWsC8MBRFJH72FtbWGNAWU9MfsuM94BTHVtaW5vYW5jZecEMDDEAHdpZ2hTAGNpcwwA3iwDVGFyZ1cCVlP3eW5jcAJOVklE+0lB4gBlV29ya/1z9PdOdmlkaWHPRmxvd1kARxNIYfNpcjgSURZTaGFk3293TGliYhdUZf9ycmFpblRlc89zZWxhCwF2F3VyPWZRFlZYQU9wAiwGXvT3QW50aY8AYWIR/0FtYmllbnRPj2NjbHUREcMBCRBTT3BlY0GIEFgBTAkQNvfxUXWPAHR5WQCUAe9sTE9EjQQ9NzX9CrADRmlsdGVyP0RldGFpbKkAbBPC/vB0+QUQJW0SNQc9Nf8wClRleHR1cv9lQW5pc290co9vcGljHSNZAFkkU+90cmVh9gBnTWUXbW9yACAA
Looks familar? Yeah, that's base64...

Code: [Select]
Code:
����[BasicSettings]DisplayResolutionWH=1280x720MaxFramerate=240RenderGraphicsPreset=0ShowConfigYFPSY�y[ScalModeY�FP16BackBuffer=1FullScreenOnStartupY�HardwareDRGammae=1.3Luminoance00�wighS�cis�,TargWVSyncpNVIDIA�eWorksNvidiaFlowY�GHair8QShadowLibbTerrainTesselavur=fQVXAOp,^Anti�abAmbientOcclu SOpecAXL 6Qu�tyY�lLOD=75Filter?Detail�lt%m5=50TextureAnisotropic#Y�Y$Strea�gMemor� �
KeyConfig.ini in root directory actually has it all, not quite sure why it doesn't seem to work for input.
Game reads the file as said in Process IO:Code: [Select]
Code:
18:12:40,8167929 ffxv.exe 6832 QueryDirectory E:\FINAL FANTASY XV BENCHMARK\KeyConfig.ini SUCCESS Filter: KeyConfig.ini, 1: KeyConfig.ini18:12:40,8169401 ffxv.exe 6832 CreateFile E:\FINAL FANTASY XV BENCHMARK\KeyConfig.ini SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: R, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
 
Last edited:
I'm out of ideas... I just can't happen to enable input, and alcochol doesn't seem to help me...
 
Quest unpacked, names:

Code: [Select]
Code:
entities_.benchmark_demo.nodes_.[1]entities_.benchmark_demo.nodes_.[3]entities_.benchmark_demo.nodes_.[4]entities_.benchmark_demo.nodes_.[5]entities_.benchmark_demo.nodes_.[6]entities_.benchmark_demo.nodes_.[7]entities_.benchmark_demo.nodes_.[9]entities_.benchmark_demo.nodes_.[11]entities_.benchmark_demo.nodes_.[12]entities_.benchmark_demo.nodes_.[13]entities_.benchmark_demo.nodes_.[16]entities_.benchmark_demo.nodes_.[18]entities_.benchmark_demo.nodes_.[19]entities_.benchmark_demo.nodes_.[20]entities_.benchmark_demo.nodes_.[21]entities_.benchmark_demo.nodes_.[22]entities_.benchmark_demo.nodes_.[23]entities_.benchmark_demo.nodes_.[24]entities_.benchmark_demo.nodes_.[25]entities_.benchmark_demo.nodes_.[26]entities_.benchmark_demo.nodes_.[28]entities_.benchmark_demo.nodes_.[29]entities_.benchmark_demo.nodes_.[30]entities_.benchmark_demo.nodes_.[32]entities_.benchmark_demo.nodes_.[34]entities_.benchmark_demo.nodes_.[35]entities_.benchmark_demo.nodes_.[37]entities_.benchmark_demo.nodes_.[39]entities_.benchmark_demo.nodes_.[41]entities_.benchmark_demo.nodes_.[42]entities_.benchmark_demo.nodes_.[43]entities_.benchmark_demo.nodes_.[44]entities_.benchmark_demo.nodes_.[45]entities_.benchmark_demo.nodes_.[47]entities_.benchmark_demo.nodes_.[48]entities_.benchmark_demo.nodes_.[49]entities_.benchmark_demo.nodes_.[51]entities_.benchmark_demo.nodes_.[52]entities_.benchmark_demo.nodes_.[53]entities_.benchmark_demo.nodes_.[54]entities_.benchmark_demo.nodes_.[56]entities_.benchmark_demo.nodes_.[59]entities_.benchmark_demo.nodes_.[60]entities_.benchmark_demo.nodes_.[61]entities_.benchmark_demo.nodes_.[62]entities_.benchmark_demo.nodes_.[63]entities_.benchmark_demo.nodes_.[66]entities_.benchmark_demo.nodes_.[67]entities_.benchmark_demo.nodes_.[70]entities_.benchmark_demo.nodes_.[71]entities_.benchmark_demo.nodes_.[72]entities_.benchmark_demo.nodes_.[74]entities_.benchmark_demo.nodes_.[75]entities_.benchmark_demo.nodes_.[76]entities_.benchmark_demo.nodes_.[77]entities_.benchmark_demo.nodes_.[78]entities_.benchmark_demo.nodes_.[79]entities_.benchmark_demo.nodes_.[84]entities_.benchmark_demo.nodes_.[86]entities_.benchmark_demo.nodes_.[96]entities_.benchmark_demo.nodes_.[100]entities_.benchmark_demo.nodes_.[101]entities_.benchmark_demo.nodes_.[102]entities_.benchmark_demo.nodes_.[103]entities_.benchmark_demo.nodes_.[104]entities_.benchmark_demo.nodes_.[105]entities_.benchmark_demo.nodes_.[108]entities_.benchmark_demo.nodes_.[110]entities_.benchmark_demo.nodes_.[111]entities_.benchmark_demo.nodes_.[112]entities_.benchmark_demo.nodes_.[113]entities_.benchmark_demo.nodes_.[114]entities_.benchmark_demo.nodes_.[115]entities_.benchmark_demo.nodes_.[116]entities_.benchmark_demo.nodes_.[117]entities_.benchmark_demo.nodes_.[118]entities_.benchmark_demo.nodes_.[119]entities_.benchmark_demo.nodes_.[120]entities_.benchmark_demo.nodes_.[121]entities_.benchmark_demo.nodes_.[122]entities_.benchmark_demo.nodes_.[123]entities_.benchmark_demo.nodes_.[124]entities_.benchmark_demo.nodes_.[125]entities_.benchmark_demo.nodes_.[127]entities_.benchmark_demo.nodes_.[128]entities_.benchmark_demo.nodes_.[129]entities_.benchmark_demo.nodes_.[130]entities_.benchmark_demo.nodes_.[131]entities_.benchmark_demo.nodes_.[133]entities_.benchmark_demo.nodes_.[134]entities_.benchmark_demo.nodes_.[135]entities_.benchmark_demo.nodes_.[136]entities_.benchmark_demo.nodes_.[137]entities_.benchmark_demo.nodes_.[138]entities_.benchmark_demo.nodes_.[139]entities_.benchmark_demo.nodes_.[140]entities_.benchmark_demo.nodes_.[141]entities_.benchmark_demo.nodes_.[144]entities_.benchmark_demo.nodes_.[145]entities_.benchmark_demo.nodes_.[146]entities_.benchmark_demo.nodes_.[147]entities_.benchmark_demo.nodes_.[152]entities_.benchmark_demo.nodes_.[153]entities_.benchmark_demo.nodes_.[155]entities_.benchmark_demo.nodes_.[156]entities_.benchmark_demo.nodes_.[157]entities_.benchmark_demo.nodes_.[159]entities_.benchmark_demo.nodes_.[160]entities_.benchmark_demo.nodes_.[162]entities_.benchmark_demo.nodes_.[164]entities_.benchmark_demo.nodes_.[165]entities_.benchmark_demo.nodes_.[166]entities_.benchmark_demo.nodes_.[167]entities_.benchmark_demo.nodes_.[171]entities_.benchmark_demo.nodes_.[173]entities_.benchmark_demo.nodes_.[174]entities_.benchmark_demo.nodes_.[175]entities_.benchmark_demo.nodes_.[177]entities_.benchmark_demo.nodes_.[179]entities_.benchmark_demo.nodes_.[180]entities_.benchmark_demo.nodes_.[181]entities_.benchmark_demo.nodes_.[182]entities_.benchmark_demo.nodes_.[183]entities_.benchmark_demo.nodes_.[184]entities_.benchmark_demo.nodes_.[185]entities_.benchmark_demo.nodes_.[186]entities_.benchmark_demo.nodes_.[187]entities_.benchmark_demo.nodes_.[188]entities_.benchmark_demo.nodes_.[189]entities_.benchmark_demo.nodes_.[191]entities_.benchmark_demo.nodes_.[195]entities_.benchmark_demo.nodes_.[196]entities_.benchmark_demo.nodes_.[197]entities_.benchmark_demo.nodes_.[198]entities_.benchmark_demo.nodes_.[200]entities_.benchmark_demo.nodes_.[205]entities_.benchmark_demo.nodes_.[206]entities_.benchmark_demo.nodes_.[210]entities_.benchmark_demo.nodes_.[211]entities_.benchmark_demo.nodes_.[212]entities_.benchmark_demo.nodes_.[213]entities_.benchmark_demo.nodes_.[214]entities_.benchmark_demo.nodes_.[215]entities_.benchmark_demo.nodes_.[216]entities_.benchmark_demo.nodes_.[219]entities_.benchmark_demo.nodes_.[222]entities_.benchmark_demo.nodes_.[224]entities_.benchmark_demo.nodes_.[226]entities_.benchmark_demo.nodes_.[227]entities_.benchmark_demo.nodes_.[229]entities_.benchmark_demo.nodes_.[231]entities_.benchmark_demo.nodes_.[232]entities_.benchmark_demo.nodes_.[233]entities_.benchmark_demo.nodes_.[234]entities_.benchmark_demo.nodes_.[235]entities_.benchmark_demo.nodes_.[236]entities_.benchmark_demo.nodes_.[237]entities_.benchmark_demo.nodes_.[238]entities_.benchmark_demo.nodes_.[239]entities_.benchmark_demo.nodes_.[245]entities_.benchmark_demo.nodes_.[248]entities_.benchmark_demo.nodes_.[249]entities_.benchmark_demo.nodes_.[250]entities_.benchmark_demo.nodes_.[251]entities_.benchmark_demo.nodes_.[252]entities_.benchmark_demo.nodes_.[253]entities_.benchmark_demo.nodes_.[254]entities_.benchmark_demo.nodes_.[255]entities_.benchmark_demo.nodes_.[256]entities_.benchmark_demo.nodes_.[257]entities_.benchmark_demo.nodes_.[258]entities_.benchmark_demo.nodes_.[259]entities_.benchmark_demo.nodes_.[260]entities_.benchmark_demo.nodes_.[261]entities_.benchmark_demo.nodes_.[262]entities_.benchmark_demo.nodes_.[263]entities_.benchmark_demo.nodes_.[264]entities_.benchmark_demo.nodes_.[265]entities_.benchmark_demo.nodes_.[266]entities_.benchmark_demo.nodes_.[267]entities_.benchmark_demo.nodes_.[269]entities_.benchmark_demo.nodes_.[270]entities_.benchmark_demo.nodes_.[272]entities_.benchmark_demo.nodes_.[275]entities_.benchmark_demo.nodes_.[276]entities_.benchmark_demo.nodes_.[277]entities_.benchmark_demo.nodes_.[278]entities_.benchmark_demo.nodes_.[279]entities_.benchmark_demo.nodes_.[280]entities_.benchmark_demo.nodes_.[281]entities_.benchmark_demo.nodes_.[282]entities_.benchmark_demo.nodes_.[283]entities_.benchmark_demo.nodes_.[284]entities_.benchmark_demo.nodes_.[285]entities_.benchmark_demo.nodes_.[286]entities_.benchmark_demo.nodes_.[287]entities_.benchmark_demo.nodes_.[288]entities_.benchmark_demo.nodes_.[289]entities_.benchmark_demo.nodes_.[290]entities_.benchmark_demo.nodes_.[291]entities_.benchmark_demo.nodes_.[292]entities_.benchmark_demo.nodes_.[293]entities_.benchmark_demo.nodes_.[294]entities_.benchmark_demo.nodes_.[295]entities_.benchmark_demo.nodes_.[296]entities_.benchmark_demo.nodes_.[297]entities_.benchmark_demo.nodes_.[298]entities_.benchmark_demo.nodes_.[299]entities_.benchmark_demo.nodes_.[300]entities_.benchmark_demo.nodes_.[301]entities_.benchmark_demo.nodes_.[302]entities_.benchmark_demo.nodes_.[303]entities_.benchmark_demo.nodes_.[304]entities_.benchmark_demo.nodes_.[305]entities_.benchmark_demo.nodes_.[306]entities_.benchmark_demo.nodes_.[308]entities_.benchmark_demo.nodes_.[309]entities_.benchmark_demo.nodes_.[310]entities_.benchmark_demo.nodes_.[311]entities_.benchmark_demo.nodes_.[314]entities_.benchmark_demo.nodes_.[315]entities_.benchmark_demo.nodes_.[318]entities_.benchmark_demo.nodes_.[319]entities_.benchmark_demo.nodes_.[321]entities_.benchmark_demo.nodes_.[323]entities_.benchmark_demo.nodes_.[324]entities_.benchmark_demo.nodes_.[325]entities_.benchmark_demo.nodes_.[326]entities_.benchmark_demo.nodes_.[327]entities_.benchmark_demo.nodes_.[328]entities_.benchmark_demo.nodes_.[329]entities_.benchmark_demo.nodes_.[330]entities_.benchmark_demo.nodes_.[331]entities_.benchmark_demo.nodes_.[332]entities_.benchmark_demo.nodes_.[333]entities_.benchmark_demo.nodes_.[334]entities_.benchmark_demo.nodes_.[335]entities_.benchmark_demo.nodes_.[336]entities_.benchmark_demo.nodes_.[337]entities_.benchmark_demo.nodes_.[338]entities_.benchmark_demo.nodes_.[339]entities_.benchmark_demo.nodes_.[340]entities_.benchmark_demo.nodes_.[341]nodes_lastCenterX_lastCenterY_bIsPrefabTopSequence_entities_.benchmark_demo.connectors_.[0]entities_.benchmark_demo.connectors_.[1]entities_.benchmark_demo.connectors_.[2]entities_.benchmark_demo.connectors_.[3]entities_.benchmark_demo.connectors_.[4]entities_.benchmark_demo.connectors_.[5]entities_.benchmark_demo.connectors_.[6]entities_.benchmark_demo.connectors_.[7]entities_.benchmark_demo.connectors_.[8]entities_.benchmark_demo.connectors_.[9]entities_.benchmark_demo.connectors_.[10]entities_.benchmark_demo.connectors_.[11]entities_.benchmark_demo.connectors_.[12]connectors_benchmark_demoSQEX.Ebony.Framework.Sequence.SequenceContainerisBrowsable_inValue_inVehicleActor_connections_actor_kind_ACTOR_VEHICLE[1]Black.Sequence.Actor.SequenceVariableActorObjectpinName_Arg0pinValueType_arg0_SQEX.Ebony.Framework.Node.GraphVariableInputPinrefInPorts_out_in_in1_eventId_WM_G_COMM_VE_RIDEpDependencyPin_root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.benchmark_demo.nodes_.[3].refInPorts_.arg0_refInPorts_.arg0_pointertable_paramprefix_VEHICLE_RIDE_PATTERN_value_DEFAULT_NOCT_DRIVERSQEX.Ebony.Framework.Sequence.Variable.Primitive.SequencePrimitiveFixidarguments_printLog_notifyRange_LOCAL_MACHINE_REMOTE_EVENT[3]Black.Sequence.Event.Trigger.SequenceRemoteEventRequestIsolated_floatPin_floatKeepTimePin_floatKeepSpeedPin_boolPin_integerPin_stopped_target_AUTO_DRIVE_DEFINED_ROUTEfloatValue_floatKeepTimeValue_floatKeepSpeedValue_destId_DU_PARKING_12isStop_standingTime_isKeepDirection_destList_0Black.Sequence.Actor.AI.Vehicle.VehicleNavigationDestIdItemdestList_isLoopValue_loopNumValue_intisStopEngineAtEnd_boolValue_getOffType_VRG_AUTOisNeedChangeVehicleCamera_[4]Black.Sequence.Actor.AI.Vehicle.SequenceActionAIVehicleSetAssisttrue_layCheckNG_rayCheckSuccess_positionOffset_rotationOffset_entityGroupFlag_pointNodeActorVarOutPin_targetActorPin_isTeleportCamera_affectRotTypeForTargetActorPin_ROT_YisUseRayCheck_isForceCreateActor_EvenRayCheckNG_upperRayOffsetlowerRayOffsetbRayCastShiftBlockCollision_isRaycastBGOnly_waitCollisionAfterSetTrans_isAffectRotYTargetActorPin_isWorldRotationOffset_isMoveToTargetActorScene_rotatePositionOffsetWithTargetActorRotation[5]Black.Sequence.Action.Actor.SequenceActionActorSetTransformin2_wakeUpPin_VE_COMM_REGALIA_RIDE_ON[6]Black.Sequence.Event.Trigger.SequenceRemoteEventTriggerreset_[7]SQEX.Ebony.Framework.Sequence.Action.SequenceActionSync2VE_COMM_EVENT_WRECKER[9]VE_COMM_EVENT_WRECKER_END_JET_BENCH[11][12]false_finished_createdVehicle_isSetTranslate_isOverwriteLoadData_spawnPointPin_upperExtentOffset_lowerExtentOffset_isSetVehicleType_vehicleType_CAR_REGALIAisDisposePreviewVehicle_isSetKinematic_isUpdateSaveData_[13]Black.Sequence.Actor.AI.Vehicle.SequenceActionCreatePlayerVehicleentityPointer_root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.vehicle_roadentities_.spawn.entities_.vehicle_road[16]Black.Sequence.Variable.SequenceConstSpawnPointEntityoperatorType_BOC_OPERATOR_NOT_NULLoperatorTypeLast_AdynamicVarInputPin2_condition_resultPin_[18]Black.Sequence.Operator.Compare.SequenceOperatorCompareObject[19][20]Black.Sequence.Control.SequenceActionControlIf[21]ACTOR_NOCTIS[22]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.noctisentities_.spawn.entities_.noctis[23]label_WS_IS_STOP_ECOLOGYvaluePin_labelPin_isFixid_[24]Black.Sequence.Control.GameFlag.SequenceActionControlSetGameFlagFixIdbUseFrame_[25]Black.Sequence.Actor.AI.SequenceActionAINoneinCharEntryPath_overwriteParameterIDPin_spawnSets_spawnSet_actorType_ENEMYautoLoadCharaEntry_charaEntry_character/em/em04/entry/em04_020_armor_d_kargo.ebexoverwriteParameterID_NONEdefaultAIControllerType_CONTROLLER_TYPE_SEQUENCE_VS0overwriteInteractionParamId_teritoryFixId_isOverwriteDefaultControllerType_overrideAIParamId_maxSpawnNum_minSpawnNum_maxAliveNum_minAliveNum_[26]Black.Sequence.Actor.SceneControl.SequenceActionSCPersonalSettingisSameActorRayCheckNG_isHoldLODLevel_deleteActorsAtDestroy_setInactiveAtSpawn_setFadeAtSpawn_failAtNoResource_deleteWhenEnterTray_useSystemTime_abortInputPin_recoverInputPin_recoverStopPin_failed_eachSpawned_allSpawned_recoverSuccess_spawnedList_lastSpawnedList_actor2Pin_lastSpawned_lastRecovered_spawnPointType_BSSPT_SpecifiedPointOnlyspawnRadius_isUseEachBlackPathNodeRadius_retryCountWhenRadius_retryLimitRayCheckNGCount_teamName_NOTEAMteamType_NOTYPEteamNameId_NO_TEAMteamTypeId_NO_TYPEteamParamID_INVALID_IDtacticsID_TACTICS_NONEroleSetType_ROLE_SET_TYPE_VS0bAutoTeamMerge_spawnWeightType1_BSSWT_NoWeightspawnWeightType2_spawnWeightType3_spawnPointWeightThreshhold_spawnPointSamePointWeightImpact_afterSpawnWaitTime_isDeathActorRecover_m_SceneNoWhenActivatedm_bIsScriptActivatedm_SelectRotationTypeBlkSCSRT_SpecificVectorautoRandomYawMin_autoRandomYawMax_TimeBetweenPawnSpawnsMinTimeBetweenPawnSpawnsisIKRayCheck_[28]Black.Sequence.Action.Actor.SceneControl.SequenceActionSCActorCreateroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.enemyentities_.spawn.entities_.enemy[29][30]battleAreaPin_moveTobattleAreaPin_moveToSpawnedList_isPlayerBattleAreaIn_battleAreaOutActorListPin_movedToBattleAreaOutPin_isTeritoryOutTimerDeath_[32]Black.Sequence.Action.Level.SequenceActionSetBattleAreaextinctionOut_stop_battle_updateStatusFlag_changeActivate_[34]Black.Sequence.Action.Level.SequenceActionGetBattleAreaStatusprefixType_TERITORY_FIXID_PREFIX_TERITORY_LAYOUTJET_BENCH_ENEMYteritoryFixId_sub_[35]Black.Sequence.Action.Level.SequenceActionBattleAreaNotificationroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.battleareaentity01[37]Black.Sequence.Variable.SequenceConstPointEntityBaseautoBattle_[39]Black.Sequence.Action.Debug.SequenceActionDebugSetAutoBattleModeactors_invincible_damage9999_saveDataState_SAVE_DATA_STATE_AS_IS[41]Black.Sequence.SequenceActionSetPlayerInvinciblegage_encountGage_second_resultReset__tool_nodeStyle_[42]Black.Sequence.Action.Level.BattleArea.SequenceActionSetForceEncountGagesummonId_SAVE_SUMMON_SHIVAaddAmount_drawMenu_randomPlayer_menu_finish_success_fail_[43]Black.Sequence.Action.Actor.Accessory.SequenceActionActorGetSummoncancel_stopPin_disable_timePin_delayType_DT_TIMEleftValueOut_time_isRandom_randomMin_randomMax_forceAtPause_forceFrameCount_[44]SQEX.Ebony.Framework.Sequence.Action.SequenceActionWaitTimeUCon_summonDirection_SAVE_SUMMON_DIRECTION_FULL_SPECstartSummonStage_SUMMON_STAGE_PRESAGEisCheckPlayerDead_[45]Black.Sequence.Action.Level.Summon.SequenceActionStartSummonForcelastSceneKeepPin_actorPin_vector1Pin_float1Pin_int1Pin_commandSetPin_functionIdPin_functionId_GAME_LEVEL_ATTENTION_MODE_NONPRAIABLElastSceneKeep_[47]Black.Sequence.Control.SequenceActionCameraCallSequenceFixId[48]inPin_fadeTime_interpMode_IM_SPLINE[49]Black.Sequence.Action.Actor.SequenceActionActorDeleteopenMenu_suspendMenu_SETUP_RUN_END_JET_BENCH[51][52]outIn_succeeded_bEndByDamage_bEndByEncountGauge_bCancelByBattle_bReturnNormalModeWhenFinish_bForceExec_bWaitAction_bEnableNormalPosture_bHideForReset_bHideReturnNormal_bHideEndDanage_bHideNormalPosture_movement_JOGspeedRate_timeout_bCorrectionOfcoordinates_arrivalDistance_[53]Black.Sequence.Action.Actor.AI.AIMode.SequenceActionExecAIModeGoTo[54][56]isRelease_finish_completed_packagePathPin_packagePath_level/world/worldshare/plan/stay/camp/camp_event_group_jet_bench.ebexvalueUniqueId_valueLoadPosition_positionTargetActor_isRelese_isLoadSubPackage_forAreaLoading_isToLocateSequencePackagePosition_checkReleasedAtInitialLoadMode_isEnableSamePackageLoading_uniqueId_loadPosition_priorityType_PRIORITY_TYPE_DEFAULT[59]Black.Sequence.Action.Level.SequenceActionSetLevelPackageLoadroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.point_du_share_camp21[60]color_ColorfadeSound_NONE_SOUND_FADE[61]Black.Sequence.ScreenEffect.SequenceActionColorFadeOutenable_up_right_down_a_b_x_y_triangle_circle_cross_square_select_start_l1_r1_l2_r2_l3_r3_lt_rt_lx_ly_rx_ry_[62]Black.Sequence.Pad.SequenceActionPadSimulationpush_bIsNeedShiftPress_bIsNeedCtrlPress_bIsNeedAltPress_inputKey_NumPad9[63]SQEX.Ebony.Framework.Sequence.Event.SequenceEventKeyboardInput[66]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.noctis_camp_pointentities_.spawn.entities_.noctis_camp_point[67][70]isEnabled_[71]SQEX.Ebony.Framework.Sequence.Event.SequenceEventFrameUpdated[72]GETOFF_VEHICLEVRG_NORMAL[74]addGil_get_gil_[75]Black.Sequence.Action.Actor.Accessory.SequenceActionActorGetGil[76]WALK[77]actor1_[78]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.chocoboentities_.spawn.entities_.chocobo[79]two_itemId_SQ_ITEM_CHOCOBO_WHISTLEcheckDouble_add_amount_add_item_add_item_fixid_[84]Black.Sequence.Action.Actor.Accessory.SequenceActionActorGetItemMAIN_QT_CHAP_CHOCOBO[86]WM_G_CHOC_CALLING[96]rentalDays_[100]Black.Sequence.Action.Chocobo.SequenceActionChocoboRental[101]SQEX.Ebony.Framework.Sequence.Variable.SequenceConstInttimeoutValue_[102]Black.Sequence.Action.Actor.SequenceActionActorWaitLoadingactor2_ACTOR_CHOCOBO[103]open_[104]left_[105][108]float_A2A_DISTANCEjoint1_joint2_[110]Black.Sequence.Actor.SequenceVariableCalcActor2ActorargumentNum_ŠŁíń╗Âň╝Ć1  <=,5activateAndClose_dynamicTriggerOutputPin8_ŠŁíń╗Âň╝Ć2dynamicTriggerOutputPin7_expression1<=,5expression3>,150,<=,300expression4>,300[111]Black.Sequence.Control.SequenceActionControlIfCompareclose_toggle_closing_closed_[112]SQEX.Ebony.Framework.Sequence.Action.SequenceActionGateinterval_[113]SQEX.Ebony.Framework.Sequence.Event.SequenceEventCyclicUpdated[114]IS_RIDEintPin_chocoboPin_[115]Black.Sequence.Actor.AI.Vehicle.SequenceActionAIChocoboGetStatus[116]routeId___PLACE_HOLDER__CHOCOBO_BENCHactivateMode_ACTIVATE_MODE_NORMALSLOW[117]Black.Sequence.Action.Actor.AI.AIMode.SequenceActionExecAIModeRoute[118][119][120]bool_action_target_INTERACTION_REACTIONmask_[121]Black.Sequence.Actor.SequenceActionInteractionMaskACTOR_PC[122][123][124][125]enablePin_touch_disablePin_entityLableId_statusExScope_ScopeOutTriggerStatus_None[127]Black.Sequence.Action.Quest.SequenceActionQuestSetTriggerEntitytriggerPointPin_remoteEvent_unTouch_attackIn_attackOut_causedActorList_causedActor_triggerActor_waitEntity_eventType_ET_ENTITYeventTypeLast_canCatchSameTimeEvents_canCatchSameTimeEventsPerfectly_[128]Black.Sequence.Event.SequenceEventTriggerMultiStatus2root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.trigger_chocobo_camera[129][130][131][133][134][135][136]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.chocobo_rootentities_.spawn.entities_.chocobo_root[137]speedPin_speed_[138]Black.Sequence.Action.System.SequenceActionSetWorldTimerSpeedweatherTransitionTime_overrideType_NORMAL_EVENTweatherType_WEATHER_TYPE_AweatherKey_cleignesaveTarget_[139]Black.Sequence.Action.Weather.SequenceActionOverrideWeather2WEATHER_TYPE_C[140][141][144][145][146]Black.Sequence.ScreenEffect.SequenceActionColorFadeIn[147][152][153]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.noctis_camp_battleentities_.spawn.entities_.noctis_camp_battle[155][156]BSSPT_InRadiusBlkSCSRT_AutoRandom[157]character/es/es00/entry/es00_000_soldier.ebex[159]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.enemy_boxentities_.spawn.entities_.enemy_box[160]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.noctis_fishing_pointentities_.spawn.entities_.noctis_fishing_point[162]hour_unsigned intminute_setting_varSet_[164]Black.Sequence.Action.System.SequenceActionSetWorldTimerValue[165]dayTime_hourFloat_days_enabled_passingDay2_instantUpdate2_passingDay_instantUpdate_[166]Black.Sequence.Variable.SequenceVariableWorldTimer[167][171]BooldynamicPin1_SQEX.Ebony.Framework.Node.GraphVariableOutputPinrefOutPorts_labelScope_LS_Global_ScopeisCreateWhenNotFound_useTimer_timerType_TT_DECREMENTstopTimerValue_GAME_MODE_LOOPlabelType_TYPE_BOOLlabelTypeLast_[173]Black.Sequence.Variable.Labeled.SequenceVariableLabeledFixId[174]Black.Sequence.Action.System.SequenceActionExitGamecloseMenu_refOutPorts_.dynamicPin1_[175][177]FRAME_COUNT_START_RESET[179][180][181]playerBankNumber_SAVE_PLAYER_NOCTISlevel_level_pin_[182]Black.Sequence.Action.Actor.StatusGrow.SequenceActionActorAddLevelSAVE_PLAYER_GLADIOLUS[183]SAVE_PLAYER_IGNIS[184]SAVE_PLAYER_PROMPTO[185][186][187][188][189]refInPorts_.dynamicPin1_[191]SQEX.Ebony.Framework.Sequence.Action.SequenceActionSetBoolVariableDirect[195][196][197][198][200]opened_canceled_pressButtonDecided_pressButtonOther_dialogFixId_keyHelpFixId_dialogString_ GAME_MODE_LOOP -> TruedialogPos_outputID_inputID_dialogSeconds_disableCloseSeconds_messageSpecificationType_SPECIFICATION_STRINGforceDisp_enablePause_enableCancelClose_[205]Black.Sequence.Action.Menu.SequenceActionInfoWindow[206]speedRatePin_[210][211][212][213]WEATHER_TYPE_B[214][215]__PLACE_HOLDER__NOCTIS_BENCH[216]refActor_SET_GASOLINEfixidValue_intValue_envStateValue_ENV_STATE_NORMALtimeToUnfreeze_[219]Black.Sequence.Actor.AI.Vehicle.SequenceActionAIVehicleSetStatuslevel/world/worldshare/plan/stay/worldshare_stay_bonamik.ebex[222]WM_G_STAY_CAMP_START_JET_BENCH[224][226]WM_G_STAY_CAMP_END_JET_BENCH[227] ŃéźŃâíŃâęńŻťŠłÉšöĘŃâçŃâÉŃââŃé░ -> ON[229]one_answerString1_ŃâëŃâęŃéĄŃâľanswerString2_ŃâüŃâžŃé│ŃâťisPlayerControlOff_bSetPause_[231]Black.Sequence.Action.Menu.SequenceActionSelectMenuInOutSETUP_RUN_END_JET_BENCH_CAMERA[232][233][234][235]BENCH_DRIVE_CAMERA_START[236]BENCH_DRIVE_CAMERA_END[237]three_four_five_six_cancelled_reqNext_reqPreview_Ńâ¬ŃâŚŃâČŃéĄŃüÖŃéő[238][239][245]BENCH_CHOCOBO_CAMERA_END[248]BENCH_CHOCOBO_CAMERA_START[249][250][251][252][253][254][255]isEnableBGCollision_bgEnabledInterpolationTime_bgEnabledSearchGroundLength_[256]Black.Sequence.Actor.SequenceActionActorSetCollisionEnableACTOR_CHOCOBO_GLADIO[257]ACTOR_CHOCOBO_PROMPT[258]ACTOR_CHOCOBO_IGNIS[259]pinNum_swfEntryEntity_outValue_root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.swfentryentity01[260]Black.Sequence.Variable.SequenceVariableSwfEntryEntityrequestAddMenu_cancelRequestMenu_quitMenu_resumeMenu_[261]Black.Sequence.Action.Menu.SequenceActionMenuLogicblackLevelMode_BLM_EVENTeventModeLayer_BEML_BASEpcControlFlag_cameraFadeFlag_isEnableMotionBlur_isNeedToShowRegalia_preparedFadeInFrame_fadeOutFrame_fadeInFrame_isEnableSkip_eventSkipFadeOutFrame_eventSkipFadeInFrame_preparedPin_[262]Black.Sequence.Action.Level.LevelMode.SequenceActionSetLevelModeNew[263][264]WM_G_STAY_FIRST_TIMELINE_START[265][266]SM00_03SIV_10in3_[267]Black.Sequence.Event.Event.SequenceEventEventFinished[269]SQEX.Ebony.Framework.Sequence.Action.SequenceActionSync3[270]JET_BENCHMARK_FISHING_START[272]FishingSettingsrefIn1FishSpwanEntitiesentity_refIn2Š░┤ŔŹëEntityŃâ¬Ńé╣Ńâł/Ńé░ŃâźŃâ╝ŃâŚrefIn3Š░┤ÚŁóÚźśŃüĽEntityrefIn4ForceStopdelayTime_delayMaxTime_pinType_PT_ARBITRARYtriIn1SQEX.Ebony.Framework.Node.GraphTriggerInputPintriInPorts_FinishedtriOut1SQEX.Ebony.Framework.Node.GraphTriggerOutputPinInteractedToIcontriOut2FinishFadeoutFinishedtriOut3triOutPorts_trayname_PrefabTray1headerColorUserDefine_bodyColorUserDefine_root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.fishing_jet_benchmarkisOpen[275]SQEX.Ebony.Framework.Sequence.Tray.PrefabTrayroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.fishing.entities_.fishingfishspawnentity01entities_.fishing.entities_.fishingfishspawnentity01refInPorts_.refIn2entities_.fishing_jet_benchmark.entities_.plan_fishing.entities_.sequence_fishing.nodes_.[181]entities_.benchmark_demo.nodes_.[276].entity_[276]SQEX.Ebony.Framework.Sequence.Variable.SequenceConstantTransformEntityroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.fishing.entities_.water_height_pointentities_.fishing.entities_.water_height_pointrefInPorts_.refIn4entities_.benchmark_demo.nodes_.[277].pointNodeActorVarOutPin_[277][278][279][280][281][282]JET_BENCHMARK_FISHING_END[283][284][285][286]outStop_finishByDamage_finishByEncount_[287]Black.Sequence.Action.Actor.AI.AIMode.SequenceActionExecAIModeReset[288]category_MC_BASICisEnableAccel_isEnableBrake_isEnableHandle_isEnableGetOff_isEnableCamera_isEnableMusic_isEnableRoof_isEnableKlaxon_isEnableUturn_isEnableAutoSave_isEnableDriveMenu_isEnableWaitGetoff_isEnableCameraRoll_isEnableTakeOff_isEnableJump_[289]Black.Sequence.Action.Vehicle.SequenceActionSetVehicleControllerentitySearchLabelId_MENUENTRY_NAVIMAPswfEntryPackagePath_menu/navimap/script/MenuSwfEntry_NaviMap.ebex[290]Black.Sequence.Variable.SequenceVariableResidentSwfEntryEntityIsVisibleBuddySetVisibleEnemySetVisibleBuddySetVisibleGoalSetVisibleCarSetVisibleBuddyEachSetVisibleTimeSetVisibleOut[291][292]IS_VE_REGALIA_KEYHELP_MASK[293]BLM_RTE[294][295][296]bgmtype_mode_EVENT_BGM_TYPEidxFilePath_sound/resources/20001Music2/jp/bgm_altissia.maxfadeIn_fadeOut_isSameSkip_isSetFade_[297]Black.Sequence.Actor.SequenceActionSetBgmsetmode_MODE_NORMALisWeakPlay_isPlayRecalcSlot_[298]Black.Sequence.Actor.SequenceActionChangeBgmModeisPose_isKeepContinue_[299]Black.Sequence.Actor.SequenceActionStopBgm[300]sound/resources/20001Music2/jp/bgm_chocobo.max[301][302][303]sound/resources/20001Music2/jp/bgm_bat_nifuru.max[304][305][306]outPin_materialType_MATERIAL_TYPE_NUMsetType_SET_TYPE_SETsetValue_controlType_CONTROL_TYPE_NONE[308]Black.Sequence.Action.Actor.Material.SequenceActionActorSetBodyMaterialParameterattack_WEAPON_ATTACK_MAIN_DOWNequipmentId_WEAPON_WE01_SWORD_009checkNew_[309]Black.Sequence.Action.Actor.Accessory.SequenceActionActorEquipWeapon[310]Black.Sequence.Action.Actor.Accessory.SequenceActionActorFullOpenAbilityTree[311][314][315]wetControlType_FORCE_DRYgettingDryTime_gettingWetTime_perCharacterControl_[318]Black.Sequence.Action.Actor.SequenceActionActorWetnessControl[319]BENCH_AIRCRAFT_PREPARE[321]BENCH_AIRCRAFT_START[323]BENCH_AIRCRAFT_END[324]IntUI_P_COMM_JOB_COMMAND_MENU_DECIDE_COMMANDroot.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.benchmark_demo.nodes_.[325].refInPorts_.arg0_SQEX.Ebony.Framework.Sequence.Variable.Primitive.SequencePrimitiveInt[325]WEAPON_ATTACK_MAIN_UP[326][327]WEAPON_ATTACK_MAIN_RIGHTWEAPON_WE03_SPEAR_001[328]WEAPON_ATTACK_MAIN_LEFT[329][330][331][332][333]Black.Sequence.Action.Debug.SequenceActionDebugSetGameSpeed[334]actorIgnisPin_[335]actorListPin_actorNoctisPin_actorGladiolusPin_actorPromptoPin_actorGuestPin_isExcludingUCPC_[336]Black.Sequence.Action.Level.Party.SequenceActionGetPartyMembers[337][338]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.ignis_camp_battleentities_.spawn.entities_.ignis_camp_battle[339]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.prompto_camp_battleentities_.spawn.entities_.prompto_camp_battle[340]root.entities_.area_duscae_jet_bench.entities_.area_duscae_share_jet_bench.entities_.area_du_share_quest_jet_bench.entities_.spawn.entities_.gladio_camp_battleentities_.spawn.entities_.gladio_camp_battle[341]connectorNo_[0]SQEX.Ebony.Framework.Sequence.Connector.SequenceConnectorInSQEX.Ebony.Framework.Sequence.Connector.SequenceConnectorOut[2][8][10]jointId_scriptVisible_pointType_TYPE_POINTparamId_interactionParamId_interactionItemId_positionAttribute_warpAutoTurnMode_WATM_CENTER_OF_GRAVITYwarpPostCameraMode_WPCM_OVER_SHOULDERwarpPostCameraBlendMode_BLEND_CUBICwarpPostCameraBlendTime_warpPostCameraBlendSpeed_warpGroupId_magicThunderDamageRangeRadius_wallCoverRangeRadius_wallCoverDirection_RIGHTpoint_du_share_camp21Black.Entity.Node.PointNodeEntityisEnable_seedPointFixid_DEFAULTareaType_AREA_BATTLEgroupNo_battleAreaConditionFixId_BA_DEFAULTisAutoMakeBattleTeritory_triggerType_TYPE_SPHEREseedCollisionType_TYPE_CYLINDERradius_summonSuccessRate_summonIfritLot_summonIfritDirection_summonSivaLot_summonSivaDirection_summonRamuhLot_summonRamuhDirection_summonTitanLot_summonTitanDirection_summonLeviathanLot_summonLeviathanDirection_summonBahamutLot_summonBahamutDirection_elementFirePower_elementIcePower_elementThunderPower_elementEarthPower_elementWaterPower_elementLightPower_elementDarkPower_isAreaInfoRelease_battleareaentity01Black.Entity.Node.BattleAreaEntityentities_.spawn.entities_.gladiolusentities_.spawn.entities_.promptoentities_.spawn.entities_.ignisentities_.spawn.entities_.vehicle_gasentities_.spawn.entities_.noctis_fishing_hutspawnBlack.Entity.EntityGroupcapacity_battleAreaSeedPointFixid_noctisBlack.Entity.Node.SpawnPointNodeEntitygladioluspromptoignisvehicle_roadvehicle_gasnoctis_camp_pointchocoboenemychocobo_rootnoctis_fishing_hutnoctis_fishing_pointnoctis_camp_battleenemy_boxBlack.Entity.Node.SpawnBoxNodeEntitygladio_camp_battleprompto_camp_battleignis_camp_battleentities_.routeentity01.entities_.routepointentity10entities_.routeentity01.entities_.routepointentity20entities_.routeentity01.entities_.routepointentity30entities_.routeentity01.entities_.routepointentity31entities_.routeentity01.entities_.routepointentity40entities_.routeentity01.entities_.routepointentity41entities_.routeentity01.entities_.routepointentity42entities_.routeentity01.entities_.routepointentity50entities_.routeentity01.entities_.routepointentity51entities_.routeentity01.entities_.routepointentity60bLoop_routeMoveType_ROUTEMOVE_TYPE_ONCErouteentity01Black.Entity.RoutePoint.RouteEntityGROUNDdestinationPointRandomRange_movementOverride_moveSpeedOverride_arrivalMoveSpeedOverride_isEnableDynamicRandomDestination_destinationDistanceRatioMin_destinationDistanceRatioMax_routepointentity10Black.Entity.RoutePoint.RoutePointEntityroutepointentity20routepointentity30routepointentity31routepointentity40routepointentity41routepointentity42routepointentity50routepointentity51routepointentity60entities_.routeentity02.entities_.routepointentity01entities_.routeentity02.entities_.routepointentity02routeentity02routepointentity01routepointentity02touchTarget_UCPCcharacterSelectID_touchStatus_TOUCHtouchStatus2_UNTOUCHtouchStatus3_touchStatus4_height_depth_width_count_enableTrigger_checkInSameScene_scaleTriggerWithParent_isNoCheckFirst_isNoCheckAtUCOff_isSetEventModeAtTouch_touchKind_TK_ALLtrigger_chocobo_cameraBlack.Entity.Node.TriggerEntityQuest./area_du_share_quest_drive_jet_bench.ebex495a4cb7-d113-41fc-9e61-6164ecf1433barea_du_share_quest_drive_jet_benchSQEX.Ebony.Framework.Entity.EntityPackageReference./area_du_share_quest_chocobo_jet_bench.ebexf2b64393-bb64-420c-8ee5-90f008002f6farea_du_share_quest_chocobo_jet_benchmenuFixID_menu/jet_bench/script/MenuSwfEntry_JetBenchLogo.ebexswfentryentity01Black.Entity.Menu.SwfEntryEntity8.651421E-06,-132.9797,8.651422E-06,1../../level/levelresource/prefab/fishing/fishing_jet_benchmark.prefab21fea4dd-04a2-460f-a6cb-1338233cd4c0bArchiveDiffResource_umbraIsTarget_umbraIsOccluder_sequenceUpdateOrder_fishing_jet_benchmarkBlack.Entity.Prefab.Prefabfishing8.651421E-06,-132.3124,8.651422E-06,1water_height_pointspawnAreaType_AREA_ELLIPSEboxEllipseWidth_boxEllipseDepth_circleRadius_spawnLevel_AREA_LEVEL_2spawnMaxCount_fishingfishspawnentity01Black.Entity.Minigame.Fishing.FishingFishSpawnEntity./area_du_share_quest_aircraft_jet_bench.ebex615d9b55-49fc-491b-a59c-b067c0c36673area_du_share_quest_aircraft_jet_benchobjectspackage
Due to the structure I'm more then sure that it's something like Unreal Engine's 4 Blueprint scripting.

NODE 229:
isPlayerControlOff_

NODE 288:
Bunch of disabling for auto controlling

XMB2:
Code: [Select]
Code:
0x00  char[4]  header(XMB2)0x04  uint32  EOF0x08  uint32  padding?0x0C  uint32  sizeof(section1)0x10  uint32  padding?0x14  uint32  Section1
Section1:
uint32 - pointer
byte[4] - type
byte[4] - null?
 
Last edited:
Mod organizer got release some times ago- looks like C# WPF application- and in fact it is. 64 bit build- free to download for everyone, even if you don't own FFXV directly from Steam. Mod organizer is not protected and you can easily decompile full source code via ILSpy including archive tool with .EARC builder algorithm including debug strings:
Code: [Select]
Code:
   if (!File.Exists(temp_earc))   {    Console.WriteLine(temp_earc + " が出力されていない");    return -1;   }
UPDATE:
Nope, no archive building, everything it does is calling an exe in a thread to:
%REBLACK_ROOT%"), "luminous\\sdk\\tools\\Backend\\AssetConverterFramework\\BuildCoordinator\\bin\\tonberry.exe"


Code: [Select]
Code:
string fullName = Directory.GetParent(tonberry_FullPath).FullName;string text = additional_args + " --force --protect --encrypt --server " + ebex + "@";CommandProcess.Execute(tonberry_FullPath, text, out num, null, fullName, null, true);
 
Last edited:
I'm interested in figuring out the node based scripting for this game


I have replaced a cutscene for a test it

The replacement played but it hung though you could press the skip button then you can right into the game

I'm going to play around with the FFXV files and see what ticks
 
I just got an e-mail from "Haggy" with an amazing report- due to mistake SquareEnix uploaded debug build of FFXV with PDB !!!
Whole build with pseudocode is available to download on the bay, just search for "Final Fantasy XV Debug Symbols".

UPDATE:
Full debug information with even troubleshooting is there xD
modders.jpg



Important functions (changed argument names for clarity):
Code: [Select]
Code:
void ** SQEX::Luminous::AssetManager::LmArcFileSystem::OpenFile (LmArcFileSystem *this, LmAssetID *i_id, LmEAssetLoadPriority priority)File read:SQEX::Luminous::AssetManager::LmArcFileSystem::ReadFile -> determines if compressed or not by LmArcInterface::FindAssetInfo ->int64 SQEX::Luminous::AssetManager::LmArcFileSystem::ReadCompressed(LmArcFileSystem *this, FileSystemEntry *i_pFileEntry, ArcAssociation *i_pArchive /* this one is archive name in 80%*/, void *o_pAddress, unsigned int i_length, void **io_asyncHandle, LmEAssetLoadPriority priority, SQEX::Luminous::Core::IO::IFileDevice::FileAttribute attribute)
struct LmArcInterface::ArcAssociation (this is what we know so far despite being a copy-of AssetManager:LmAssetKey):

Code: [Select]
Code:
QWORD entry ; offset // It's in fact in code as LmArcCatalogShortEntryDWORD arcMountIndex BYTE UNK ; undefinedBYTE UNK ; undefinedBYTE UNK ; undefinedBYTE UNK ; undefined
LmArcCatalogShortEntry:
Code: [Select]
Code:
QWORD nameTypeHash    dq ?QWORD dataStartstd::string namestd::string pAbsolutePathDWORD originalSizeDWORD compressedSize USHORT flagsBYTE localizeTypeBYTE localizeLocaleSHORT encryptKeyBYTE UNKBYTE UNK

Visual Studio works as expected:
disasm.jpg
 
Last edited:
Just a quick hint- FFXV_s.exe base is dynamic, therefore patch:
Code: [Select]
Code:
ffxv_s.exe:0x1EE = 0x20
(replacing 0x60, 2nd bit from 1 to 0)
this will disable ASLR and base image on 0x140000000

any further notes I'll write here will consider 0x140000000 as the base instead of 0x00007FF*

If you're using IDA make sure to rebase the database last time by Edit>Segment>Rebase, for CE or Olly it doesn't matter, anyway I'll try to post relative addresses like ffxv_s.exe+0xFFFF like in CE style

Okay, about XML20 (exml):
Xmb2document:
Code: [Select]
Code:
00000000 identifier dd ?00000004 fileSize dd ?00000008 flags dw ?0000000A version dw ?0000000C rootElementOffset dd ? <-- relative to root
Getting elements (useful for offset shit):
Code: [Select]
Code:
SQEX::Luminous::Xml::Xmb2Element::GetElementByName(Xmb2Element el, char* name);
example:
000000016459061C SQEX::Luminous::Xml::Xmb2Element <elementStartOffset_: 0B44h, attributeStartOffset_: 0F58h, elementCount: 1, attribCount: 1h>

int64 i = 0;
var v7 = &xmb->elementStartOffset + 4* i + xmb->elementStartOffset + *((xmb->elementStartOffset)+&xmb->elementStartOffset)
Let's simplify it: we just jump to relative pointer of i * 4 of pointer address of XMB document + element start offset, like this:
Code: [Select]
Code:
uint64 pointer = XMBdocument + elementStartOffset + i*4;uint64 v7 = pointer + *(pointer);
Now the unknown pointer:
char* v8 = v7 + (*(v7 + 4)+4);
if v8 is not null, then treat as array of objects:

v10 = v9 + *(v9+5) + 5

UPDATE2:
The abstraction level of everything here is so high... struct with struct with struct, that's not assembler-level friendly.

UPDATE3:
initialize1.exml:
Code: [Select]
Code:
0: reference1: entities_.common_textures_list2: entities_.initialize1_list3: entities_.system_no_autoload4: entities_5: hasTransform_6: bool7: position_8: float49: rotation_10: scaling_11: float12: canManipulate_13: sourcePath_14: common/initialize1.ebex15: string16: name_17: dff7c814-9313-45a9-b8fd-5fc7ca670db718: isTemplateTraySourceReference_19: isShared_20: startupLoad_21: object22: initialize123: SQEX.Ebony.Framework.Entity.EntityPackage24:25: filePath_26: textures/ebony_required_textures.txt27: isAutoLoad_28: common_textures_list29: Black.Entity.Data.EarcResourceList30: common/initialize1_list.txt31: initialize1_list32: common/system_no_autoload.txt33: system_no_autoload34: objects35: package
UPDATE4:
Looks like it's raw data that is treated via struct. Currently it looks like the pointers and attribute+element count is stored in the middle of the file.
ai/commonai/commontpslibrary.exml ->
debug::63140000 = XMB2
debug::6314016C = XMBDocument

Looks like EXML contains many XMBDocuments
 
Last edited:
Python code for getting 'objects' element, also contains structure data:

Code: [Select]
Code:
import sysimport struct#CONFIGfilePath = sys.argv[1]#END OF CONFIGprint(filePath)#XmbDocumentf = open(filePath, 'rb')xmb2 = f.read(4)eof = struct.unpack('L', f.read(4))[0]flags = struct.unpack('H', f.read(2))[0]version = struct.unpack('H', f.read(2))[0]rootElement = struct.unpack('L', f.read(4))[0]f.seek(rootElement-4,1) #xmbDocument is casted now to XmbElement#XmbElementxmb2Element_elementStartOffset = struct.unpack('L', f.read(4))[0] #v6xmb2Element_attributeStartOffset = struct.unpack('L', f.read(4))[0]xmb2Element_elementCount = struct.unpack('H', f.read(2))[0]xmb2Element_attributeCount = struct.unpack('H', f.read(2))[0] >> 8f.seek(-12,1) #going back to XMB2Element rootAbsoluteXmb2ElementRoot = f.tell() # &v3->elementStartOffset_IndexPointer = 0 #v4SignedPointer = AbsoluteXmb2ElementRoot + 4 * IndexPointer + xmb2Element_elementStartOffsetf.seek(SignedPointer, 0)SignedPointerValue = struct.unpack('i', f.read(4))[0]v7 = AbsoluteXmb2ElementRoot + (4*IndexPointer) + xmb2Element_elementStartOffset + SignedPointerValue#(char *)(v7 + *(_DWORD *)(v7 + 4) + 4i64);v8Pointer = v7 + 4f.seek(v8Pointer, 0)v8PointerValue = struct.unpack('I', f.read(4))[0]_ = v7 + v8PointerValue + 4f.seek(_,0)#v9 = &v8[*(_DWORD *)v8];v8 = struct.unpack('i', f.read(4))[0]f.seek(-4,1)v8Pointer = f.tell()v9 = v8Pointer + v8f.seek(v9, 0)v9Pt = struct.unpack('B', f.read(1))[0]if v9Pt == 1: f.seek(v9+5, 0) v10Pt = struct.unpack('I', f.read(4))[0] v10 = v9+v10Pt+5 f.seek(v10,0) objectName = f.read().split('\0')[0] print('Index: ' + str(IndexPointer) + ': ' + objectName)
 
Last edited:
Can someone reup or PM me the "73k lines of all engine scripts/paths/etc" that Maki uploaded? The dropbox link is dead now. Thanks in advance.
 
Last edited:
I have updates for FFXV reverse.
I recently created a GitHub repo (https://github.com/xeeynamo/ffxv) where some source-code and stuff can be found.

Following Maki's research, I am now able to deserialize and serialize EXML files from Episode Duscae and Platinum Demo. Those files contains information like how displaying the menu, how to set some specific values inside specific structures, create quests, expand the worldmap and edit almost every aspect of the game.

These EXML files are called "Package", where each package contains those information and let the engine knows what files to load and display. A package has a very complex structure of information, with nodes inside nodes and types that represents the actual game data by reflection. I have a PackageService which parse those XML packages and map them to known types, so creating editors from that should be straight forward.

My plan is to be able to restore some cut content from both Episode Duscae and Platinum demo, then be able to use XMB2 format and import the assets to PC version. Any help to the project, of course, is appreciated :)
 
I have updates for FFXV reverse.
I recently created a GitHub repo (https://github.com/xeeynamo/ffxv) where some source-code and stuff can be found.
Nice, hope you get XMB2 sorted out. Seems unlikely we'll get any official tools now after all the recent cancellations.
Also those hidden links on your site are 404. Don't have a modded PS4, but I though it'd be nice to see what was possible while waiting for PC support.
 
Status
Not open for further replies.
Back
Top