Topic: SFC3 MACRO UTILITY v0.9 READY!  (Read 20364 times)

0 Members and 1 Guest are viewing this topic.

Vertigo

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #100 on: February 03, 2003, 11:13:42 pm »
Tulmahk,

     You can fetch the updated v0.931 file from:

http://www.gfluniverse.net/downloads


 

Tulmahk

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #101 on: February 04, 2003, 02:36:41 am »
I'll be grabbing that presently.

As to the color depth thing, that's the way I believe the game works.  The game uses the resolution you set it to use in the config utility, but the color depth you happen to be at when the game launches (but no less than 16bit).

Anyone feel free to correct me if I'm wrong on that, but I do believe that's the way it works (learned that by reading these forums).  

Tulmahk

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #102 on: February 04, 2003, 03:14:18 am »
IT WORKS!

Whatever you did, the damned thing is actually working now!

Shouldn't be too great a leap from here to get the power sliders working.  Same basic principle, right?

That's an excellent bit of programming.  

Vertigo

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #103 on: February 04, 2003, 05:09:51 am »
Tulmahk,

     Great to hear that the fix worked.  It's a bit of a hack, but I don't care at this point.

     I don't know about the desktop color thing.  When I was first running tests, the color rez ALWAYS came up at 16 bit, and I run my desktop at 32.  I think that may be either an urban legend, or hardware specific.  I was querying color depth through the DC, so I know it's right.

     For a technical point of view, sliders are a piece o' cake.  It's the interface that is tricky.  Not being able to use a GUI during gametime makes it tough.  Here's what I settled on:

     For every hull you fly (up to 10), you can save a profile.  For every profile, you can define an unlimited amount of power sets.  A set is the settings of the 3 power bars, expressed as percentages.  When you start a match, you first load the profile for the ship you are in.  Then you can cycle through your energy sets at the press of a button.

So far I have added these bindable commands:

LoadHullProfileX (where X goes from 0-9, giving 10 profiles.)
CycleEnergySetsUp (Cycles through your energy sets)
CycleEnergySetsDown (reverse cycles)

Sets are cycled in the order they are listed in the INI file.

By default, I'll bind the load commands to CTRL-Fx, so loading Hull Profile 5 is CTRL-F5, etc.

A profile looks like this in the INI:

[Hull 0 Energy Profile]
Optimal=100P,100H,100S
MaxShields=200S, 100P, 100H
Alpha=200H,200P, 10S
_Custom1=103P, 122H, 110S

The entries can be decoded as follows.  The set name is first, that's whatever name you choose, it's only there for human reference.  The 3 commands following show what percentages of power you want to each system.  The systems must be  listed in order of priority.  Taking the Maxshields set as an example, Shields will get 200% power, then Primaries get 100% power, then Heavies get 100% last.  If there isn't enough energy, heavies won't get 100%, etc.  In reality, I'm just going to send mouse messages in reverse order of priority.

Seems simple enough to me.  There's only one real hassle, and that's creating the Sets in the first place.  It will take a lot of trail and error to get the percentages just right if you want to create Sets.  Without access to a GUI, there is no easy answer.

I'm gonna start by creating another command, something like SaveCustomEnergySet.  This command reads your current energy settings off the display, converts to percentages, and saves it as a "_CustomX" Set , where X increments every time.    It will save it in your current profile.  Then you can rename it to what you want.  Not perfect, but it works.

What would be really awesome is a stand-alone GUI utility so you can tweak your INI settings when you aren't playing.  In a perfect world, this app would allow you to perform refits and select Officers, calculate power nominals, allow you to move energy sliders just like the game, and then save those settings to the INI file.  Anyone interested?

Comments?  Sheesh, I feel like I'm writing RFCs.  

zaniwhoop2

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #104 on: February 04, 2003, 07:37:02 pm »
Quote:


What would be really awesome is a stand-alone GUI utility so you can tweak your INI settings when you aren't playing.  In a perfect world, this app would allow you to perform refits and select Officers, calculate power nominals, allow you to move energy sliders just like the game, and then save those settings to the INI file.  Anyone interested?
 



Yes, but getting the time to do it will be difficult for a week or so. Have you also considered a scripting language (Lua, Python come to mind)? I still need the game to get the sliders to work right (right?)? Somewhere I have an amazon gift certificate that should cover the cost.  

Vertigo

  • Guest
Re: SFC3 MACRO UTILITY v0.9 READY!
« Reply #105 on: February 04, 2003, 07:50:48 pm »
Quote:

Quote:


What would be really awesome is a stand-alone GUI utility so you can tweak your INI settings when you aren't playing.  In a perfect world, this app would allow you to perform refits and select Officers, calculate power nominals, allow you to move energy sliders just like the game, and then save those settings to the INI file.  Anyone interested?
 



Yes, but getting the time to do it will be difficult for a week or so. Have you also considered a scripting language (Lua, Python come to mind)? I still need the game to get the sliders to work right (right?)? Somewhere I have an amazon gift certificate that should cover the cost.  




Scripting doesn't help because you still won't have an easy-to-use GUI.  I mean, I'm a Perl junkie, but that doesn't help the average joe.  

Vertigo

  • Guest
UK host...
« Reply #106 on: February 04, 2003, 07:51:46 pm »
Jaffa has updated his hosting link for version v.0931:

http://www.whopperchopper.pwp.blueyonder.co.uk/SFC3Macro_v0931.zip  

SghnDubh

  • Guest
Now on BattleClinic!
« Reply #107 on: February 04, 2003, 08:24:14 pm »
Visit the Analysis section of BattleClinic for prompt and courteous d/l.  


BTW, follow link #4 that looks like this:










  .    

Tulmahk

  • Guest
Re: UK host...
« Reply #108 on: February 04, 2003, 10:01:43 pm »
Vertigo, you know more about these things than I, so I'll gladly defer to your interpretation of the color-depth thing.

The rest of it sounds just amazing.  I can't wait to try it all out.  I'm using your utility on a regular basis in multiplayer, and the results have been excellent.  I spend much, much less time messing with my ship's speed.  Mousing it is a major hassle, and the traditional hotkeys are only marginally better (still time consuming).  Your utility has done away with all that hassle.  1 or 2 key presses, and I'm off to mess with the power.

Keep up the good work!  

Vertigo

  • Guest
Re: UK host...
« Reply #109 on: February 05, 2003, 05:26:07 am »
Quote:

Vertigo, you know more about these things than I, so I'll gladly defer to your interpretation of the color-depth thing.

The rest of it sounds just amazing.  I can't wait to try it all out.  I'm using your utility on a regular basis in multiplayer, and the results have been excellent.  I spend much, much less time messing with my ship's speed.  Mousing it is a major hassle, and the traditional hotkeys are only marginally better (still time consuming).  Your utility has done away with all that hassle.  1 or 2 key presses, and I'm off to mess with the power.

Keep up the good work!  





I concur, it's like a microwave oven.  You quickly can't live without it.  Thanks for the praise!

I'm actually quite annoyed at the moment.  I can't get the energy sliders to work 100%.  I've got everything else done, and you can cycle through profiles, and everything works great except for one BIG problem.

When you try to use too much power, you know how the sliders "auto-adjust?"  That part just freaks out when you use the macro program.  I've tested and tested, and it just doesn't work right.

If you send a FAST sequence that doesn't kick in the "auto-adjusting," everything works great.  If you send mouse messages SLOWLY, auto-adjusting works great.  But if you send fast AND auto-adjusting kicks in, the sliders start warping to strange positions.

My theory is that the SFC3 code is "cheating" a little, by peeking into the message queue and getting all of the mouse messages at once.  It actually re-orders the mouse messages. It probably assumes that you'll never be able to get multiple mouse commands in between checks.  Which you usually can't unless you have a program doing it for you.

Even if you tweak your energy profiles perfectly, you'll still have problems the first time you take warp core damage.

Gah!  I'm mad.  I may have to create a second thread that sends timed messages.  Bleah.

Once that problem is licked, it's clear sailing (I hope).
 

Tulmahk

  • Guest
Re: UK host...
« Reply #110 on: February 05, 2003, 07:28:17 pm »
Please do stick with it.  This is worth a certain large amount of annoyance and frustration, as it makes your eventual victory all the sweeter

How much you want to bet Taldren is watching your progress closely (in a good way)?  

Vertigo

  • Guest
Re: UK host...
« Reply #111 on: February 06, 2003, 12:52:19 am »
Quote:

Please do stick with it.  This is worth a certain large amount of annoyance and frustration, as it makes your eventual victory all the sweeter

How much you want to bet Taldren is watching your progress closely (in a good way)?  




Who knows?  None of this stuff is rocket science, I just think it is stuff they didn't have time to get in.  Not a lot of polish in SFC3...  Every programmer always needs more time.

What I would really like is to help them formally.  I'd sign any NDA they want if they would let me work with the source code.  I've got references, I've held a TS clearance,  I'm trustworthy.  I am a real Software Developer who's worked on real code.  And I mean REAL code, like embedded OS kernels.  Cool stuff.  Until I find a (paying) job, I'll work pro bono, for the resume bullets.

Anyway, I've licked the slider bug problem.  I spun up a second thread which sends the mouse messages slower.  From initial testing, the fastest rate I can achieve is about 20ms.  Any faster and the bars freak out.  That's on a 1300 XP+, your mileage may vary.  Just to be safe, I'll put the delay value into the INI file so anyone can change it.

So, that's it.  All the hurdles are... um, hurdled, I guess.  I've got to merge the test code into the release code, and do all that pesky finalization stuff.  Since energy bars were the whole point of this util, I can finally call it v1.0!    Hopefully it will be out sometime in the next 24 hours.  

Vertigo

  • Guest
Version 1.0 has been released!
« Reply #112 on: February 06, 2003, 01:17:38 pm »
Yay!  I've mailed off SFC3Macro v1.0.  This version adds support for energy management, pretty much the way I described it in earlier posts.  I really, really like this feature.

If anyone is having trouble getting their head around the concepts of the energy stuff, just follow the guided tour in the ReadMe file.   It only takes about 5 minutes to get through, and shows the basics.

To me, this utility is now feature-complete.  That means, except for bug fixes, I'll be laying off of it for a while.  

Of course, suggestions for improvements are welcome, and I'll put in anything I really like.  An add-on GUI would be nice at some point, but is not required.  I kinda like the solution I came up with, all things considered.  

Cocomoe

  • Guest
Re: Version 1.0 has been released!
« Reply #113 on: February 06, 2003, 05:36:59 pm »
  OK updated the file and link.

  www.gfluniverse.net/downloads  

Tulmahk

  • Guest
Re: Version 1.0 has been released!
« Reply #114 on: February 06, 2003, 07:52:20 pm »
Quote:

If anyone is having trouble getting their head around the concepts of the energy stuff, just follow the guided tour in the ReadMe file...




Hahaha!  Anyone named Tulmahk, you mean.  

Well, it's good to have a cement-headed Romulan test your stuff out.  Just to see if it's truly 'Tulmahk proof'.  

I'm currently taking bets on whether the power sliders are going to work for me.  I've got 500 quatloos riding on this, so if you see me flying around in a Talon on SFC3.net 4 Corners, you'll know I lost!  

Thanks once again for all your hard work.  People like you make this game more fun than it has any right to be.  And thanks to the hosters Cocomoe and BattleClinic.com, too.  It's always useful to actually be able to get ahold of the thing.  I'll let you know how things go.

And Taldren?  Hire this guy please.  There's only so much government cheese a talented programmer can stomach, you know?    

Vertigo

  • Guest
Re: Version 1.0 has been released!
« Reply #115 on: February 06, 2003, 09:27:12 pm »

Tulmahk

  • Guest
Re: Version 1.0 has been released!
« Reply #116 on: February 06, 2003, 11:09:08 pm »
When using a new version of an old program, I always test the old features first to find out if they're still working.  In this case, and because it is me , they are not working.

Well, my old friend the Throttle bug is back.  Here's the log text:

*********** SFC3MACRO Message Log ***********


Message Logging Level = 1.
Could not find "=" sign.
Could not find "=" sign.
Could not find "=" sign.
Could not find action name.
Could not find "=" sign.
Could not find "=" sign.
Could not find "=" sign.
Could not find "=" sign.
Invalid command line.
Could not find "=" sign.
Invalid command line.
Could not find "=" sign.
Could not find "=" sign.
Could not find "=" sign.
Could not find "=" sign.
Invalid Set line.
---------------------------
List of Energy profiles.
Energy Profile 0:
   default = 118P, 113H, 114S
   balanced = 159P, 100H, 100S
   max_photon = 10P, 200H, 100S
   max_shields = 58P, 72H, 200S
Energy Profile 1:
   optimal = 100P, 100H, 100S
---------------------------
Could not find matching resolution (640 was returned).
QueryDisplay() failed.
Error in initialization.
SFC3 Macro has been started.
SFC3 Macro has been stopped.
SFC3 is closing.  Closing Log.

I don't know what any of it means, but I'm betting another 500 quatloos that you do (I've already lost 500, that's the luck of the Romulans, eh?)

Maybe I'm doing something really obviously wrong?  I'll test it with a higher delay number (50 rather than the default 20) and maybe that'll clear it up.  My cpu is a Duron 750, so it might need more time to process everything.

***LATER...

No, setting the delay to 50 didn't help at all.  Exactly the same error report as above.  I guess something got 'broken' in the process of adding new functionality.  Hmmm, maybe Activision isn't off their rocker after all?  
« Last Edit: February 06, 2003, 11:20:15 pm by Tulmahk »

Vertigo

  • Guest
Re: Version 1.0 has been released!
« Reply #117 on: February 06, 2003, 11:24:46 pm »
Quote:


Could not find matching resolution (640 was returned).
QueryDisplay() failed.
Error in initialization.
SFC3 Macro has been started.
SFC3 Macro has been stopped.
SFC3 is closing.  Closing Log.





Are you running this at 640x480?  That's what the utility is reporting, and it isn't capable of handling it.  As far as I know, the minimum resolution is 1024x768, so I'm curious about that.

Also, those continual "=" messages are annoying, and I can't figure out why you keep getting them.  Sigh.  Whats the locale (language) on your computer?

OK, try this:  Goto into the INI file.  Set this:

MessageLevel=3
EnableLogging=1

Start the program.  Press ALT-F4 to exit.  Press NO other keys, don't mouse the mouse.  Get in, get out.  Then cut n' paste the log here.  It will prbobably be quite long.

Don't worry about breaking my stuff.  You find bugs now, or you find them later.  Given the choice, I'll find them now.  

Tulmahk

  • Guest
Re: Version 1.0 has been released!
« Reply #118 on: February 06, 2003, 11:28:34 pm »
Guess what?  I figured out what was happening!

I reinstalled the game, so the INTRO MOVIES started playing on startup again!  I had previously deleted them.

So, your program is polling for screen resolution WHILE THE MOVIES ARE PLAYING.  Wow, I can't believe I figured it out.  My head hurts now.

And now that I've deleted the intro movies, everything works great, as advertised.  (Until I find the next bug, of course! )
« Last Edit: February 06, 2003, 11:31:23 pm by Tulmahk »

Tulmahk

  • Guest
Re: Version 1.0 has been released!
« Reply #119 on: February 06, 2003, 11:40:32 pm »
Here is the additional information you requested:

My computer is using English (United States).

*********** SFC3MACRO Message Log ***********


Message Logging Level = 3.
Value of Full Path: "D:\PROGRAM FILES\ACTIVISION\SFC3".
Show Log on Exit: N.
Throttle Scan Width = 202.
Green Bar Color = 0x5ac300.
Red Bar Color = 0x20ff.
Command List as read from INI:
----------------------
; ***** General commands *****
UpThrottle=S
DownThrottle=A
OnOff=ENTER, RunAlways, PassThru
; ***** Energy commands *****
LoadHullProfile1=F1, CTRL
LoadHullProfile2=F2, CTRL
LoadHullProfile3=F3, CTRL
CyclePreviousEnergySet=Q
CycleNextEnergySet=E
SaveCustomEnergySet=ENTER, SHIFT
; ***** Troubleshooting commands. *****
ShowLog=F6, RunAlWays
;AdvancedDisplayQuery=F7, RunAlWays  <- Currently disabled.
;------------------------------------------------------------------------------
; Energy Profiles - This is your list of energy profiles.  Each Profile is
; intended to be used with one hull configuration.  Within each profile, you
; can define multiple Sets, which you can cycle through in-game.  
;
; For instructions about using and creating Profiles, see Energy Profiles.txt.
;

