From 691cdf0cf029db15a44e0460fee7c3817c7a8c2d Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:18:12 -0500 Subject: [PATCH 1/9] updated to INI control instead of Access DB --- HatControl.vb | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/HatControl.vb b/HatControl.vb index 9a2d077..f035585 100644 --- a/HatControl.vb +++ b/HatControl.vb @@ -2,33 +2,34 @@ Imports System.Data.OleDb Module HatControl 'we get the hat IDs and names from the database - Public Sub hatsimulator(ByVal SQLrst As OleDbDataReader, ByVal SQLcnt As OleDbConnection, ByVal SQLcmd As OleDbCommand) - SQLcmd = New OleDbCommand("SELECT * FROM skyhats", SQLcnt) - SQLrst = SQLcmd.ExecuteReader - While SQLrst.Read - Form1.ComboBox1.Items.Insert(SQLrst("ID"), SQLrst("hatname")) - End While - SQLrst.Close() + Public Sub hatsimulator(ByVal exepath As String) + Dim buffer As String + Dim count As Integer + count = 0 + Do + buffer = ReadIni(exepath & "SkylanderDB.ini", "skyhats", count, "") + If buffer <> "" Then + Form1.ComboBox1.Items.Insert(count, buffer) + Else + Exit Do + End If + count = count + 1 + Loop + End Sub 'we get which hat is written in the figure Public Function gethat(ByVal hatid1 As Byte, ByVal hatid2 As Byte, ByVal hatid3 As Byte, ByVal hatid4 As Byte) As Integer If hatid1 <> 0 Then gethat = Int(hatid1) - Exit Function - End If - If hatid2 <> 0 Then + ElseIf hatid2 <> 0 Then gethat = Int(hatid2) - Exit Function - End If - If hatid3 <> 0 Then + ElseIf hatid3 <> 0 Then gethat = Int(hatid3) - Exit Function - End If - If hatid4 <> 0 Then + ElseIf hatid4 <> 0 Then gethat = Int(hatid4) + 255 - Exit Function + Else + Return 0 End If - Return 0 End Function End Module From d2e31945fb88fadd36a19af05e413d63d2838cc3 Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:19:02 -0500 Subject: [PATCH 2/9] updated to INI control instead of Access DB --- Form1.vb | 101 +++++++++++++++++-------------------------------------- 1 file changed, 31 insertions(+), 70 deletions(-) diff --git a/Form1.vb b/Form1.vb index a32bbd9..1705b99 100644 --- a/Form1.vb +++ b/Form1.vb @@ -1,5 +1,4 @@ Option Explicit On -Imports System.Data.OleDb Imports Microsoft.Win32.SafeHandles Imports SkylanderEditor.DeviceManagement @@ -7,6 +6,7 @@ Public Class Form1 Dim skylanderBytes(1023) As Byte Dim outRepoBytes(32) As Byte Dim inRepoBytes(32) As Byte + Dim skyInfo(2) As String Dim skylanderID As Integer Dim skylanderGold As Long Dim skylanderEXP As Long @@ -23,24 +23,15 @@ Public Class Form1 Dim portalHandle As SafeFileHandle - Dim SQLcnt As OleDbConnection - Dim SQLrst As OleDbDataReader - Dim SQLcmd As OleDbCommand - - Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'initialize file dialogs, database connection, hat combobox and CRC calculator table OpenFileDialog1.FileName = "" SaveFileDialog1.FileName = "" - SQLcnt = New OleDbConnection exepath = Application.StartupPath & "\" - SQLcnt.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & exepath & "SkylanderDB.accdb;Persist Security Info=False" - SQLcnt.Open() - - hatsimulator(SQLrst, SQLcnt, SQLcmd) + hatsimulator(exepath) ComboBox1.SelectedIndex = 0 CRCcalculator.inittable() lockControls() @@ -85,7 +76,7 @@ Public Class Form1 skylanderBytes = decryptSkylander(skylanderBytes) readskylandData(skylanderBytes, False) End If - + End Sub Private Sub SaveAsDecryptedSkylanderToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAsDecryptedSkylanderToolStripMenuItem.Click @@ -518,10 +509,9 @@ Public Class Form1 'get skylander ID skylanderID = SwapEndianness(skylanderData(16), skylanderData(17)) - SQLcmd = New OleDbCommand("SELECT * FROM Skylanders WHERE ID = " & skylanderID, SQLcnt) - SQLrst = SQLcmd.ExecuteReader + skyInfo = Split(ReadIni(exepath & "SkylanderDB.ini", "Skylanders", skylanderID, ""), "_") - If Not SQLrst.HasRows Then + If skyInfo(0) = "" Then 'if figure ID is not in database Label7.Text = "Unknown ID: " & skylanderID Label8.Text = "- -" @@ -531,10 +521,9 @@ Public Class Form1 Exit Sub Else - SQLrst.Read() 'get figure name and element - Label7.Text = SQLrst("skyname") - Label8.Text = SQLrst("element") + Label7.Text = skyInfo(0) + Label8.Text = skyInfo(1) 'load skylander picture if available PictureBox1.ImageLocation = exepath & "images\" & Trim(Str(skylanderID)) & ".jpg" 'lock controls if a swapper bottom half, item or stage is opened @@ -575,9 +564,8 @@ Public Class Form1 indexValB = 2 End If - If SQLrst("special").ToString = "Vehicle" Then + If InStr(skyInfo(1), "Vehicle") Then skylanderGold = SwapEndianness(skylanderData(expC), skylanderData(expC + 1)) - Label8.Text = Label8.Text & " Vehicle" TextBox2.Text = skylanderGold TextBox1.Text = 0 ComboBox1.SelectedIndex = 0 @@ -610,7 +598,6 @@ Public Class Form1 End If autom = False unlockControls() - SQLrst.Close() ToolStripStatusLabel1.Text = "Finished Reading" End Sub @@ -637,20 +624,17 @@ Public Class Form1 skylanderData(hatB) = 0 skylanderData(hatC) = 0 skylanderData(hatD) = 0 - End If - If skylanderHat >= 46 And skylanderHat < 97 Then + ElseIf skylanderHat >= 46 And skylanderHat < 97 Then skylanderData(hatB) = skylanderHat skylanderData(hatC) = 0 skylanderData(hatA) = 0 skylanderData(hatD) = 0 - End If - If skylanderHat >= 97 And skylanderHat < 256 Then + ElseIf skylanderHat >= 97 And skylanderHat < 256 Then skylanderData(hatC) = skylanderHat skylanderData(hatB) = 0 skylanderData(hatA) = 0 skylanderData(hatD) = 0 - End If - If skylanderHat >= 256 Then + ElseIf skylanderHat >= 256 Then skylanderData(hatD) = skylanderHat - 255 skylanderData(hatC) = 0 skylanderData(hatB) = 0 @@ -765,65 +749,45 @@ vehicleSkip: If TextBox1.Text <> "" Then If Int(TextBox1.Text) > 197500 Then TextBox1.Text = 197500 - End If - If Int(TextBox1.Text) = 197500 Then + ElseIf Int(TextBox1.Text) = 197500 Then Label9.Text = "Level: 20" - End If - If Int(TextBox1.Text) >= 174300 And Int(TextBox1.Text) < 197500 Then + ElseIf Int(TextBox1.Text) >= 174300 And Int(TextBox1.Text) < 197500 Then Label9.Text = "Level: 19" - End If - If Int(TextBox1.Text) >= 152600 And Int(TextBox1.Text) < 174300 Then + ElseIf Int(TextBox1.Text) >= 152600 And Int(TextBox1.Text) < 174300 Then Label9.Text = "Level: 18" - End If - If Int(TextBox1.Text) >= 132400 And Int(TextBox1.Text) < 152600 Then + ElseIf Int(TextBox1.Text) >= 132400 And Int(TextBox1.Text) < 152600 Then Label9.Text = "Level: 17" - End If - If Int(TextBox1.Text) >= 113700 And Int(TextBox1.Text) < 132400 Then + ElseIf Int(TextBox1.Text) >= 113700 And Int(TextBox1.Text) < 132400 Then Label9.Text = "Level: 16" - End If - If Int(TextBox1.Text) >= 96500 And Int(TextBox1.Text) < 113700 Then + ElseIf Int(TextBox1.Text) >= 96500 And Int(TextBox1.Text) < 113700 Then Label9.Text = "Level: 15" - End If - If Int(TextBox1.Text) >= 85800 And Int(TextBox1.Text) < 96500 Then + ElseIf Int(TextBox1.Text) >= 85800 And Int(TextBox1.Text) < 96500 Then Label9.Text = "Level: 14" - End If - If Int(TextBox1.Text) >= 69200 And Int(TextBox1.Text) < 85800 Then + ElseIf Int(TextBox1.Text) >= 69200 And Int(TextBox1.Text) < 85800 Then Label9.Text = "Level: 13" - End If - If Int(TextBox1.Text) >= 55000 And Int(TextBox1.Text) < 69200 Then + ElseIf Int(TextBox1.Text) >= 55000 And Int(TextBox1.Text) < 69200 Then Label9.Text = "Level: 12" - End If - If Int(TextBox1.Text) >= 43000 And Int(TextBox1.Text) < 55000 Then + ElseIf Int(TextBox1.Text) >= 43000 And Int(TextBox1.Text) < 55000 Then Label9.Text = "Level: 11" - End If - If Int(TextBox1.Text) >= 33000 And Int(TextBox1.Text) < 43000 Then + ElseIf Int(TextBox1.Text) >= 33000 And Int(TextBox1.Text) < 43000 Then Label9.Text = "Level: 10" - End If - If Int(TextBox1.Text) >= 24800 And Int(TextBox1.Text) < 33000 Then + ElseIf Int(TextBox1.Text) >= 24800 And Int(TextBox1.Text) < 33000 Then Label9.Text = "Level: 9" - End If - If Int(TextBox1.Text) >= 18200 And Int(TextBox1.Text) < 24800 Then + ElseIf Int(TextBox1.Text) >= 18200 And Int(TextBox1.Text) < 24800 Then Label9.Text = "Level: 8" - End If - If Int(TextBox1.Text) >= 13000 And Int(TextBox1.Text) < 18200 Then + ElseIf Int(TextBox1.Text) >= 13000 And Int(TextBox1.Text) < 18200 Then Label9.Text = "Level: 7" - End If - If Int(TextBox1.Text) >= 9000 And Int(TextBox1.Text) < 13000 Then + ElseIf Int(TextBox1.Text) >= 9000 And Int(TextBox1.Text) < 13000 Then Label9.Text = "Level: 6" - End If - If Int(TextBox1.Text) >= 6000 And Int(TextBox1.Text) < 9000 Then + ElseIf Int(TextBox1.Text) >= 6000 And Int(TextBox1.Text) < 9000 Then Label9.Text = "Level: 5" - End If - If Int(TextBox1.Text) >= 3800 And Int(TextBox1.Text) < 6000 Then + ElseIf Int(TextBox1.Text) >= 3800 And Int(TextBox1.Text) < 6000 Then Label9.Text = "Level: 4" - End If - If Int(TextBox1.Text) >= 2200 And Int(TextBox1.Text) < 3800 Then + ElseIf Int(TextBox1.Text) >= 2200 And Int(TextBox1.Text) < 3800 Then Label9.Text = "Level: 3" - End If - If Int(TextBox1.Text) >= 1000 And Int(TextBox1.Text) < 2200 Then + ElseIf Int(TextBox1.Text) >= 1000 And Int(TextBox1.Text) < 2200 Then Label9.Text = "Level: 2" - End If - If Int(TextBox1.Text) >= 0 And Int(TextBox1.Text) < 1000 Then + ElseIf Int(TextBox1.Text) >= 0 And Int(TextBox1.Text) < 1000 Then Label9.Text = "Level: 1" End If End If @@ -916,7 +880,6 @@ vehicleSkip: 'cleanup by closing the database and closing the hid handles to the portal Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing - SQLcnt.Close() CloseCommunications(portalHandle) End Sub @@ -925,6 +888,4 @@ vehicleSkip: portalHandle = FindThePortal() End Sub - - End Class From 5dee3bfbe45c292564ab0b1317789bca61acf166 Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:19:41 -0500 Subject: [PATCH 3/9] Delete SkylanderDB.accdb --- SkylanderDB.accdb | Bin 561152 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 SkylanderDB.accdb diff --git a/SkylanderDB.accdb b/SkylanderDB.accdb deleted file mode 100644 index 63947f86acc179e9b0afd97af69e8d23d9cc7660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561152 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�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 From 32461f2ad66c57dcc273c0278e6a5767202d1bbd Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:20:50 -0500 Subject: [PATCH 4/9] INI database file Decided to change into this to avoid the need of MS Access DB framework --- SkylanderDB.ini | 532 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 532 insertions(+) create mode 100644 SkylanderDB.ini diff --git a/SkylanderDB.ini b/SkylanderDB.ini new file mode 100644 index 0000000..b41e376 --- /dev/null +++ b/SkylanderDB.ini @@ -0,0 +1,532 @@ +[Skylanders] +0=Whirlwind_Air +1=Sonic Boom_Air +2=Warnado_Air +3=Lightning Rod_Air +4=Bash_Earth +5=Terrafin_Earth +6=Dino-Rang_Earth +7=Prism Break_Earth +8=Sunburn_Fire +9=Eruptor_Fire +10=Ignitor_Fire +11=Flameslinger_Fire +12=Zap_Water +13=Wham-Shell_Water +14=Gill Grunt_Water +15=Slam Bam_Water +16=Spyro_Magic +17=Voodood_Magic +18=Double Trouble_Magic +19=Trigger Happy_Tech +20=Drobot_Tech +21=Drill Sergeant_Tech +22=Boomer_Tech +23=Wrecking Ball_Magic +24=Camo_Life +25=Zook_Life +26=Stealth Elf_Life +27=Stump Smash_Life +28=Dark Spyro_Magic +29=Hex_Undead +30=Chop Chop_Undead +31=Ghost Roaster_Undead +32=Cynder_Undead +100=Jet Vac_Air +101=Swarm_Air +102=Crusher_Earth +103=Flashwing_Earth +104=Hot Head_Fire +105=Hot Dog_Fire +106=Chill_Water +107=Thumpback_Water +108=Pop Fizz_Magic +109=Ninjini_Magic +110=Bouncer_Tech +111=Sprocket_Tech +112=Tree Rex_Life +113=Shroomboom_Life +114=Eye-Brawl_Undead +115=Fright Rider_Undead +200=Anvil Rain_Item +201=Hidden Treasure_Item +202=Healing Elixir_Item +203=Ghost Swords_Item +204=Time Twister_Item +205=Sky-Iron Shield_Item +206=Winged Boots_Item +207=Sparx Dragonfly_Item +208=Dragonfire Cannon_Item +230=Hand Of Fate_Item +231=Piggy Bank_Item +232=Rocket Ram_Item +233=Tiki Speaky_Item +300=Dragons Peak_Item +301=Empire of Ice_Item +302=Pirate Seas_Item +303=Darklight Crypt_Item +305=Mirror of Mystery_Item +306=Nightmare Express_Item +307=Sunscraper Spire_Item +308=Midnight Museum_Item +404=Legendary Bash_Earth +416=Legendary Spyro_Magic +419=Legendary Trigger Happy_Tech +430=Legendary Chop Chop_Undead +450=Gusto_Air +451=Thunderbolt_Air +452=Fling Kong_Air +453=Blades_Air +454=Wallop_Earth +455=Head Rush_Earth +456=Fist Bump_Earth +457=Rocky Roll_Earth +458=Wildfire_Fire +459=Ka-Boom_Fire +460=Trail Blazer_Fire +461=Torch_Fire +462=Snap Shot_Water +463=Lob-Star_Water +464=Flip Wreck_Water +465=Echo_Water +466=Blastermind_Magic +467=Enigma_Magic +468=Deja Vu_Magic +469=Cobra Cadabra_Magic +470=Jawbreaker_Tech +471=Gearshift_Tech +472=Chopper_Tech +473=Tread Head_Tech +474=Bushwhack_Life +475=Tuff Luck_Life +476=Food Fight_Life +477=High Five_Life +478=Krypt King_Undead +479=Shortcut_Undead +480=Bat Spin_Undead +481=Funny Bone_Undead +482=Knight Light_Light +483=Spotlight_Light +484=Knight Mare_Dark +485=Blackout_Dark +502=Bop_Earth +503=Spry_Magic +504=Hijinx_Undead +505=Terrabite_Earth +506=Breeze_Air +507=Weeruptor_Fire +508=Pet-Vac_Air +509=Small Fry_Fire +510=Drobit_Tech +514=Gill Runt_Water +519=Trigger Snappy_Tech +526=Whisper Elf_Life +540=Barkley_Life +541=Thumpling_Water +542=Mini-Jini_Magic +543=Eye-Small_Undead +601=King Pen_Water +602=Tri-Tip_Earth +603=Chopscotch_Undead +604=Boom Bloom_Life +605=Pit Boss_Undead +606=Barbella_Earth +607=Air Strike_Air +608=Ember_Fire +609=Ambush_Life +610=Dr. Krankcase_Tech +611=Hood Sickle_Dark +612=Tae Kwon Crow_Fire +613=Golden Queen_Earth +614=Wolfgang_Undead +616=Mysticat_Magic +617=Starcast_Dark +618=Buckshot_Magic +619=Aurora_Light +620=Flare Wolf_Fire +621=Chompy Mage_Life +622=Bad Juju_Air +626=Chain Reaction_Tech +627=Kaos_Kaos +628=Wild Storm_Air +630=Crash Bandicoot_Life +631=Dr. Neo Cortex_Tech +1000=Boom Jet_Air (Bottom) +1001=Free Ranger_Air (Bottom) +1002=Rubble Rouser_Earth (Bottom) +1003=Doom Stone_Earth (Bottom) +1004=Blast Zone_Fire (Bottom) +1005=Fire Kraken_Fire (Bottom) +1006=Stink Bomb_Life (Bottom) +1007=Grilla Drilla_Life (Bottom) +1008=Hoot Loop_Magic (Bottom) +1009=Trap Shadow_Magic (Bottom) +1010=Magna Charge_Tech (Bottom) +1011=Spy Rise_Tech (Bottom) +1012=Night Shift_Undead (Bottom) +1013=Rattle Shake_Undead (Bottom) +1014=Freeze Blade_Water (Bottom) +1015=Wash Buckler_Water (Bottom) +2000=Boom Jet_Air +2001=Free Ranger_Air +2002=Rubble Rouser_Earth +2003=Doom Stone_Earth +2004=Blast Zone_Fire +2005=Fire Kraken_Fire +2006=Stink Bomb_Life +2007=Grilla Drilla_Life +2008=Hoot Loop_Magic +2009=Trap Shadow_Magic +2010=Magna Charge_Tech +2011=Spy Rise_Tech +2012=Night Shift_Undead +2013=Rattle Shake_Undead +2014=Freeze Blade_Water +2015=Wash Buckler_Water +3000=Scratch_Air +3001=Pop Thorn_Air +3002=Slobber Tooth_Earth +3003=Scorp_Earth +3004=Fryno_Fire +3005=Smolderdash_Fire +3006=Bumble Blast_Life +3007=Zoo Lou_Life +3008=Dune Bug_Magic +3009=Star Strike_Magic +3010=Countdown_Tech +3011=Wind-Up_Tech +3012=Roller Brawl_Undead +3013=Grim Creeper_Undead +3014=Rip Tide_Water +3015=Punk Shock_Water +3220=Jet Stream_Air Vehicle +3221=Tomb Buggy_Undead Vehicle +3222=Reef Ripper_Water Vehicle +3223=Burn Cycle_Fire Vehicle +3224=Hot Streak_Fire Vehicle +3225=Shark Tank_Earth Vehicle +3226=Thump Truck_Earth Vehicle +3227=Crypt Crusher_Undead Vehicle +3228=Stealth Stinger_Life Vehicle +3231=Dive Bomber_Water Vehicle +3232=Sky Slicer_Air Vehicle +3233=Clown Cruiser_Air Vehicle +3234=Gold Rusher_Tech Vehicle +3235=Shield Striker_Tech Vehicle +3236=Sun Runner_Light Vehicle +3237=Sea Shadow_Dark Vehicle +3238=Splatter Splasher_Magic Vehicle +3239=Soda Skimmer_Magic Vehicle +3240=Barrel Blaster_Tech Vehicle +3241=Buzz Wing_Life Vehicle +3400=Fiesta_Undead +3401=High Volt_Tech +3402=Splat_Magic +3406=Stormblade_Air +3411=Smash Hit_Earth +3412=Spitfire_Fire +3413=Hurricane Jet Vac_Air +3414=Double Dare Trigger Happy_Tech +3415=Super Shot Stealth Elf_Life +3416=Shark Shooter Terrafin_Earth +3417=Bone Bash Roller Brawl_Undead +3420=Big Bubble Pop Fizz_Magic +3421=Lava Lance Eruptor_Fire +3422=Deep Dive Gill Grunt_Water +3423=Turbo Charge Donkey Kong_Life +3424=Hammer Slam Bowser_Fire +3425=Dive Clops_Water +3426=Astroblast_Light +3427=Nightfall_Dark +3428=Thrillipede_Life +3500=Sky Trophy_Item +3501=Land Trophy_Item +3502=Sea Trophy_Item +3503=Kaos Trophy_Item +624=Blaster-Tron_Light +615=Pain-Yatta_Magic +625=Ro-Bow_Tech +629=Tidepool_Water +623=Grave Clobber_Water + +[skyhats] +0=No Hat +1=Combat Hat +2=Napoleon Hat +3=Spy Gear +4=Miner Hat +5=General's Hat +6=Pirate Hat +7=Propeller Hat +8=Coonskin Cap +9=Straw Hat +10=Fancy Hat +11=Top Hat +12=Viking Helmet +13=Spiked Hat +14=Anvil Hat +15=Beret +16=Birthday Hat +17=Bone Head +18=Bowler Hat +19=Wabbit Ears +20=Tropical Turban +21=Chef Hat +22=Cowboy Hat +23=Rocker Hair +24=Royal Crown +25=Lil Devil +26=Eye Hat +27=Fez +28=Crown of Light +29=Jester Hat +30=Winged Hat +31=Moose Hat +32=Plunger Head +33=Pan Hat +34=Rocket Head +35=Santa Hat +36=Tiki Hat +37=Trojan Helmet +38=Unicorn Hat +39=Wizard Hat +40=Pumpkin Hat +41=Pirate Doo Rag +42=Cossack Hat +43=Flower Hat +44=Ballon Hat +45=Happy Birthday! +46=Vintage Baseball Cap +47=No Hat +48=Bowling Pin +49=Officer Hat +50=Firefighter Hat +51=Graduation Hat +52=Lampshade Hat +53=Mariachi Hat +54=No Hat +55=Paper Fast Food Hat +56=Pilgrim Hat +57=Police Siren Hat +58=Purple Fedora +59=Archer Hat +60=No Hat +61=Safari Hat +62=Sailor Hat +63=No Hat +64=Dancer Hat +65=Traffic Cone Hat +66=Turban +67=Battle Helmet +68=Bottle Cap Hat +69=No Hat +70=Carrot Hat +71=No Hat +72=Elf Hat +73=Fishing Hat +74=Future Hat +75=Nefertiti Hat +76=No Hat +77=Pants Hat +78=Princess Hat +79=Toy Soldier Hat +80=Trucker Hat +81=Umbrella Hat +82=Showtime Hat +83=Caesar Hat +84=Flower Fairy Hat +85=Funnel Hat +86=Scrumshanks Hat +87=Biter Hat +88=Atom Hat +89=Sombrero +90=Rasta Hat +91=Kufi Hat +92=Knight Helm +93=Dangling Carrot Hat +94=Bronze Top Hat +95=Silver Top Hat +96=Gold Top Hat +97=Rain Hat +98=The Outsider +99=Greeble Hat +100=Volcano Hat +101=Boater Hat +102=Stone Hat +103=Stovepipe Hat +104=Boonie Hat +105=Sawblade Hat +106=Zombeanie +107=Gaucho Hat +108=Roundlet +109=Capuchon +110=Tricorn Hat +111=Peacock Hat +112=Bearskin Hat +113=Fishbone Hat +114=Ski Cap +115=Crown of Frost +116=Four Winds Hat +117=Beacon Hat +118=Flower Garland +119=Tree Branch +120=Aviator's Cap +121=Asteroid Hat +122=Crystal Hat +123=Creepy Helm +124=Fancy Ribbon +125=Deeply Boppers +126=Beanie +127=Leprechaun Hat +128=Shark Hat +129=Lifesaver Hat +130=Glittering Tiara +131=Great Helm +132=Space Helmet +133=UFO Hat +134=Whirlwind Diadem +135=Obsidian Helm +136=Lilypad Hat +137=Crown of Flames +138=Runic Headband +139=Cloclwork Hat +140=Cactus Hat +141=Skullhelm +142=Gloop Hat +143=Puma Hat +144=Elephant Hat +145=Tiger Skin Cap +146=Teeth Top Hat +147=Turkey Hat +148=Eyefro +149=Bacon Bandana +150=Awesome Hat +151=Card Shark Hat +152=Jolly Hat +153=Kickoff Hat +154=Springtime Hat +155=Beetle Hat +156=Brain Hat +157=Brainiac Hat +158=Bucket Hat +159=Desert Crown +160=Ceiling Fan Hat +161=Imperial Hat +162=Clown Classic Hat +163=Clown Bowler Hat +164=Colander Hat +165=Kepi Hat +166=Cornucopia Hat +167=Cubano Hat +168=Cycling Hat +169=Daisy Crown +170=Dragon Skull +171=Outback Hat +172=Lil' Elf Hat +173=Generalissimo +174=Garrison Hat +175=Gondolier Hat +176=Hunting Hat +177=Juicer Hat +178=Kokoshnik +179=Medic Hat +180=Melon Hat +181=Mountie Hat +182=Nurse Hat +183=Palm Hat +184=Paperboy Hat +185=Parrot Nest +186=Old-Time Movie Hat +187=Classic Pot Hat +188=Radar Hat +189=Crazy Light Bulb Hat +190=Rubber Glove Hat +191=Rugby Hat +192=Metal Fin Hat +193=Sleuth Hat +194=Shower Cap +195=Bobby +196=Hedgehog Hat +197=Steampunk Hat +198=Flight Attendant Hat +199=Monday Hat +200=Sherpa Hat +201=Trash Lid +202=Turtle Hat +203=Extreme Viking Hat +204=Scooter Hat +205=Volcano Island Hat +206=Synchronized Swimming Cap +207=William Tell Hat +208=Tribal Hat +209=Rude Boy Hat +210=Pork Pie Hat +211=Alarm Clock Hat +212=Batter Up Hat +213=Horns Be With You Hat +214=Croissant Hat +215=Weather Vane Hat +216=Rainbow Hat +217=Eye of Kaos Hat +218=Bat Hat +219=Light Bulb Hat +220=Firefly Jar +221=Shadow Ghost Hat +222=Lighthouse Beacon Hat +223=Tin Foil Hat +224=Night Cap +225=Storm Hat +226=Gold Arkeyan Helm +227=Toucan Hat +228=Pyramid Hat +229=Miniature Skylands Hat +230=Wizard Hat +231=No Hat +232=Candy Cane Hat +233=Eggshell Hat +234=Candle Hat +235=Dark Helm +236=Planet Hat +237=Bellhop Hat +238=Bronze Arkeyan Helm +239=Silver Arkeyan Helm +240=Raver Hat +241=Shire Hat +242=Mongol Hat +243=Skipper Hat +244=Medieval Bard Hat +245=Wooden Hat +246=Carnival Hat +247=Coconut Hat +248=Model Home Hat +249=Ice Cream Hat +250=Molekin Mountain Hat +251=Sheepwrecked Hat +252=Core of Light Hat +253=Octavius Cloptimus Hat +254=No Hat +255=No Hat +256=No Hat +257=No Hat +258=No Hat +259=Dive Bomber Hat +260=Sea Shadow Hat +261=Burn-Cycle Header +262=Reef Ripper Helmet +263=Jet Stream Helmet +264=Soda Skimmer Shower Cap +265=Tomb Buggy Skullcap +266=Stealth Stinger Beanie +267=Shark Tank Topper +268=Gold Rusher Cog Cap +269=Splatter Splasher Spires +270=Thump TruckerÆs Hat +271=Buzz Wing Hat +272=Shield Striker Helmet +273=Sun Runner Spikes +274=Hot Streak Headpiece +275=Sky Slicer Hat +276=Crypt Crusher Cap +277=Mags Hat +278=Kaos Krown +279=Eon's Helm From a3588f08ba72950e6385e815d5d9e437c09863bf Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:22:01 -0500 Subject: [PATCH 5/9] INI control Decided to change to INI to avoid the need of MS Access DB framework --- modINI.vb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 modINI.vb diff --git a/modINI.vb b/modINI.vb new file mode 100644 index 0000000..48fc186 --- /dev/null +++ b/modINI.vb @@ -0,0 +1,22 @@ +Module modINI + Private Declare Unicode Function WritePrivateProfileString Lib "kernel32" _ + Alias "WritePrivateProfileStringW" (ByVal lpApplicationName As String, _ + ByVal lpKeyName As String, ByVal lpString As String, _ + ByVal lpFileName As String) As Int32 + + Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _ + Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _ + ByVal lpKeyName As String, ByVal lpDefault As String, _ + ByVal lpReturnedString As String, ByVal nSize As Int32, _ + ByVal lpFileName As String) As Int32 + + Public Sub writeIni(ByVal iniFileName As String, ByVal Section As String, ByVal ParamName As String, ByVal ParamVal As String) + Dim Result As Integer = WritePrivateProfileString(Section, ParamName, ParamVal, iniFileName) + End Sub + + Public Function ReadIni(ByVal IniFileName As String, ByVal Section As String, ByVal ParamName As String, ByVal ParamDefault As String) As String + Dim ParamVal As String = Space$(1024) + Dim LenParamVal As Long = GetPrivateProfileString(Section, ParamName, ParamDefault, ParamVal, Len(ParamVal), IniFileName) + ReadIni = Left$(ParamVal, LenParamVal) + End Function +End Module From c11c15d0b252c84ad9c7c0f78c306c3297740a2c Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:25:04 -0500 Subject: [PATCH 6/9] bugfix for the blank skylander verification i dun goofed with the loop counts --- skyDecrypter.vb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skyDecrypter.vb b/skyDecrypter.vb index d3fa3d1..4c0edbb 100644 --- a/skyDecrypter.vb +++ b/skyDecrypter.vb @@ -116,7 +116,7 @@ Module skyDecrypter Exit Do End If h = h + 1 - Loop While h <= 16 + Loop While h <= 144 h = 576 Do @@ -125,7 +125,8 @@ Module skyDecrypter Exit Do End If h = h + 1 - Loop While h <= 16 + Loop While h <= 592 + If areaA And areaB Then Return False From 9f9d108830ba1e1d7713f1d93c7092789d6f82b9 Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:27:34 -0500 Subject: [PATCH 7/9] updated project configuration files --- My Project/AssemblyInfo.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 35ad64a..0e3ba1e 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + From 6ca09297ea7c66b1366e570dd434166f068e8a9f Mon Sep 17 00:00:00 2001 From: SigmaDolphin <49135857+SigmaDolphin@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:30:20 -0500 Subject: [PATCH 8/9] Update Project file (modINI) --- SkylanderEditor.vbproj | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/SkylanderEditor.vbproj b/SkylanderEditor.vbproj index f0b6c38..55d54c3 100644 --- a/SkylanderEditor.vbproj +++ b/SkylanderEditor.vbproj @@ -15,6 +15,21 @@ WindowsForms v4.0 Client + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 1 + 1.0.0.%2a + false + false + true x86 @@ -101,6 +116,7 @@ + True @@ -149,6 +165,28 @@ + + + False + Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + +