Luigi's Mansion: Dark Moon:Notes

From LM Hacking
Jump to navigation Jump to search


The VG Resource[edit | edit source]

zlib Compression and CGFX[edit | edit source]

Source: https://www.vg-resource.com/thread-27017.html

-TGE
Noticed the 0x78 0x9C patterns, which means the file is zlib compressed! Use offzip to decompress the file eg:

offzip.exe -a -1 "C:\Users\TGE\Downloads\ghost simple\ghosthider.data" "C:\Users\TGE\Downloads\ghost simple" 0

It doesn't appear to be using CGFX but I have a gut feeling it's a modified version of the propreitary model format. (looks like it's the case!)

-SpaceCats
I remember looking at the files .data files a while back and found the files were zlib compressed (I remember telling ItsEasyActually about it, dont think he did much with the info), but be aware, the bundle.data files can be grab bags, sometimes they are compressed sometimes they aren't (some of the level models are not compressed for example). Edit: I forgot to mention, not all .data files are zlib compressed, most notably any of the tweaker files (the tweaker being a debugger iirc), the credits, and any global.data files, and another note, some of the files seem eerily similar to mario strikers nis format, they are the files in the properly named nis folder and are slightly modified versions of the Strikers nis files. A lot of LM2 seems a bit similar to strikers, mostly file layout, format, and debugging (both use tweakers, lm2's is probably just compressed) wise. (Really sorry about the edits, I keep forgetting to mention things that are probably really important)

-RatchetMario

Noticed the 0x78 0x9C patterns, which means the file is zlib compressed!
Use offzip to decompress the file
eg:
Code:
offzip.exe -a -1 "C:\Users\TGE\Downloads\ghost simple\ghosthider.data" "C:\Users\TGE\Downloads\ghost simple" 0

