33using SharpDX . XInput ;
44using Memory ;
55using Newtonsoft . Json ;
6+ using System . Linq ;
67
78// Used for later
89using System . Configuration ;
@@ -32,16 +33,7 @@ static void Main(string[] args)
3233 string json = System . IO . File . ReadAllText ( "file.txt" ) ;
3334 SaveStateSerializer SavesObject = JsonConvert . DeserializeObject < SaveStateSerializer > ( json ) ;
3435
35- Console . WriteLine ( SavesObject . Version ) ;
36-
37- SaveState [ ] statesFromFile = SavesObject . SaveStates ;
38- for ( int i = 0 ; i < 10 ; i ++ )
39- {
40- if ( statesFromFile [ i ] != null )
41- {
42- statesFromFile [ i ] = new SaveState ( statesFromFile [ i ] . xPos , statesFromFile [ i ] . yPos , statesFromFile [ i ] . zPos , statesFromFile [ i ] . xRot , statesFromFile [ i ] . yRot , statesFromFile [ i ] . zRot , statesFromFile [ i ] . hSpeed , statesFromFile [ i ] . vSpeed , statesFromFile [ i ] . hover , statesFromFile [ i ] . lives , statesFromFile [ i ] . rings , statesFromFile [ i ] . tFrames , statesFromFile [ i ] . tSeconds , statesFromFile [ i ] . tMins , statesFromFile [ i ] . camX , statesFromFile [ i ] . camY , statesFromFile [ i ] . camZ , statesFromFile [ i ] . camXRot , statesFromFile [ i ] . camYRot , statesFromFile [ i ] . camZRot ) ;
43- }
44- }
36+ saveStates = SavesObject . SaveStates ;
4537 }
4638
4739 ConnectController ( ) ;
@@ -104,10 +96,12 @@ public static void ConnectController()
10496
10597 public static void Run ( )
10698 {
107- GamepadButtonFlags buttonsPressed ;
99+ int buttonsPressed ;
108100
109101 bool hasSaved = false , hasLoaded = false , hasSwitched = false ;
110- bool left , right , up , down ;
102+ bool DLeft , DRight , DUp , DDown , LB ;
103+
104+ int invertCycle = UserSettings . Default . invertCycle ? - 1 : 1 ;
111105
112106 while ( true )
113107 {
@@ -126,72 +120,79 @@ public static void Run()
126120 }
127121
128122
129- buttonsPressed = CONTROLLER . GetState ( ) . Gamepad . Buttons ;
123+ buttonsPressed = ( int ) CONTROLLER . GetState ( ) . Gamepad . Buttons ;
130124
131- left = buttonsPressed . HasFlag ( GamepadButtonFlags . DPadLeft ) ;
132- right = buttonsPressed . HasFlag ( GamepadButtonFlags . DPadRight ) ;
133- up = buttonsPressed . HasFlag ( GamepadButtonFlags . DPadUp ) ;
134- down = buttonsPressed . HasFlag ( GamepadButtonFlags . DPadDown ) ;
125+ DUp = ( buttonsPressed & 1 ) != 0 ? true : false ;
126+ DDown = ( buttonsPressed & 2 ) != 0 ? true : false ;
127+ DLeft = ( buttonsPressed & 4 ) != 0 ? true : false ;
128+ DRight = ( buttonsPressed & 8 ) != 0 ? true : false ;
129+ LB = ( buttonsPressed & 256 ) != 0 ? true : false ;
135130
136- if ( left && ! hasSaved )
131+ if ( LB || ! UserSettings . Default . extraInput )
137132 {
138- saveStates [ curSaveState ] = new SaveState ( m ) ;
139-
133+ if ( DLeft && ! hasSaved )
134+ {
135+ saveStates [ curSaveState ] = new SaveState ( m ) ;
140136
141- Console . WriteLine ( "Saved to {0}" , curSaveState ) ;
142- SaveStateSerializer SaveObjectToSerialize = new SaveStateSerializer ( saveStates ) ;
143- string json = JsonConvert . SerializeObject ( SaveObjectToSerialize ) ;
144-
145- System . IO . File . WriteAllText ( "file.txt" , json ) ;
146137
147- hasSaved = true ;
148- }
149- else if ( ! left && hasSaved )
150- {
151- hasSaved = false ;
152- }
138+ Console . WriteLine ( "Saved to {0}" , curSaveState ) ;
139+ SaveStateSerializer SaveObjectToSerialize = new SaveStateSerializer ( saveStates ) ;
140+ string json = JsonConvert . SerializeObject ( SaveObjectToSerialize ) ;
153141
142+ System . IO . File . WriteAllText ( "file.txt" , json ) ;
154143
155- if ( right && ! hasLoaded && saveStates [ curSaveState ] != null )
156- {
157- LoadState ( saveStates [ curSaveState ] ) ;
144+ hasSaved = true ;
145+ }
146+ else if ( ! DLeft && hasSaved )
147+ {
148+ hasSaved = false ;
149+ }
158150
159- Console . WriteLine ( "Loaded {0}" , curSaveState ) ;
160151
161- hasLoaded = true ;
162- }
163- else if ( right && saveStates [ curSaveState ] == null && ! hasLoaded )
164- {
165- hasLoaded = true ;
166- Console . WriteLine ( "Cannot find save state {0}" , curSaveState ) ;
167- }
168- else if ( ! right && hasLoaded )
169- {
170- hasLoaded = false ;
171- }
172-
152+ if ( DRight && ! hasLoaded )
153+ {
154+ if ( saveStates [ curSaveState ] != null )
155+ {
156+ LoadState ( saveStates [ curSaveState ] ) ;
173157
158+ Console . WriteLine ( "Loaded {0}" , curSaveState ) ;
159+ }
160+ else
161+ {
162+ Console . WriteLine ( "Cannot find save state {0}" , curSaveState ) ;
163+ }
164+ hasLoaded = true ;
165+ }
166+ else if ( ! DRight && hasLoaded )
167+ {
168+ hasLoaded = false ;
169+ }
174170
175- if ( ( up || down ) && ! hasSwitched )
176- {
177- //Console.WriteLine(Convert.ToInt32(UserSettings.Default.invertCycle));
178- curSaveState += Convert . ToInt32 ( up ) ;
179- curSaveState -= Convert . ToInt32 ( down ) ;
180171
181- if ( curSaveState == - 1 ) curSaveState = 9 ;
182- else if ( curSaveState == 10 ) curSaveState = 0 ;
183172
184- Console . WriteLine ( "Switched to save slot {0}" , curSaveState ) ;
173+ if ( ( DUp || DDown ) && ! hasSwitched )
174+ {
175+ //Console.WriteLine(Convert.ToInt32(UserSettings.Default.invertCycle));
185176
186- hasSwitched = true ;
187- }
188- else if ( ! ( up || down ) && hasSwitched )
189- {
190- hasSwitched = false ;
191- }
177+ curSaveState += Convert . ToInt32 ( DUp ) * invertCycle ;
178+ curSaveState -= Convert . ToInt32 ( DDown ) * invertCycle ;
192179
180+ if ( curSaveState == - 1 ) curSaveState = 9 ;
181+ else if ( curSaveState == 10 ) curSaveState = 0 ;
193182
194- System . Threading . Thread . Sleep ( 10 ) ;
183+ Console . WriteLine ( "Switched to save slot {0}" , curSaveState ) ;
184+
185+ hasSwitched = true ;
186+ }
187+ else if ( ! ( DUp || DDown ) && hasSwitched )
188+ {
189+ hasSwitched = false ;
190+ }
191+
192+ System . Threading . Thread . Sleep ( 10 ) ;
193+ }
194+
195+
195196 }
196197
197198 checkGame = new Thread ( checkForProcess ) ;
@@ -234,8 +235,6 @@ public static void LoadState(SaveState state)
234235 // Write camera info into memory
235236 if ( m . ReadByte ( "base+372CBA8" ) != 7 )
236237 {
237- m . WriteMemory ( "base+372CBA8" , "byte" , "4" ) ;
238-
239238 m . WriteMemory ( "base+0372CBB0,20" , "float" , state . camX . ToString ( ) ) ;
240239 m . WriteMemory ( "base+0372CBB0,24" , "float" , state . camY . ToString ( ) ) ;
241240 m . WriteMemory ( "base+0372CBB0,28" , "float" , state . camZ . ToString ( ) ) ;
0 commit comments