----------------------
Parsing command line "; ***** general commands *****".
Could not find "=" sign.
Command string "; ***** general commands *****" could not be parsed.
Parsing command line "upthrottle=s".
Action name is "upthrottle".
Looking up action name.
Comparing "upthrottle" to "UpThrottle".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 1 chars into string.
VKEY token found: "s".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "downthrottle=a".
Action name is "downthrottle".
Looking up action name.
Comparing "downthrottle" to "UpThrottle".
Comparing "downthrottle" to "DownThrottle".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 1 chars into string.
VKEY token found: "a".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "onoff=enter, runalways, passthru".
Action name is "onoff".
Looking up action name.
Comparing "onoff" to "UpThrottle".
Comparing "onoff" to "DownThrottle".
Comparing "onoff" to "ShowLog".
Comparing "onoff" to "AdvancedDisplayQuery".
Comparing "onoff" to "OnOff".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 5 chars into string.
VKEY token found: "enter".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found RUNWHENOFF flag.
Found PASSTHRU flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "; ***** energy commands *****".
Could not find "=" sign.
Command string "; ***** energy commands *****" could not be parsed.
Parsing command line "loadhullprofile1=f1, ctrl".
Action name is "loadhullprofile1".
Looking up action name.
Comparing "loadhullprofile1" to "UpThrottle".
Comparing "loadhullprofile1" to "DownThrottle".
Comparing "loadhullprofile1" to "ShowLog".
Comparing "loadhullprofile1" to "AdvancedDisplayQuery".
Comparing "loadhullprofile1" to "OnOff".
Comparing "loadhullprofile1" to "LoadHullProfile1".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 2 chars into string.
VKEY token found: "f1".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found CTRL flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "loadhullprofile2=f2, ctrl".
Action name is "loadhullprofile2".
Looking up action name.
Comparing "loadhullprofile2" to "UpThrottle".
Comparing "loadhullprofile2" to "DownThrottle".
Comparing "loadhullprofile2" to "ShowLog".
Comparing "loadhullprofile2" to "AdvancedDisplayQuery".
Comparing "loadhullprofile2" to "OnOff".
Comparing "loadhullprofile2" to "LoadHullProfile1".
Comparing "loadhullprofile2" to "LoadHullProfile2".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 2 chars into string.
VKEY token found: "f2".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found CTRL flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "loadhullprofile3=f3, ctrl".
Action name is "loadhullprofile3".
Looking up action name.
Comparing "loadhullprofile3" to "UpThrottle".
Comparing "loadhullprofile3" to "DownThrottle".
Comparing "loadhullprofile3" to "ShowLog".
Comparing "loadhullprofile3" to "AdvancedDisplayQuery".
Comparing "loadhullprofile3" to "OnOff".
Comparing "loadhullprofile3" to "LoadHullProfile1".
Comparing "loadhullprofile3" to "LoadHullProfile2".
Comparing "loadhullprofile3" to "LoadHullProfile3".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 2 chars into string.
VKEY token found: "f3".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found CTRL flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "cyclepreviousenergyset=q".
Action name is "cyclepreviousenergyset".
Looking up action name.
Comparing "cyclepreviousenergyset" to "UpThrottle".
Comparing "cyclepreviousenergyset" to "DownThrottle".
Comparing "cyclepreviousenergyset" to "ShowLog".
Comparing "cyclepreviousenergyset" to "AdvancedDisplayQuery".
Comparing "cyclepreviousenergyset" to "OnOff".
Comparing "cyclepreviousenergyset" to "LoadHullProfile1".
Comparing "cyclepreviousenergyset" to "LoadHullProfile2".
Comparing "cyclepreviousenergyset" to "LoadHullProfile3".
Comparing "cyclepreviousenergyset" to "LoadHullProfile4".
Comparing "cyclepreviousenergyset" to "LoadHullProfile5".
Comparing "cyclepreviousenergyset" to "LoadHullProfile6".
Comparing "cyclepreviousenergyset" to "LoadHullProfile7".
Comparing "cyclepreviousenergyset" to "LoadHullProfile8".
Comparing "cyclepreviousenergyset" to "LoadHullProfile9".
Comparing "cyclepreviousenergyset" to "LoadHullProfile10".
Comparing "cyclepreviousenergyset" to "CyclePreviousEnergySet".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 1 chars into string.
VKEY token found: "q".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "cyclenextenergyset=e".
Action name is "cyclenextenergyset".
Looking up action name.
Comparing "cyclenextenergyset" to "UpThrottle".
Comparing "cyclenextenergyset" to "DownThrottle".
Comparing "cyclenextenergyset" to "ShowLog".
Comparing "cyclenextenergyset" to "AdvancedDisplayQuery".
Comparing "cyclenextenergyset" to "OnOff".
Comparing "cyclenextenergyset" to "LoadHullProfile1".
Comparing "cyclenextenergyset" to "LoadHullProfile2".
Comparing "cyclenextenergyset" to "LoadHullProfile3".
Comparing "cyclenextenergyset" to "LoadHullProfile4".
Comparing "cyclenextenergyset" to "LoadHullProfile5".
Comparing "cyclenextenergyset" to "LoadHullProfile6".
Comparing "cyclenextenergyset" to "LoadHullProfile7".
Comparing "cyclenextenergyset" to "LoadHullProfile8".
Comparing "cyclenextenergyset" to "LoadHullProfile9".
Comparing "cyclenextenergyset" to "LoadHullProfile10".
Comparing "cyclenextenergyset" to "CyclePreviousEnergySet".
Comparing "cyclenextenergyset" to "CycleNextEnergySet".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 1 chars into string.
VKEY token found: "e".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "savecustomenergyset=enter, shift".
Action name is "savecustomenergyset".
Looking up action name.
Comparing "savecustomenergyset" to "UpThrottle".
Comparing "savecustomenergyset" to "DownThrottle".
Comparing "savecustomenergyset" to "ShowLog".
Comparing "savecustomenergyset" to "AdvancedDisplayQuery".
Comparing "savecustomenergyset" to "OnOff".
Comparing "savecustomenergyset" to "LoadHullProfile1".
Comparing "savecustomenergyset" to "LoadHullProfile2".
Comparing "savecustomenergyset" to "LoadHullProfile3".
Comparing "savecustomenergyset" to "LoadHullProfile4".
Comparing "savecustomenergyset" to "LoadHullProfile5".
Comparing "savecustomenergyset" to "LoadHullProfile6".
Comparing "savecustomenergyset" to "LoadHullProfile7".
Comparing "savecustomenergyset" to "LoadHullProfile8".
Comparing "savecustomenergyset" to "LoadHullProfile9".
Comparing "savecustomenergyset" to "LoadHullProfile10".
Comparing "savecustomenergyset" to "CyclePreviousEnergySet".
Comparing "savecustomenergyset" to "CycleNextEnergySet".
Comparing "savecustomenergyset" to "SaveCustomEnergySet".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 5 chars into string.
VKEY token found: "enter".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found SHIFT flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line "; ***** troubleshooting commands. *****".
Could not find "=" sign.
Command string "; ***** troubleshooting commands. *****" could not be parsed.
Parsing command line "showlog=f6, runalways".
Action name is "showlog".
Looking up action name.
Comparing "showlog" to "UpThrottle".
Comparing "showlog" to "DownThrottle".
Comparing "showlog" to "ShowLog".
Tokens match.
Action name found.
Looking for the VKEY token.
Delimiter found 2 chars into string.
VKEY token found: "f6".
Looking up VKEY token.
Vkey token found.
Scanning for flags.
Found RUNWHENOFF flag.
Flag search finished.
Command entry complete; adding to list.
Command entry has been added.
Parsing command line ";advanceddisplayquery=f7, runalways  <- currently disabled.".
Action name is ";advanceddisplayquery".
Looking up action name.
Comparing ";advanceddisplayquery" to "UpThrottle".
Comparing ";advanceddisplayquery" to "DownThrottle".
Comparing ";advanceddisplayquery" to "ShowLog".
Comparing ";advanceddisplayquery" to "AdvancedDisplayQuery".
Comparing ";advanceddisplayquery" to "OnOff".
Comparing ";advanceddisplayquery" to "LoadHullProfile1".
Comparing ";advanceddisplayquery" to "LoadHullProfile2".
Comparing ";advanceddisplayquery" to "LoadHullProfile3".
Comparing ";advanceddisplayquery" to "LoadHullProfile4".
Comparing ";advanceddisplayquery" to "LoadHullProfile5".
Comparing ";advanceddisplayquery" to "LoadHullProfile6".
Comparing ";advanceddisplayquery" to "LoadHullProfile7".
Comparing ";advanceddisplayquery" to "LoadHullProfile8".
Comparing ";advanceddisplayquery" to "LoadHullProfile9".
Comparing ";advanceddisplayquery" to "LoadHullProfile10".
Comparing ";advanceddisplayquery" to "CyclePreviousEnergySet".
Comparing ";advanceddisplayquery" to "CycleNextEnergySet".
Comparing ";advanceddisplayquery" to "SaveCustomEnergySet".
FOund no matching tokens.
Could not find action name.
Command string ";advanceddisplayquery=f7, runalways  <- currently disabled." could not be parsed.
Parsing command line ";------------------------------------------------------------------------------".
Could not find "=" sign.
Command string ";------------------------------------------------------------------------------" could not be parsed.
Parsing command line "; energy profiles - this is your list of energy profiles.  each profile is ".
Could not find "=" sign.
Command string "; energy profiles - this is your list of energy profiles.  each profile is " could not be parsed.
Parsing command line "; intended to be used with one hull configuration.  within each profile, you ".
Could not find "=" sign.
Command string "; intended to be used with one hull configuration.  within each profile, you " could not be parsed.
Parsing command line "; can define multiple sets, which you can cycle through in-game.  ".
Could not find "=" sign.
Command string "; can define multiple sets, which you can cycle through in-game.  " could not be parsed.
Parsing command line ";".
Invalid command line.
Command string ";" could not be parsed.
Parsing command line "; for instructions about using and creating profiles, see energy profiles.txt.".
Could not find "=" sign.
Command string "; for instructions about using and creating profiles, see energy profiles.txt." could not be parsed.
Parsing command line ";".
Invalid command line.
Command string ";" could not be parsed.
Summary of all bound commands
----------------------------
 0) VKey:  83  CommandFunc: 0x 9E52AD0                            
 1) VKey:  65  CommandFunc: 0x 9E52AE0                            
 2) VKey:  13  CommandFunc: 0x 9E52B10               RUNALWAYS PASS
 3) VKey: 112  CommandFunc: 0x 9E52B60      CTRL                  
 4) VKey: 113  CommandFunc: 0x 9E52B70      CTRL                  
 5) VKey: 114  CommandFunc: 0x 9E52B80      CTRL                  
 6) VKey:  81  CommandFunc: 0x 9E52C00                            
 7) VKey:  69  CommandFunc: 0x 9E52C10                            
 8) VKey:  13  CommandFunc: 0x 9E52C20 SHFT                        
 9) VKey: 117  CommandFunc: 0x 9E52AF0               RUNALWAYS    