It doesn't appear to be using CGFX but I have a gut feeling it's a modified version of the propreitary model format. (looks like it's the case!)

Thanks! So, its give me the 00000000.dat like that.

Now what I should to do next? I suppose?

-SpaceCats
At this point nothing. It spits out a model format that hasn't been figured out yet.

-TGE
To me it looks like a more primitive version of CGFX, with all the chunk tags stripped.
Surely people that are familiar with the format would be able to figure it out.

-SpaceCats

To me it looks like a more primitive version of CGFX, with all the chunk tags stripped.
Surely people that are familiar with the format would be able to figure it out.


That might explain the dict files, though im not really sure. If you look here you'll see that CGFX files uses dictionaries for finding data offsets as well as other information, meaning if this is a primitive cgfx (and considering LM2 started development in December 2010 its likely) the dcit files might be something to look into.

TCRF[edit | edit source]

/art/tweaker/[edit | edit source]

Lots of development-related text can be found in the /art/tweaker/ folder. At least some of it appears to be related to the development tool they use.

english.data[edit | edit source]

Global time scaling factor for everything in the game.   Tune this to a lower number to help debug events that take place too quickly for you to see what is happening.
If set to true, then all tasks will be run with a fixed fDeltaT value.  (normally fDeltaT is calculated based on the actual time difference since the last update)
The fixed time step value used if "Force Fixed Time Step" is tweaked to true.
When this tweak is set to true, we always do bounding box tests with no false positives. The tests become more expensive, but the results are more accurate, so there may or may not be a payoff.  It is false by default, try setting it to true to see if you have a false positive problem.
Intentionally dereference a bad pointer to crash the game.  May be useful to test things like callstack dumpers.
Controls how fast the camera spins around the target.   
Controls how fast the target moves.  This is the minumum value, but the target moves faster when the camera is further out.
Controls how fast the target height moves.  This is the also effected by sfPositionControlSpeedScale
This controls how much faster the target moves when the camera is further out.
Enable this to render a crosshair for the debug cam target.
Set the size of the debug cam crosshair
The speed at which the camera target moves towards the selected target, when you change targets
Disables position update so that the remote-link with 3ds max works properly.
Enable this to only allow the user to move the target down when they are above the ground height.
Enable this to avoid accidental presses of the Target Switching button.
Size of the rendered revolution pointer
How much space there is between the text and the edge of the black rectangle that is drawn behind it.
Screen Print Demo showing various sizes of text, at the top and bottom of the screen.
Prints the normalized device coordinates above the world origin
Screen Print Demo showing a bunch of screen prints around the origin of 3D space, with different justifications and 2D offsets.
3D screen-print demo showing coordinate labels over a grid of points
Overrides the rendering of wireframes as defined by ShapeRenderStyle
Overrides the rendering of wireframes as defined by ShapeRenderStyle
If set to false, the profiler will filter out any nodes that are less than one percent of the parent.  If true, then you see every node regardless of how insignificant the time is. 
Tweak this and then exit the tweaker to view the in-game profiler.
Manual mode -- profile reports timings between successive presses of a button on the controller.
Dumps out the profiler data to profile.txt
Turn this to true then exit the tweaker to display a profiler that shows how many particles are active from each effect
The size of screen-print font used if RL::Font::Size_Default is passed in to the screen print function.
Prints the current system date and time to the debug window using the DC_MISC print channel.
Prints the current system date and time to the debug window using the DC_MISC print channel.
Toggles whether or not EmissionManager errors are shows on the screen.
Enable this to turn on debug-prints over each effect that show the name of the effect.
Enable this to turn on debug-prints over each effect that show the hex addresses of the EmissionController
Tweak this to immediately kill all effects that are currently playing, including all the particles that have already been emitted.
Displays the number of particles that have been updated in the last EmissionManager::Update. (toggle and exit tweaker to graph)
Displays the number of particles that have been rendered in the last EmissionManager::Render. (toggle and exit tweaker to graph)
Displays the number of particle systems that were updated in the last EmissionManager::Update. (toggle and exit tweaker to graph)
Displays the number of particle systems that were rendered in the last EmissionManager::Render. (toggle and exit tweaker to graph)
Render the coordinate system of the bone that the effect is attached to. Artists may find this useful when writing effects script commands such as "DirectAlongLocalXAxis", which require some knowledge of the coordinate system of the bone that they are attached to.
Render the coordinate system of the particle emitter, where the positive z axis is the "forward" direction (the direction that particles are generally shot in if they have velocity).  
Re-triggers the last "Quick Tweak" effect that you triggered through the effects tool.  
If tweaked to true, depth testing is disabled for all particles.
Tweakers to switch the language on the fly. Note that this does not swap the font.
Contact Relaxation is a mechanism for correcting the error in constraints, e.g., pushing apart bodies that are interpenetrating, or pulling bodies back together if connected by a joint that has drifted apart.
Draw the contacts normals of all physics contacts as red lines
Draw all physics contacts as red spheres
When Physics/Draw Geoms is enabled, turning this on will draw the KD tree of the trimesh.
Turn this to True to just draw the box around the debug cam target. False will draw all of the leaf node boxes in the KD Tree.
TWEAK_FLOAT( g_fCheckSupportRadius, 0.2f, "Physics/Character", 0.0f, 10.0f, 0.01f) overriding radius for Casper, do not integrate:
Number of sync requests the client processes with the server. The larger this number, the more accurate our synced time is
If enabled, a printout will appear on the screen when the path agent hits a path event.
Turn on debug-draw rendering of all GenericPath's in the world (can be slow)
Displays the number of iterations in the SmallDistanceStep algorithm.
Enable/Disable rendering of all paths.
Storyboard Tweakers 
Misc Tweakers 
TWEAK_BOOL( sAlwaysPerformFirstSave, false, "NCL_Tweakers/FE/Flow" )
not scaled
For PC testing
These are referenced externally, so don't change to release macros.
How fast the bat will drop, the duration is set by the animation length static RELEASE_FLOAT( s_fDropSpeed, 5.0f, "NCL_Tweakers/Pests/Bats", 0.3f, 20.0f, 0.1f ) How far away from the nest the Luigi vacuum will trigger a response from the bats
An above ground beetle will fly towards you when you're within this distance
these match Luigi's (but they could not)
The distance at which the crow locks their attack direction, giving Luigi a chance to dodge
debugging only
*****************************************************************************
Left
Center
Right
TWEAK_FLOAT( gAimLHandMaxDist, 0.28f, LAST_REGISTRY_FOLDER,  0.0f, 0.5f, 0.01f ) TWEAK_FLOAT( gAimLHandMinDist, 0.0f, LAST_REGISTRY_FOLDER,  0.0f, 0.5f, 0.01f ) TWEAK_FLOAT( gAimLHandBuffer, 0.006f, LAST_REGISTRY_FOLDER,  0.0f, 0.1f, 0.002f )
******************************************************************************
TWEAK_FLOAT ( sfTurnThreshold, 6.0f, "NCL_Tweakers/Movement", 0.0f, 180.0f, 1.0f )
This is used to determine whether to use idle turn or forward walk when going from  strafe to walk.  This is the max angle difference between facing and movement   beyond which the idle turn is used.
TWEAK_INT( gHeadTrackNumGlances, 3, LAST_REGISTRY_FOLDER, 1, 5, 1 )
TWEAK_FLOAT( sHeadTrackSwitchWalkTime, 0.3f,LAST_REGISTRY_FOLDER, 0.0f, 5.0f, 0.01f )
debugging only
How long to wait before allowing Luigi to be scared again after an initial scare.
How long to wait after a ghost appears for Luigi to be scared. This should be small.
#ifdef USE_TWEAKER
TWEAK_FLOAT ( sfSuccessAPullHealth, 2.0f, LAST_REGISTRY_FOLDER, 0.0f, 10.0f, 0.1f )
TWEAK_FLOAT ( gMinDistanceFromCreeper, 0.3f, LAST_REGISTRY_FOLDER, 0.0f, 10.0f, 0.1f ) TWEAK_FLOAT ( sCreeperTimescaleLimit, 0.8f, LAST_REGISTRY_FOLDER, 0.0f, 1.0f, 0.05f )
static REGISTRY_FLOAT ( sDragDamagePercentPerSecond, 1.0f, LAST_REGISTRY_FOLDER, 0.0f, 100.0f, 0.1f ) static REGISTRY_FLOAT ( sLuigiDragDamageFrame, 8.0f, LAST_REGISTRY_FOLDER, 0.0f, 30.0f, 0.5f )
REGISTRY_FLOAT( g_fMinWaitToSpitDelay, 4.0f, "NCL_TWEAKERS/Ghost/Gobber", 0.0f, 10.0f, 0.1f) REGISTRY_FLOAT( g_fMaxWaitToSpitDelay, 6.0f, "NCL_TWEAKERS/Ghost/Gobber", 0.0f, 20.0f, 0.1f)
The Speed the this pest moves during the shooting gallery attack
TWEAK_BOOL(sbDrawTargetPos, true, "Gameplay/Movement/Orbit") TWEAK_FLOAT(sMinDeltaAngle, 10.0f, "Gameplay/Movement/Orbit", 0.0f, 100.0f, 1.0f)
REGISTRY_FLOAT( sfPercentLongNozzleAnims, 20.f, "NCL_TWEAKERS/Ghost/Capture", 0.f, 100.f, 1.f )
TWEAK_FLOAT( sMaxCaptureVelocity, 48.0f, LAST_REGISTRY_FOLDER, 0.01f, 50.0f, 0.1f )
debugging only
Use ShouldShowGhostHealth() to check this value.
TWEAK_FLOAT ( sSwimStateMinHeightOffset, 0.0f, LAST_REGISTRY_FOLDER, -2.0f, 10.0f, 0.1f )
TWEAK_FLOAT ( sSwimTimeRange, 0.5f, "NCL_Tweakers/Ghost/Struggle", 0.0f, 100.0f, 0.05f ) TWEAK_FLOAT ( sSwimTimeMin, 0.3f, "NCL_Tweakers/Ghost/Struggle", 0.0f, 100.0f, 0.05f )
TWEAK_FLOAT( sAngerDetachFrames, 45.0f, LAST_REGISTRY_FOLDER, 0.0f, 200.0f, 1.0f )
TWEAK_FLOAT( sAngerSpeedScale, 2.0f, LAST_REGISTRY_FOLDER, 0.1f, 10.0f, 0.1f ) TWEAK_FLOAT( sAngerSizeScale, 1.0f, LAST_REGISTRY_FOLDER, 0.1f, 10.0f, 0.1f )
TWEAK_FLOAT( sBullyDragSpeed, 6.0f, LAST_REGISTRY_FOLDER, 0.1f, 10.0f, 0.1f )
Local Defines, Constants, Macros  
Local Defines, Constants, Macros  
Local Defines, Constants, Macros  
Local Defines, Constants, Macros  
debugging only
these MUST be registry values
debugging only
debugging only
debugging only
Implementation of class ToadHostageWalkThroughDoorState  
Tweakers 
TWEAK_FLOAT ( sfDeadZoneThreshold, 0.3f, "NCL_Tweakers/Movement", 0.0f, 1.0f, 0.02f )
Luigi
debugging only
... these must be registry values
debugging only
... these must be registry values
debugging only
Local Defines, Constants, Macros  
Tweakers 
tweaker for screen-relative aiming
Tweaks  Verbose Levels: 0: No prints 1: State changes and setup 2: + Trigger info 3: + GOMessage info
Tweaks 
Tweakers 
TWEAK_BOOL( gWarbleCoins, false, "Coins" );  TWEAK_BOOL( sDebugDraw, false, "Gameplay/Loot/Coin" );
TWEAK_FLOAT( sCoinThickness, 0.06f, LAST_REGISTRY_FOLDER, 0.0f, 100.0f, 0.01f ); TWEAK_FLOAT( sCoinRadius, 0.15f, LAST_REGISTRY_FOLDER, 0.0f, 100.0f, 0.01f );
Level 0 Uscroll
Level 1 Uscroll
Level 2 Uscroll
Level 3 Uscroll
Level 4 Uscroll
Level 0 Vscroll
Level 1 Vscroll
Level 2 Vscroll
Level 3 Vscroll
Level 4 Vscroll
static REGISTRY_FLOAT ( sWedgeStartWidth, 1.2f, "NCL_Tweakers/Flashlight", 0.1f, 10.0f, 0.1f );
If you change this value, change sLuigiFlashlight_Offset the negative of you delta change so that the vertex light on Luigi remains in the same place.
Light colours
Luigi lighting colours
Times in frames (fixed at 30 fps)
This is for a secondary steering rate calculation that is a function of the current velocity
TWEAK_FLOAT( sSpeedMult, 0.15f, "NCL_Tweakers/Viewer", 0.0f, 5.0f, 0.01f );
debugging only
online version of tweakers?
HACK: hwestlund, January 20, 2012.  Testing
Keep this a registry bool - it's modified by several external files.
Values should match the PC values specified in Materials/PC/Debug.fxh.
Tweaker light scales for various light type and brightness settings.
Portal zoom
Macro to duplicate a registry entry using a global bool var - The global bool namespace - A unique identifier only used internally (must be unique to other references of the same global variable) name - The string name as it will appear in the tweaker folder - The string path to the registry entry.
Create these tweakers under both Rendering/Statistics and Profiling menus.
Reference external registry entries related to profiling for easy access.
Generic timers
#define BASIC_MATH_COUNTS
If you change sfTargetFacingWallAngleDot, please also change COGOnionModel.cpp's sfTargetFacingDoorAngleDot
TWEAK_BOOL(sSubdivideUpdates, false, "Physics/Room")
Build Type  BUILD_DEFAULT: default build BUILD_E3: uses E3 2012 flow 
TWEAK_FLOAT(s_fDelayMoneybagSpawn,2.0f,"Network/TerrorTower/EndPortal",0.1f,10.0f,0.1f) TWEAK_FLOAT(s_fOpenPortalCounterTime,2.0f,"Network/TerrorTower/EndPortal",0.1f,10.0f,0.1f)
This is the one hard coded case that's used for profiling - apologies to Gary S.
TODO: tweak and test gfCheckSupportPosZOffset
TWEAK_FLOAT( gFixedUpdateRate, 50.f, "Engine/General", 0.f, 120.f, 10.f  )
static const float guideXOffset = 40.f;
Set to true to debug send and receive commands
Set to true to debug send and receive commands
================================================================================================== Tweakers ==================================================================================================

Other .data files[edit | edit source]

There are also many other files in that folder with different language names (french.data, german.data, etc). They're different from english.data, but all match each other. This text appears to be used for a debug function.

Ironically, they're all in English.

dut Time Scale
dut Force Fixed Time Step
dut Fixed Time Step
dut Use Perfect Frustum Tests
dut Crash Application
dut Angle Control Speed Scale
dut Position Control Speed Scale
dut Height Speed Ratio
dut Speed Dependency On Zoom
dut Render Target
dut Target Size
dut Target Jump Speed
dut Enable Remote Camera Control
dut Lock To Ground Height
dut Disable Target Switching
dut Revolution Pointer Size
dut Text Rectangle Margin
dut Test Screen Prints
dut Show Normalize Device Coordinates
dut Test 3DScreen Prints
dut Grid Of Prints
dut Force Wireframe Rendering
dut Wire
dut Show Insignificant Nodes
dut Display Profiler
dut Manual Profiler Start And Stop
dut Write Profiler Info
dut Display Particle Profiler
dut Default Font Size
dut Print System Date and Time
dut Print System Time
dut Print Errors To Screen
dut Print Names Of Effects
dut Print Addresses Of Emission Controllers
dut Kill All Effects
dut twk Num Particles Updated
dut twk Num Particles Rendered
dut twk Num Particle Systems Updated
dut twk Num Particle Systems Rendered
dut Render Bone Coord Sys
dut Render Emitter Coord Sys
dut Request Quick Effect
dut Always In Front
dut Swap To Language
dut Use Contact Relaxation
dut Draw Contact Normals
dut Draw Contacts
dut DrawKDTree
dut Only Draw Box Around Debug Cam Target
dut Check Support Radius
dut Num Sync Requests To Process
dut Show Path Events
dut Render All Paths
dut small Distance Step Iteration Counter
dut Path Rendering Enabled
dut Story Board Scroll Width
dut Ignore Music Request
dut Start Screen PressADelay
dut Anark Zoom Slider 0Y
dut Scrub Time
dut Override Team Cash This Floor
dut Bat Hearing Distance
dut Above Ground Attack Distance
dut Cannon Damage Period
dut Fix Attack Dist
dut Allow Chase State Change
dut Do Aiming
dut AimIKTop Left X
dut AimIKTop Ctr X
dut AimIKTop Right X
dut AimLHand Max Scale
dut Fade Luigi
dut Stop Speed
dut Strafe Backward Angle
dut Head Track Num Glances
dut Head Track Switch Walk Time
dut Bomb Debug
dut Ghost Appearance Scare Spam Delay
dut Ghost Appearance Scare Delay
dut Draw Luigi State
dut APull Success Allowance
dut Creeper Input Level
dut Luigi Drag Damage
dut Min Spit Distance
dut Shooting Gallery Speed
dut Height Scale
dut Disable Long Captures
dut Capture Orient Percent
dut Debug Panic Path
dut Show Ghost Health
dut Swim State Max Height Offset
dut Swim Time Multiplayer Reduction
dut Bully Charge Effect Frame
dut Bully Escape Distance
dut Bully Angry Speed
dut Dangler Shadow Height Offset
dut Snapper Shadow Height Offset
dut Ranged Attack To Distance Threshold
dut Chomp Quick Start Anim Frame
dut Enable Stomp Damage
dut Statue Upskirt Start Field Of View
dut Show Statue Info
dut Statue Target Turn
dut Statue Trip Speed
dut Go Through Portal Target Radius
dut sShow Unset Luigi Prop Anims
dut Full Zone Threshold
dut Command To Button Mapping
dut Statue Draw Combat Arena
dut Skip Statue Sequences
dut Enable Statue Feet
dut Repeat Statue Defeated Right
dut Show Debris Position
dut Draw Floor Effect Position
dut Transform Controller Debug Draw
dut Aim Screen Relative
dut Game Script Verbose Level
dut Prop Debug Draw
dut Unhaunting Time Frames
dut Warble Min Rotate Rate
dut Pivot Offset Exaggerator
dut Hurricane Lev 0UScroll Rate
dut Hurricane Lev 1UScroll Rate
dut Hurricane Lev 2UScroll Rate
dut Hurricane Lev 3UScroll Rate
dut Hurricane Lev 4UScroll Rate
dut Hurricane Lev 0VScroll Rate
dut Hurricane Lev 1VScroll Rate
dut Hurricane Lev 2VScroll Rate
dut Hurricane Lev 3VScroll Rate
dut Hurricane Lev 4VScroll Rate
dut Wedge Min Height Above Nozzle
dut Flashlight Offset
dut Flashlight_Red
dut Luigi Flashlight_Red
dut 6.0f)
dut Vortex Steering Rate Max Velocity
dut Respawn Timeout
dut Allow Ricochet
dut Sliding Window Range_Online
dut proximity Dist Inner
dut Disable Transparency
dut pixel Red Scale
dut Ambient Light Scale
dut Portal Zoom Override
dut var##_##namespace
dut Use Ave Time
dut Render Particles
dut Enable Generic Timers
dut Display Counts
dut Target Facing Wall Angle Dot
dut Subdivide Updates
dut Build Type
dut Do Gift Curse Floor Counter Time
dut terror Tower Game Type Names )
dut Check Support PosZOffset
dut Pause Simulation
dut guideXOffset
dut Nex Helper Comm Verbose
dut Uds Helper Comm Verbose
dut Check Uds State Period