diff --git a/_ark/ps4/dx/macros/dx_overshell_macros.dta b/_ark/ps4/dx/macros/dx_overshell_macros.dta index 487987d..d110ca8 100644 --- a/_ark/ps4/dx/macros/dx_overshell_macros.dta +++ b/_ark/ps4/dx/macros/dx_overshell_macros.dta @@ -36,6 +36,40 @@ } } ) +#define SET_HIGHWAY_TEX_VAR +( + {set $enabledtex + {cond + ({&& {! {dx_file_exists "settings/visuals/highwaytex.dta"}} {dx_file_exists "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"}} + none + ) + ({dx_file_exists "settings/visuals/highwaytex_wood.dta"} + wood + ) + ({dx_file_exists "settings/visuals/highwaytex_black.dta"} + black + ) + ({dx_file_exists "settings/visuals/highwaytex_rb3_guitar.dta"} + rb3_guitar + ) + ({dx_file_exists "settings/visuals/highwaytex_rb3_bass.dta"} + rb3_bass + ) + ({dx_file_exists "settings/visuals/highwaytex_rb3_drums.dta"} + rb3_drums + ) + ({dx_file_exists "settings/visuals/highwaytex_rb3_keys.dta"} + rb3_keys + ) + ({dx_file_exists "settings/visuals/highwaytex_fnfestival.dta"} + fnfestival + ) + ({dx_file_exists "settings/visuals/highwaytex_fnfestival_beta.dta"} + fnfestival_beta + ) + } + } +) #define MOVE_NOFLAMES_FILES_ON ( {dx_file_rename "ps4/track/smasher/gem_smasher_unlit1.entity_ps4" "ps4/track/smasher/gem_smasher_unlit.entity_ps4"} diff --git a/_ark/ps4/dx/overshell/dx_states.dta b/_ark/ps4/dx/overshell/dx_states.dta index 2b1f286..2f1a090 100644 --- a/_ark/ps4/dx/overshell/dx_states.dta +++ b/_ark/ps4/dx/overshell/dx_states.dta @@ -629,16 +629,30 @@ ;Track Settings #define RB4DXTRK_DATA ( - {$this setup_confirm_actions a - ( - {if_else $noflames "Flames: OFF" "Flames: ON"} - {if_else $noshine "Track Shine: OFF" "Track Shine: ON"} - {if_else $gemshine "Gem Shine: OFF" "Gem Shine: ON"} - {if_else $noaa "Track Antialiasing: OFF" "Track Antialiasing: ON"} - {if_else $micwarn "Hide Mic Warning: ON" "Hide Mic Warning: OFF"} - {if_else $trackangle "Custom Track Angle: ON" "Custom Track Angle: OFF"} - "Track Curvature" - ) + {if_else {$this in_song} + {$this setup_confirm_actions a + ( + {if_else $noflames "Flames: OFF" "Flames: ON"} + {if_else $noshine "Highway Shine: OFF" "Highway Shine: ON"} + {if_else $gemshine "Gem Shine: OFF" "Gem Shine: ON"} + {if_else $noaa "Track Antialiasing: OFF" "Track Antialiasing: ON"} + {if_else $micwarn "Hide Mic Warning: ON" "Hide Mic Warning: OFF"} + {if_else $trackangle "Custom Track Angle: ON" "Custom Track Angle: OFF"} + "Track Curvature" + ) + } + {$this setup_confirm_actions a + ( + "Highway Texture" + {if_else $noflames "Flames: OFF" "Flames: ON"} + {if_else $noshine "Highway Shine: OFF" "Highway Shine: ON"} + {if_else $gemshine "Gem Shine: OFF" "Gem Shine: ON"} + {if_else $noaa "Track Antialiasing: OFF" "Track Antialiasing: ON"} + {if_else $micwarn "Hide Mic Warning: ON" "Hide Mic Warning: OFF"} + {if_else $trackangle "Custom Track Angle: ON" "Custom Track Angle: OFF"} + "Track Curvature" + ) + } } ) (kState_RB4DXTrkSettings @@ -687,7 +701,7 @@ {$this show_state kState_RB4DXTrackAngleSelector} {$this trigger_select_effects} ) - (("Track Shine: ON" "Track Shine: OFF") + (("Highway Shine: ON" "Highway Shine: OFF") {set $noshine {! $noshine}} {if_else $noshine {do @@ -777,6 +791,10 @@ {$this show_state kState_RB4DXTrackCurve} {$this trigger_select_effects} ) + ("Highway Texture" + {$this show_state kState_RB4DXHWTexSelector} + {$this trigger_select_effects} + ) } ) (on_cancel @@ -786,6 +804,498 @@ ) ) +;Highway Texture Selector (TODO: automatically create this state) +(kState_RB4DXHWTexSelector + (view {$this get_auto_list_view}) + (enter + {$this setup_confirm_actions a + ( + "[Default]" + "Black" + "RB3 Guitar" + "RB3 Bass" + "RB3 Drums" + "RB3 Keys" + "Fortnite Festival" + "Fortnite Festival (Beta)" + "Wood" + ) + } + {set $customhw {|| {dx_file_exists "settings/visuals/highwaytex.dta"} {dx_file_exists "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"}}} + SET_HIGHWAY_TEX_VAR + ) + (SELECT_MSG + {local $list_data {($objId UIListCom) get_data_in_column token}} + {switch $list_data ;This is very jank, pls fix + ("[Default]" + {if $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + ) + (wood + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_rb3_keys.dta"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util.bmp_ps4" "ps4/track/shared/track_pattern_center_util1.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util.bmp_ps4" "ps4/track/shared/track_pattern_side_util1.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + ) + } + {dx_file_delete "settings/visuals/highwaytex.dta"} + } + ) + ("Wood" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_wood.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + ) + } + {do + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("Black" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_black.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("RB3 Guitar" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_rb3_guitar.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("RB3 Bass" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_rb3_bass.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("RB3 Drums" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_rb3_drums.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("RB3 Keys" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_rb3_keys.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("Fortnite Festival" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_fnfestival.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival_beta + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival_beta.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + ("Fortnite Festival (Beta)" + {dx_write_null_file "settings/visuals/highwaytex.dta"} + {dx_write_null_file "settings/visuals/highwaytex_fnfestival_beta.dta"} + {if_else $customhw + {switch $enabledtex + (none + {dx_file_delete "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (wood + {dx_file_delete "settings/visuals/highwaytex_wood.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (black + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_black.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_guitar + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_guitar.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_bass + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_bass.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_drums + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_drums.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (rb3_keys + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_rb3_keys.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + (fnfestival + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4"} + {dx_file_delete "settings/visuals/highwaytex_fnfestival.dta"} + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + ) + } + {do + {dx_file_rename "ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4" "ps4/track/shared/gem_track_texture/gem_track_surface.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_center_util1.bmp_ps4" "ps4/track/shared/track_pattern_center_util.bmp_ps4"} + {dx_file_rename "ps4/track/shared/track_pattern_side_util1.bmp_ps4" "ps4/track/shared/track_pattern_side_util.bmp_ps4"} + } + } + ) + } + {$this show_state kState_RB4DXTrkSettings} + {$this trigger_select_effects} + ) + (on_cancel + {$this show_state kState_RB4DXTrkSettings} + {$this trigger_cancel_effects} + ) +) + ;Track Angle Type Selector (kState_RB4DXTrackAngleSelector (view confirm_action) diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4 new file mode 100644 index 0000000..ba76982 Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_black.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4 new file mode 100644 index 0000000..c092fd4 Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4 new file mode 100644 index 0000000..b200a8f Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_fnfestival_beta.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4 new file mode 100644 index 0000000..5120e20 Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_bass.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4 new file mode 100644 index 0000000..96fd507 Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_drums.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4 new file mode 100644 index 0000000..69b5a7d Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_guitar.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4 b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4 new file mode 100644 index 0000000..5b0b198 Binary files /dev/null and b/_ark/ps4/track/shared/gem_track_texture/gem_track_surface_rb3_keys.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/track_pattern_center_util1.bmp_ps4 b/_ark/ps4/track/shared/track_pattern_center_util1.bmp_ps4 new file mode 100644 index 0000000..ba76982 Binary files /dev/null and b/_ark/ps4/track/shared/track_pattern_center_util1.bmp_ps4 differ diff --git a/_ark/ps4/track/shared/track_pattern_side_util1.bmp_ps4 b/_ark/ps4/track/shared/track_pattern_side_util1.bmp_ps4 new file mode 100644 index 0000000..ba76982 Binary files /dev/null and b/_ark/ps4/track/shared/track_pattern_side_util1.bmp_ps4 differ diff --git a/dependencies/ForgeTool/DtxCS.dll b/dependencies/ForgeTool/DtxCS.dll index e60515a..0fd476b 100644 Binary files a/dependencies/ForgeTool/DtxCS.dll and b/dependencies/ForgeTool/DtxCS.dll differ diff --git a/dependencies/ForgeTool/DtxCS.xml b/dependencies/ForgeTool/DtxCS.xml new file mode 100644 index 0000000..0fc2b2b --- /dev/null +++ b/dependencies/ForgeTool/DtxCS.xml @@ -0,0 +1,600 @@ + + + + DtxCS + + + + + Builtin functions, in case I end up writing an interpreter. + + + + + Represents an array of DataNodes. + + + + + Returns DataType.ARRAY + + + + + The children of this array. + + + + + Default constructor for a Data Array. + + + + + Add a node to this Array. + + Node to add + The added node. + + + + Get or set the child of this array at the given index. + + + + + + + Find the array in this array's children at the given index. + + + + + + + Find the integer in this array's children at the given index. + + + + + + + Find the float in this array's children at the given index. + + + + + + + Find the string in this array's children at the given index. + + + + + + + Find the symbol in this array's children at the given index. + + + + + + + Find the variable in this array's children at the given index. + + + + + + + Finds any node at the given index and returns it as a string. + + + + + + + Find the first array in this array's children whose name matches. + If none is found, returns null. + + + + + + + The string representation of the first element of the array, unless + that element is another array, which would result in an empty string. + + + + + The number of elements in this array. + + + + + The string representation of this Array, suitable for putting right + back into a .dta file. + + + + + + Returns a copy of this datacommand with all children evaulated. + + + + + The most basic element of dta. + + + + + The type of this Atom. + + + + + The value of this Atom. + + + + + The value of this Atom. + + + + + The value of this Atom. + + + + + Construct an Atom whose value is a string or symbol. + + The value assigned to this atom. + + + + Construct an Atom whose value is an integer. + + + + + + Construct an Atom whose value is a floating-point value. + + + + + + The string representation of this Atom. + + + + + Returns the string representation of this Atom. + + + + + + Makes a data variable. Scoping not implemented because we're not an interpreter. + Don't give this the $. + + + + + + Represents the possible types of values in a DataArray. + + + + + Integral value. + + + + + Floating point value. + + + + + $-prefixed variable type + + + + + Symbol value. + + + + + '() + + + + + #ifdef directive + + + + + #else directive + + + + + #endif directive + + + + + Array. + + + + + {}-enclosed function call + + + + + ""-enclosed String value. + + + + + []-enclosed macro definition + + + + + #define directive + + + + + #include directive + + + + + #merge directive + + + + + #ifndef directive + + + + + #autorun directive + + + + + #undef directive + + + + + Represents the basic element of DTA, which could be an Atom or an Array. + + + + + The parent of this data node. If null, this is a root node. + + + + + The name of this data node. + + + + + The type of this data node. + + + + + Evaluate this node to get a value. + + + + + + Represents a .dta/.dtx file. + + + + + Parses a plaintext DTA given its bytes in a byte array. If an encoding tag is set, tries to use the correct encoding. + + + + + + + Parses the entirety of a .dta file in plain text into a DataArray. + + + + + + Parses the entirety of a .dta file in a stream to a DataArray. + + + + + + + Parses the string as DTA elements, adding each one to the given root array. + + string of DTA info + top-level array to add the string to + + + + Parses a binary format (dtb) file. + + + + + + Parses a binary format (dtb) file and returns the version and encryption state. + + + + + + + Converts a DataArray to a binary format (DTB) file. + + + + + Provides a means to decrypt an encrypted DTB file (or any other file using this crypt method). + + + + + Read a signed 8-bit integer from the stream. + + + + + + + Read an unsigned 8-bit integer from the stream. + + + + + + + Write a signed 8-bit integer to the stream. + + + The integer to write. + + + + Write an unsigned 8-bit integer to the stream. + + + The integer to write. + + + + Read an unsigned 16-bit little-endian integer from the stream. + + + + + + + Read a signed 16-bit little-endian integer from the stream. + + + + + + + Write an unsigned 16-bit little-endian integer to the stream. + + + The integer to write. + + + + Write a signed 16-bit little-endian integer to the stream. + + + The integer to write. + + + + Read an unsigned 16-bit Big-endian integer from the stream. + + + + + + + Read a signed 16-bit Big-endian integer from the stream. + + + + + + + Write an unsigned 16-bit big-endian integer to the stream. + + + The integer to write. + + + + Write a signed 16-bit big-endian integer to the stream. + + + The integer to write. + + + + Read an unsigned 24-bit little-endian integer from the stream. + + + + + + + Read a signed 24-bit little-endian integer from the stream. + + + + + + + Read an unsigned 24-bit Big-endian integer from the stream. + + + + + + + Read a signed 24-bit Big-endian integer from the stream. + + + + + + + Read an unsigned 32-bit little-endian integer from the stream. + + + + + + + Read a signed 32-bit little-endian integer from the stream. + + + + + + + Write an unsigned 32-bit little-endian integer to the stream. + + + The integer to write. + + + + Write a signed 32-bit little-endian integer to the stream. + + + The integer to write. + + + + Read an unsigned 32-bit Big-endian integer from the stream. + + + + + + + Read a signed 32-bit Big-endian integer from the stream. + + + + + + + Read an unsigned 64-bit little-endian integer from the stream. + + + + + + + Read a signed 64-bit little-endian integer from the stream. + + + + + + + Read a single-precision (4-byte) floating-point value from the stream. + + + + + + + Write a single-precision (4-byte) floating-point value to the stream. + + + The floating point value to write. + + + + Read a null-terminated ASCII string from the given stream. + + + + + + + Read a length-prefixed string of the specified encoding type from the file. + The length is a 32-bit little endian integer. + + + The encoding to use to decode the string. + + + + + Read a length-prefixed UTF-8 string from the given stream. + + + + + + + Write a length-prefixed string of the specified encoding type to the file. + The length is a 32-bit little endian integer. + + + The encoding to use to decode the string. + The string to write. + + + + Write a length-prefixed UTF-8 string to the given stream. + + + The string to write. + + + + Read a given number of bytes from a stream into a new byte array. + + + Number of bytes to read (maximum) + New byte array of size <=count. + + + + Read a variable-length integral value as found in MIDI messages. + + + + + + diff --git a/dependencies/ForgeTool/ForgeTool.exe b/dependencies/ForgeTool/ForgeTool.exe index 7dbf9e6..48c33df 100644 Binary files a/dependencies/ForgeTool/ForgeTool.exe and b/dependencies/ForgeTool/ForgeTool.exe differ diff --git a/dependencies/ForgeTool/ForgeTool.exe.config b/dependencies/ForgeTool/ForgeTool.exe.config new file mode 100644 index 0000000..d7c60fd --- /dev/null +++ b/dependencies/ForgeTool/ForgeTool.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/dependencies/ForgeTool/ForgeToolGUI.exe b/dependencies/ForgeTool/ForgeToolGUI.exe deleted file mode 100644 index 1a8da53..0000000 Binary files a/dependencies/ForgeTool/ForgeToolGUI.exe and /dev/null differ diff --git a/dependencies/ForgeTool/GameArchives.dll b/dependencies/ForgeTool/GameArchives.dll index 421ca21..7e23622 100644 Binary files a/dependencies/ForgeTool/GameArchives.dll and b/dependencies/ForgeTool/GameArchives.dll differ diff --git a/dependencies/ForgeTool/GameArchives.xml b/dependencies/ForgeTool/GameArchives.xml new file mode 100644 index 0000000..9bc5623 --- /dev/null +++ b/dependencies/ForgeTool/GameArchives.xml @@ -0,0 +1,1084 @@ + + + + GameArchives + + + + + Represent an element of a filesystem, usually directories and files. + + + + + The name of this node. + + + + + The folder where this node resides. + For the root directory, this is null. + + + + + Represents a single file in a filesystem. + + + + + The size of this file. + + + + + Indicates whether this file is compressed in the archive. + + + + + The size of this file, as it is in the archive. + + + + + A collection of extended information about the file. The values in the collection + depend on the type of package the file is from. Modifying this dictionary results in + undefined behavior. + + + + + Get a byte-array in memory containing all the data of this file. + + + + + + Gets a stream that allows access to this file. + + + + + Get a stream (either memory-backed or disk-based) that allows access to this file. + + + + + + Represents a directory within some file system. + + + + + Tries to get the named file. If it is not found, returns false. + + + + + + + + Get the file in this directory with the given name. Throws exception if not found. + + + + Thrown when the file could not be found. + + + + Tries to get the named directory. If it is not found, returns false. + + + + + + + + Get the directory in this directory with the given name. Throws exception if not found. + + + + Thrown when the directory could not be found. + + + + Tries to get the file at the given path, which is relative to this directory. + + + + Thrown when a directory in the path could not be found. + Thrown when the file could not be found. + + + + A collection of all files in this directory. + + + + + A collection of all the directories in this directory. + + + + + Represents some content package which contains a single filesystem. + + + + + The name of this package. + + + + + The root directory of this filesystem. + + + + + The size of this package's data files. For packages with unified header and data, + this is just the size of the package file. + + + + + Indicates whether this package can be modified. + + + + + Implementation of the IDisposable interface. + + + + + Separates elements in a file path. + + + + + The name of the root directory. Never used in paths, though. + + + + + The .NET type of the file objects in this package. + + + + + Get the file at the given path. Path separator is '/'. + Files in the root directory have no path separator. + + + The file at the given path. + + + + Returns a list containing all the logical files of the specified type in this archive. + + + + + + Returns a list containing all the logical files in this archive. + + + + + + Checks if a replacement operation is possible on the given source and target files. + + The file to be overwritten. + The file to read from. + True if the replacement is possible. + + + + Replace the given target file with the given source file. + This modifies the archive file permanently! + + The file to be overwritten. + The file to read from. + True if the replacement is successful. + + + + Ark Package + + + + + Instantiate ark package file from input .hdr file. + Note: will check for data files and throw exception if they're not found. + + Full path to .hdr file + + + + Read the filename table, which is a blob of strings, + then read the filename pointer table which links files to filenames + + + + + Reads the new file table format in v9 and v10 + + + + + Get the directory at the end of this path, or make it (and all + intermediate dirs) if it doesn't exist. + + + + + + + A "protected file" wrapper. + + + + + Constructs a new protected file stream from the given base stream. + + The base stream + + + + A default implementation of a directory. + Useful for archives where directories are implicit. + Important: File and directory names are case-insensitive. + + + + + An uncompressed file which is simply a number of bytes at a certain offset in a stream. + + + + + Constructs a new OffsetFile + + The name of the file, including extension + The directory in which this file resides + Stream which contains this file + Offset into the stream at which the file starts + Length in bytes of the file + + + + A single stream which is actually made up of a number of streams in sequence. + + + + + Denotes whether the stream can be read from. + + + + + Denotes whether the user can seek this stream. + + + + + Denotes whether the user can write to this stream. + + + + + The total length of this file. + + + + + The current position the stream points to within the file. + + + + + Not implemented; read-only stream. + + + + + Reads `count` bytes into `buffer` at offset `offset`. + + + + + + + + + Get the correct stream and offset. + Returns the offset into that stream. + + + + + + + + Seek the stream to given position within the file relative to given origin. + + + + + + + + Not implemented; read-only stream. + + + + + + Not implemented; read-only stream. + + + + + + + + A stream based on another stream, useful for representing + file streams within simple archive packages. + + + + + Constructs a new offset stream on the given base stream with the given offset and length. + + The base stream + Offset into the base stream where this stream starts + Number of bytes in this stream + + + + Represents a directory in the local file system. + All files in the directory are loaded by default, while subdirectories + are loaded on-demand (although this may change in the future). + + + + + Make a shallow instance of the given local directory. + + Location of the directory. + + + + Represents a file on the local filesystem. + + + + + The result of a package test. + + + + + Definitely not an instance of the package type. + + + + + Possibly an instance of the package type, but a more in-depth analysis would be needed. + + + + + Definitely an instance of the package type. + + + + + Collection of methods for reading packages. + + + + + Attempts to read the file as a supported archive package. + If the file is not of a supported format, throws an exception. + + + + Thrown when an unsupported file type is given. + + + + Attempts to read the file as a supported archive package. + If the file is not of a supported format, throws an exception. + + An IFile referring to the archive package. + + This callback will be called when a package is a likely match but needs a password/decryption + key. It will be called with a request string, and should return the key. + + The package, if it could be opened. + Thrown when an unsupported file type is given. + + + + Reads a package using the given decryption key if necessary. + + + + + Tries to read a package given only a stream. This makes a dummy file which works with the package reader. + + Stream to read from. This must support the Length property. + (Optional) the filename to give the dummy file. + + + + + A list of supported file formats and their extensions, presented + in a format that an OpenFileDialog supports. + + + + + Open the .far archive which is the given file. + + + + + + Get the directory at the end of this path, or make it (and all + intermediate dirs) if it doesn't exist. + + + + + + + Parse a directory for its contents. + + The name of this directory. + Location of its filename infos. + File descriptor dictionary + + + + + Hashes a path with a broken fnv132 hashing algorithm + + + + + + + The common name of this package type. + + + + + The common file extensions of this package type. + + + These should be of the format: + *.ext + As expected by an OpenFileDialog filter list. + + + + + Given a file, determines whether the file is + of this package type. + + + + + Given a file which is a valid package, opens it as this + package type, returning the package instance. + + + + + Add an archive package type to the supported types. + + Friendly name for the package type + String-array of typical file extensions, formatted + as *.ext + Function which, given a file, returns a PackageTestResult + which tells if the file is of that package type. + Function which loads the package. + + + + Wraps a PFSC file to create a decompressed stream. + + + + + + + + Offset within the sector for Read()s + Should always be == position % sectorSize + + + + + Position within logical stream. + + + + + Playstation File System Directory + + + + + Represents a PFS image. + + + + + Size of each XEX sector + + + + + Offset within the sector for Read()s + Should always be == position % sectorSize + + + + + Active sector number + + + + + Sector at and after which the encryption is active + + + + + Position within logical stream. + + + + + Temporary location for the decrypted sector + + + + + Creates an AES-XTS-128 stream. + Reads from the stream will decrypt data. Writes to the stream will encrypt data. + + + + + Precondition: activeSector is set + Postconditions: + - sectorOffset is reset to 0 + - sectorBuf[] is filled with decrypted sector + - position is updated + + + + + Open the .psarc archive which is the given file. + + + + + + Get the directory at the end of this path, or make it (and all + intermediate dirs) if it doesn't exist. + + Path from PSARC path file, including filename. + + + + + + Represents a Directory within an STFS package. + + + + + Represents a file within an STFS package. + + + + + The name of this file. + + + + + + Gets up to the first 2GiB of a file. For larger accesses use STFSFileStream. + + + + + + Returns a Stream that allows access to the file's bytes. + + + + + + A stream for accessing file data from within an STFS package. + + + + + Denotes whether the stream can be read from. + + + + + Denotes whether the user can seek this stream. + + + + + Denotes whether the user can write to this stream. + + + + + The total length of this file. + + + + + The current position the stream points to within the file. + + + + + Not implemented; read-only stream. + + + + + Reads `count` bytes into `buffer` at offset `offset`. + + + + + + + + + Seek the stream to given position within the file relative to given origin. + + + + + + + + Not implemented; read-only stream. + + + + + + Not implemented; read-only stream. + + + + + + + + Represents the two supported types of STFS packages (CON and LIVE). + + + + + Package signed with console key. + + + + + Package signed for XBOX Live. + + + + + Package used in system files and on-disc content. + + + + + The ordinal index of this block. + + + + + SHA-1 hash of the block. + + + + + Ordinal number of next block. + + + + + Status byte: + Value Meaning + 0x00 Unused Block + 0x40 Free Block (previously used) + 0x80 Used Block + 0xC0 Newly Allocated Block + + + + + Represents an STFS package. Allows read-only access to files. + + + + + Checks if the given file is an STFS file (LIVE/CON). + + Absolute path to file. + Is the file an STFS? + + + + The stream used to access this STFS package. Typically, this is a FileStream. + + + + + The type of this STFS package (LIVE and CON are supported). + + + + + The directory under which all files in this STFS package live. + + + + + The total size of this STFS package. + + + + + Has this package been disposed? + + + + + The content thumbnail of this package. + + + + + The title thumbnail for this package. + + + + + The filename of this package. + + + + + Holds the block we're currently working on. + + + + + Opens up an STFS file at the given absolute path. + + Path to the STFS file. + New STFS instance which refers to given file. + Thrown if file is not valid STFS package. + + + + Ensure that we dispose upon garbage collection. + + + + + Turns a given block number to an offset within the STFS package. + + + + + + + Returns an array of the file's block numbers in order. + + The starting block index + How many blocks the file has + Do we know the blocks are sequential? (speedup) + + + + + Cache the block at the given byte offset. + Does not check that you're aligned to a block boundary. + + + + + + Dispose this object. + + + + + Read a signed 8-bit integer from the stream. + + + + + + + Read an unsigned 8-bit integer from the stream. + + + + + + + Read an unsigned 16-bit little-endian integer from the stream. + + + + + + + Read a signed 16-bit little-endian integer from the stream. + + + + + + + Read an unsigned 16-bit Big-endian integer from the stream. + + + + + + + Read a signed 16-bit Big-endian integer from the stream. + + + + + + + Read an unsigned 24-bit little-endian integer from the stream. + + + + + + + Read a signed 24-bit little-endian integer from the stream. + + + + + + + Read an unsigned 24-bit Big-endian integer from the stream. + + + + + + + Read a signed 24-bit Big-endian integer from the stream. + + + + + + + Read an unsigned 32-bit little-endian integer from the stream. + + + + + + + Read a signed 32-bit little-endian integer from the stream. + + + + + + + Read an unsigned 32-bit Big-endian integer from the stream. + + + + + + + Read a signed 32-bit Big-endian integer from the stream. + + + + + + + Read an unsigned 64-bit little-endian integer from the stream. + + + + + + + Read a signed 64-bit little-endian integer from the stream. + + + + + + + Read an unsigned 64-bit big-endian integer from the stream. + + + + + + + Read a signed 64-bit big-endian integer from the stream. + + + + + + + Reads a multibyte value of the specified length from the stream. + + The stream + Must be less than or equal to 8 + + + + + Read a single-precision (4-byte) floating-point value from the stream. + + + + + + + Read a null-terminated ASCII string from the given stream. + + + + + + + Read a length-prefixed string of the specified encoding type from the file. + The length is a 32-bit little endian integer. + + + The encoding to use to decode the string. + + + + + Read a length-prefixed UTF-8 string from the given stream. + + + + + + + Read a given number of bytes from a stream into a new byte array. + + + Number of bytes to read (maximum) + New byte array of size <=count. + + + + Read a variable-length integral value as found in MIDI messages. + + + + + + + Open the .far archive which is the given file. + + + + + + Opens a directory from the local filesystem as an IDirectory + + Path to the directory. + An IDirectory representing the local directory. + + + + Create an instance of an IFile from the given local path. + Note that this creates a new LocalDirectory object each time it is + called. If you are opening a lot of files from one directory, it's more + efficient to grab the directory with Util.LocalDir(), then get each + file from there. + + + + + + + Returns the last element of this array. + + The type of the array. + + The last element of the array. + + + + Saves this file to the given path. Overwrites existing files. + + + + + + + Copies one stream to the other. + + The source stream. + The destination stream. + + + + Xbox (360) ISO Directory + + + + + Represents an element of an XISO file system. + + + + + The location of the filesystem entry node in the ISO. + + + + + Represents an Xbox/Xbox 360 disc image. + + + + diff --git a/dependencies/ForgeTool/LICENSE.txt b/dependencies/ForgeTool/LICENSE.txt deleted file mode 100644 index 02bbb60..0000000 --- a/dependencies/ForgeTool/LICENSE.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file diff --git a/dependencies/ForgeTool/LibForge.dll b/dependencies/ForgeTool/LibForge.dll index 59cbd6b..b336bd9 100644 Binary files a/dependencies/ForgeTool/LibForge.dll and b/dependencies/ForgeTool/LibForge.dll differ diff --git a/dependencies/ForgeTool/LibOrbisPkg.dll b/dependencies/ForgeTool/LibOrbisPkg.dll index f37f9d2..e67a9d0 100644 Binary files a/dependencies/ForgeTool/LibOrbisPkg.dll and b/dependencies/ForgeTool/LibOrbisPkg.dll differ diff --git a/dependencies/ForgeTool/OpenTK.GLControl.dll b/dependencies/ForgeTool/OpenTK.GLControl.dll deleted file mode 100644 index 9d928cf..0000000 Binary files a/dependencies/ForgeTool/OpenTK.GLControl.dll and /dev/null differ diff --git a/dependencies/ForgeTool/OpenTK.dll b/dependencies/ForgeTool/OpenTK.dll deleted file mode 100644 index 52feb21..0000000 Binary files a/dependencies/ForgeTool/OpenTK.dll and /dev/null differ diff --git a/dependencies/ForgeTool/README.md b/dependencies/ForgeTool/README.md deleted file mode 100644 index 2c9b3ab..0000000 --- a/dependencies/ForgeTool/README.md +++ /dev/null @@ -1,76 +0,0 @@ -This is a fork of LibForge/ForgeTool by Maxton, with continuing work to fix bugs and add features. - -Download the latest build from [Appveyor](https://ci.appveyor.com/project/LlysiX/libforge/build/artifacts) or from the [releases page](https://github.com/mtolly/LibForge/releases) if the artifacts have expired - -# Original readme follows - -## About This Repository - -I am keeping track of my research into RB4 customs here. - -I am working out the structure of the files in Rock Band 4. These are being documented in the form of 010 Editor Template files, which are in the `010` directory. - -## Latest Build - -Can be downloaded at [Appveyor](https://ci.appveyor.com/project/maxton/libforge/branch/master/artifacts) - -## LibForge - -This is a library I'm working on that handles reading, writing, and converting for formats in the Forge engine used by Rock Band 4 and Rock Band VR. - -It is licensed under the GNU LGPLv3 and includes two frontends at the moment: - -### ForgeTool - -This is a command line tool that does file conversions. - -``` -Usage: ForgeTool.exe [options] -Verbs: - version - - Prints the version number and exits - rbmid2mid - - converts a Forge midi to a Standard Midi File - reprocess - - converts a Forge midi to a Forge midi - mid2rbmid - - converts a Standard Midi File to a Forge midi - tex2png - - converts a Forge texture to PNG - mesh2obj - - converts a Forge mesh to OBJ - con2gp4 [--scee] [--id 16CHARIDENTIFIER] [--desc "Package Description"] - - converts a CON custom to a .gp4 project in the given output directory - --scee : make an EU package - --id <16CHARIDENTIFIER> : set the customizable part of the Package ID/Filename - --desc "Package Description" : set the description of the package - con2pkg [--scee] [--id 16CHARIDENTIFIER] [--desc "Package Description"] - - converts a CON custom to a PS4 PKG custom in the given output directory - --scee : make an EU package - --id <16CHARIDENTIFIER> : set the customizable part of the Package ID/Filename - --desc "Package Description" : set the description of the package - con2rbvr [--noark] [--prefix PREFIX] - - converts a CON custom to a RBVR custom in the given game directory - --noark : creates a songs folder to be used with patchcreator in arkhelper instead of a DLC ARK - --prefix : sets a custom prefix to better organize your converted song files - arkorder - - outputs the arkorder DTA of a given ARK HDR file - arkbuild - - creates an ARK file using files with the specified arkorder in the output directory - milo2lipsync - - converts an uncompressed milo archive to forge lipsync file - csv2txt - - decodes a csv file - dta2b - - converts text dta into encoded dta -``` - -### ForgeToolGUI - -This has an ark/PFS/folder browser with support for previewing the following: - - Textures (.png_pc, .png_ps4, .bmp_pc, .bmp_ps4, etc) - - Models (a 3d preview with optional wireframe) - - .songdta files - - Data (.dta/.dtb/.\*\_dta\_\*/.moggsong) files - - RBmid files - - RBsong files diff --git a/dev_scripts/highways_png2tex.bat b/dev_scripts/highways_png2tex.bat new file mode 100644 index 0000000..0aa5d9c --- /dev/null +++ b/dev_scripts/highways_png2tex.bat @@ -0,0 +1,2 @@ +cd ..\dx_textures\highways\ +FOR /F "tokens=*" %%G IN ('dir /b *.png') DO ..\..\dependencies\forgetool\forgetool png2tex "%%G" "%%~nG.bmp_ps4" \ No newline at end of file diff --git a/dx_textures/highways/_1_black_highway.png b/dx_textures/highways/_1_black_highway.png new file mode 100644 index 0000000..7e3e9b3 Binary files /dev/null and b/dx_textures/highways/_1_black_highway.png differ diff --git a/dx_textures/highways/_2_rb3_guitar.png b/dx_textures/highways/_2_rb3_guitar.png new file mode 100644 index 0000000..f2f388d Binary files /dev/null and b/dx_textures/highways/_2_rb3_guitar.png differ diff --git a/dx_textures/highways/_rb3_bass.png b/dx_textures/highways/_rb3_bass.png new file mode 100644 index 0000000..9dbab71 Binary files /dev/null and b/dx_textures/highways/_rb3_bass.png differ diff --git a/dx_textures/highways/_rb3_drum.png b/dx_textures/highways/_rb3_drum.png new file mode 100644 index 0000000..5be7a95 Binary files /dev/null and b/dx_textures/highways/_rb3_drum.png differ diff --git a/dx_textures/highways/_rb3_keys.png b/dx_textures/highways/_rb3_keys.png new file mode 100644 index 0000000..fc05d33 Binary files /dev/null and b/dx_textures/highways/_rb3_keys.png differ diff --git a/dx_textures/highways/fnfestival (beta).png b/dx_textures/highways/fnfestival (beta).png new file mode 100644 index 0000000..3c5794d Binary files /dev/null and b/dx_textures/highways/fnfestival (beta).png differ diff --git a/dx_textures/highways/fortnite festival.png b/dx_textures/highways/fortnite festival.png new file mode 100644 index 0000000..2ccb9ad Binary files /dev/null and b/dx_textures/highways/fortnite festival.png differ diff --git a/dx_textures/highways/gem_track_surface.png b/dx_textures/highways/gem_track_surface.png new file mode 100644 index 0000000..c927fee Binary files /dev/null and b/dx_textures/highways/gem_track_surface.png differ diff --git a/dx_textures/highways/work/_1_rb3_guitar.png b/dx_textures/highways/work/_1_rb3_guitar.png new file mode 100644 index 0000000..0bcd8f5 Binary files /dev/null and b/dx_textures/highways/work/_1_rb3_guitar.png differ diff --git a/dx_textures/highways/work/_rb3_bass.png b/dx_textures/highways/work/_rb3_bass.png new file mode 100644 index 0000000..186756a Binary files /dev/null and b/dx_textures/highways/work/_rb3_bass.png differ diff --git a/dx_textures/highways/work/_rb3_drums.png b/dx_textures/highways/work/_rb3_drums.png new file mode 100644 index 0000000..a87bc95 Binary files /dev/null and b/dx_textures/highways/work/_rb3_drums.png differ diff --git a/dx_textures/highways/work/_rb3_keys.png b/dx_textures/highways/work/_rb3_keys.png new file mode 100644 index 0000000..ab66d85 Binary files /dev/null and b/dx_textures/highways/work/_rb3_keys.png differ diff --git a/dx_textures/highways/work/_zrb2.png b/dx_textures/highways/work/_zrb2.png new file mode 100644 index 0000000..99f15a1 Binary files /dev/null and b/dx_textures/highways/work/_zrb2.png differ diff --git a/dx_textures/highways/work/_zrb2_drums.png b/dx_textures/highways/work/_zrb2_drums.png new file mode 100644 index 0000000..db0138f Binary files /dev/null and b/dx_textures/highways/work/_zrb2_drums.png differ diff --git a/dx_textures/highways/work/_ztbrb.png b/dx_textures/highways/work/_ztbrb.png new file mode 100644 index 0000000..2e7b3f7 Binary files /dev/null and b/dx_textures/highways/work/_ztbrb.png differ diff --git a/dx_textures/highways/work/_ztbrb_drums.png b/dx_textures/highways/work/_ztbrb_drums.png new file mode 100644 index 0000000..baa7a64 Binary files /dev/null and b/dx_textures/highways/work/_ztbrb_drums.png differ diff --git a/dx_textures/highways/work/fnfestival_streak.png b/dx_textures/highways/work/fnfestival_streak.png new file mode 100644 index 0000000..01c56f3 Binary files /dev/null and b/dx_textures/highways/work/fnfestival_streak.png differ diff --git a/dx_textures/highways/work/yarg.png b/dx_textures/highways/work/yarg.png new file mode 100644 index 0000000..1b31601 Binary files /dev/null and b/dx_textures/highways/work/yarg.png differ