----------------------------
Fetching INI section name "[Hull 1 Energy Profile]".
Energy profile [Hull 1 Energy Profile] as read from INI:
----------------------
; Energy profile for the default Akira in Skirmish.
DEFAULT=118p, 113h, 114s
BALANCED=159p, 100h, 100s
MAX_PHOTON=10p, 200h, 100s
MAX_SHIELDS=58p, 72h, 200s

----------------------
Parsing Energy Set Line "; energy profile for the default akira in skirmish.".
Could not find "=" sign.
Parsing Energy Set Line "default=118p, 113h, 114s".
Set name is "default".
Processing Token "118p".
Number component: 118.
Bar is Primary.
Processing Token " 113h".
Number component: 113.
Bar is Heavy.
Processing Token " 114s".
Number component: 114.
Bar is Shields.
Adding an energy set.
Energy set has been added.
Parsing Energy Set Line "balanced=159p, 100h, 100s".
Set name is "balanced".
Processing Token "159p".
Number component: 159.
Bar is Primary.
Processing Token " 100h".
Number component: 100.
Bar is Heavy.
Processing Token " 100s".
Number component: 100.
Bar is Shields.
Adding an energy set.
Energy set has been added.
Parsing Energy Set Line "max_photon=10p, 200h, 100s".
Set name is "max_photon".
Processing Token "10p".
Number component: 10.
Bar is Primary.
Processing Token " 200h".
Number component: 200.
Bar is Heavy.
Processing Token " 100s".
Number component: 100.
Bar is Shields.
Adding an energy set.
Energy set has been added.
Parsing Energy Set Line "max_shields=58p, 72h, 200s".
Set name is "max_shields".
Processing Token "58p".
Number component: 58.
Bar is Primary.
Processing Token " 72h".
Number component: 72.
Bar is Heavy.
Processing Token " 200s".
Number component: 200.
Bar is Shields.
Adding an energy set.
Energy set has been added.
Fetching INI section name "[Hull 2 Energy Profile]".
Energy profile [Hull 2 Energy Profile] as read from INI:
----------------------
Optimal=100p, 100h, 100s
;------------------------------------------------------------------------------
; Custom Energy Sets - Whenever you record an energy set (using the
; SaveCustomEnergySet command), it is stored here.
;

----------------------
Parsing Energy Set Line "optimal=100p, 100h, 100s".
Set name is "optimal".
Processing Token "100p".
Number component: 100.
Bar is Primary.
Processing Token " 100h".
Number component: 100.
Bar is Heavy.
Processing Token " 100s".
Number component: 100.
Bar is Shields.
Adding an energy set.
Energy set has been added.
Parsing Energy Set Line ";------------------------------------------------------------------------------".
Could not find "=" sign.
Parsing Energy Set Line "; custom energy sets - whenever you record an energy set (using the ".
Could not find "=" sign.
Parsing Energy Set Line "; savecustomenergyset command), it is stored here.".
Could not find "=" sign.
Parsing Energy Set Line ";".
Invalid Set line.
Fetching INI section name "[Hull 3 Energy Profile]".
Energy profile [Hull 3 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 4 Energy Profile]".
Energy profile [Hull 4 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 5 Energy Profile]".
Energy profile [Hull 5 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 6 Energy Profile]".
Energy profile [Hull 6 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 7 Energy Profile]".
Energy profile [Hull 7 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 8 Energy Profile]".
Energy profile [Hull 8 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 9 Energy Profile]".
Energy profile [Hull 9 Energy Profile] as read from INI:
----------------------

----------------------
Fetching INI section name "[Hull 10 Energy Profile]".
Energy profile [Hull 10 Energy Profile] as read from INI:
----------------------

----------------------
---------------------------
List of Energy profiles.
Energy Profile 0:
   default = 118P, 113H, 114S
   balanced = 159P, 100H, 100S
   max_photon = 10P, 200H, 100S
   max_shields = 58P, 72H, 200S
Energy Profile 1:
   optimal = 100P, 100H, 100S
---------------------------
Minimum wait time for Proxy: 50.
Successfully read from INI file.
Querying Display.
Getting DC.
DC has been gotten.
Width is 1024.
Releasing DC.
DC released.
Throttle index is 0.
QueryDisplay() succeeded.
Applying throttle offsets.
Throttle offsets have been applied.
Energy subsystem initializing.
Creating proxy mutex.
Mutex created.
Creating singaling event.
Event created.
Creating the timing thread.
Thread created.
Initialization complete.
Initialization complete.
-----------------------
Detected key, VK = 18, Code = 0, lParam = 0x20380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Timing thread is going to sleep.
Detected key, VK = 18, Code = 0, lParam = 0x60380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Detected key, VK = 18, Code = 0, lParam = 0x60380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Detected key, VK = 18, Code = 0, lParam = 0x60380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Detected key, VK = 18, Code = 0, lParam = 0x60380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Detected key, VK = 18, Code = 0, lParam = 0x60380001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (18, 83).
match failed.
Trying next command.
Matching virtual key codes (18, 65).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 112).
match failed.
Trying next command.
Matching virtual key codes (18, 113).
match failed.
Trying next command.
Matching virtual key codes (18, 114).
match failed.
Trying next command.
Matching virtual key codes (18, 81).
match failed.
Trying next command.
Matching virtual key codes (18, 69).
match failed.
Trying next command.
Matching virtual key codes (18, 13).
match failed.
Trying next command.
Matching virtual key codes (18, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
Detected key, VK = 115, Code = 0, lParam = 0x203E0001.
----------
Keyboard Handler invoked, RunState = Running.
Attempting to process a keystroke.
Matching virtual key codes (115, 83).
match failed.
Trying next command.
Matching virtual key codes (115, 65).
match failed.
Trying next command.
Matching virtual key codes (115, 13).
match failed.
Trying next command.
Matching virtual key codes (115, 112).
match failed.
Trying next command.
Matching virtual key codes (115, 113).
match failed.
Trying next command.
Matching virtual key codes (115, 114).
match failed.
Trying next command.
Matching virtual key codes (115, 81).
match failed.
Trying next command.
Matching virtual key codes (115, 69).
match failed.
Trying next command.
Matching virtual key codes (115, 13).
match failed.
Trying next command.
Matching virtual key codes (115, 117).
match failed.
Trying next command.
No commands matched.
Handler exiting, did not eat keystroke.
SFC3 is closing.  Closing Log.
Deleting command list.
Deleted 10 commands.
Deallocating Energy config.
Deleted 4 Energy Nodes.
Deleted 1 Energy Nodes.
Deallocation complete.

Welcome to the dryest, least interesting post on Taldren BBS!    I hope this helps.  If I can assist in any other way, please let me know.