diff --git a/images/ACDC Area 1.png b/images/MMBN 5/ACDC Area 1.png similarity index 100% rename from images/ACDC Area 1.png rename to images/MMBN 5/ACDC Area 1.png diff --git a/images/ACDC Area 2.png b/images/MMBN 5/ACDC Area 2.png similarity index 100% rename from images/ACDC Area 2.png rename to images/MMBN 5/ACDC Area 2.png diff --git a/images/ACDC Area 3.png b/images/MMBN 5/ACDC Area 3.png similarity index 100% rename from images/ACDC Area 3.png rename to images/MMBN 5/ACDC Area 3.png diff --git a/images/Drill Comp 1.png b/images/MMBN 5/Drill Comp 1.png similarity index 100% rename from images/Drill Comp 1.png rename to images/MMBN 5/Drill Comp 1.png diff --git a/images/Drill Comp 2.png b/images/MMBN 5/Drill Comp 2.png similarity index 100% rename from images/Drill Comp 2.png rename to images/MMBN 5/Drill Comp 2.png diff --git a/images/Drill Comp 3.png b/images/MMBN 5/Drill Comp 3.png similarity index 100% rename from images/Drill Comp 3.png rename to images/MMBN 5/Drill Comp 3.png diff --git a/images/Drill Comp 4.png b/images/MMBN 5/Drill Comp 4.png similarity index 100% rename from images/Drill Comp 4.png rename to images/MMBN 5/Drill Comp 4.png diff --git a/images/End Area 1.png b/images/MMBN 5/End Area 1.png similarity index 100% rename from images/End Area 1.png rename to images/MMBN 5/End Area 1.png diff --git a/images/End Area 2.png b/images/MMBN 5/End Area 2.png similarity index 100% rename from images/End Area 2.png rename to images/MMBN 5/End Area 2.png diff --git a/images/End Area 3.png b/images/MMBN 5/End Area 3.png similarity index 100% rename from images/End Area 3.png rename to images/MMBN 5/End Area 3.png diff --git a/images/End Area 4.png b/images/MMBN 5/End Area 4.png similarity index 100% rename from images/End Area 4.png rename to images/MMBN 5/End Area 4.png diff --git a/images/End Area 5.png b/images/MMBN 5/End Area 5.png similarity index 100% rename from images/End Area 5.png rename to images/MMBN 5/End Area 5.png diff --git a/images/Factory Comp 1.png b/images/MMBN 5/Factory Comp 1.png similarity index 100% rename from images/Factory Comp 1.png rename to images/MMBN 5/Factory Comp 1.png diff --git a/images/Factory Comp 2.png b/images/MMBN 5/Factory Comp 2.png similarity index 100% rename from images/Factory Comp 2.png rename to images/MMBN 5/Factory Comp 2.png diff --git a/images/Factory Comp 3.png b/images/MMBN 5/Factory Comp 3.png similarity index 100% rename from images/Factory Comp 3.png rename to images/MMBN 5/Factory Comp 3.png diff --git a/images/Factory Comp 4.png b/images/MMBN 5/Factory Comp 4.png similarity index 100% rename from images/Factory Comp 4.png rename to images/MMBN 5/Factory Comp 4.png diff --git a/images/Gargoyle Comp 1.png b/images/MMBN 5/Gargoyle Comp 1.png similarity index 100% rename from images/Gargoyle Comp 1.png rename to images/MMBN 5/Gargoyle Comp 1.png diff --git a/images/Gargoyle Comp 2.png b/images/MMBN 5/Gargoyle Comp 2.png similarity index 100% rename from images/Gargoyle Comp 2.png rename to images/MMBN 5/Gargoyle Comp 2.png diff --git a/images/Gargoyle Comp 3.png b/images/MMBN 5/Gargoyle Comp 3.png similarity index 100% rename from images/Gargoyle Comp 3.png rename to images/MMBN 5/Gargoyle Comp 3.png diff --git a/images/Gargoyle Comp 4.png b/images/MMBN 5/Gargoyle Comp 4.png similarity index 100% rename from images/Gargoyle Comp 4.png rename to images/MMBN 5/Gargoyle Comp 4.png diff --git a/images/Main Comp 1.png b/images/MMBN 5/Main Comp 1.png similarity index 100% rename from images/Main Comp 1.png rename to images/MMBN 5/Main Comp 1.png diff --git a/images/Main Comp 2.png b/images/MMBN 5/Main Comp 2.png similarity index 100% rename from images/Main Comp 2.png rename to images/MMBN 5/Main Comp 2.png diff --git a/images/Nebula 1.png b/images/MMBN 5/Nebula 1.png similarity index 100% rename from images/Nebula 1.png rename to images/MMBN 5/Nebula 1.png diff --git a/images/Nebula 2.png b/images/MMBN 5/Nebula 2.png similarity index 100% rename from images/Nebula 2.png rename to images/MMBN 5/Nebula 2.png diff --git a/images/Nebula 3.png b/images/MMBN 5/Nebula 3.png similarity index 100% rename from images/Nebula 3.png rename to images/MMBN 5/Nebula 3.png diff --git a/images/Nebula 4.png b/images/MMBN 5/Nebula 4.png similarity index 100% rename from images/Nebula 4.png rename to images/MMBN 5/Nebula 4.png diff --git a/images/Nebula 5.png b/images/MMBN 5/Nebula 5.png similarity index 100% rename from images/Nebula 5.png rename to images/MMBN 5/Nebula 5.png diff --git a/images/Nebula 6.png b/images/MMBN 5/Nebula 6.png similarity index 100% rename from images/Nebula 6.png rename to images/MMBN 5/Nebula 6.png diff --git a/images/Oran Area 1.png b/images/MMBN 5/Oran Area 1.png similarity index 100% rename from images/Oran Area 1.png rename to images/MMBN 5/Oran Area 1.png diff --git a/images/Oran Area 2.png b/images/MMBN 5/Oran Area 2.png similarity index 100% rename from images/Oran Area 2.png rename to images/MMBN 5/Oran Area 2.png diff --git a/images/Oran Area 3.png b/images/MMBN 5/Oran Area 3.png similarity index 100% rename from images/Oran Area 3.png rename to images/MMBN 5/Oran Area 3.png diff --git a/images/SciLab Area 1.png b/images/MMBN 5/SciLab Area 1.png similarity index 100% rename from images/SciLab Area 1.png rename to images/MMBN 5/SciLab Area 1.png diff --git a/images/SciLab Area 2.png b/images/MMBN 5/SciLab Area 2.png similarity index 100% rename from images/SciLab Area 2.png rename to images/MMBN 5/SciLab Area 2.png diff --git a/images/SciLab Area 3.png b/images/MMBN 5/SciLab Area 3.png similarity index 100% rename from images/SciLab Area 3.png rename to images/MMBN 5/SciLab Area 3.png diff --git a/images/SciLab Area 4.png b/images/MMBN 5/SciLab Area 4.png similarity index 100% rename from images/SciLab Area 4.png rename to images/MMBN 5/SciLab Area 4.png diff --git a/images/Ship Comp 1.png b/images/MMBN 5/Ship Comp 1.png similarity index 100% rename from images/Ship Comp 1.png rename to images/MMBN 5/Ship Comp 1.png diff --git a/images/Ship Comp 2.png b/images/MMBN 5/Ship Comp 2.png similarity index 100% rename from images/Ship Comp 2.png rename to images/MMBN 5/Ship Comp 2.png diff --git a/images/Ship Comp 3.png b/images/MMBN 5/Ship Comp 3.png similarity index 100% rename from images/Ship Comp 3.png rename to images/MMBN 5/Ship Comp 3.png diff --git a/images/Ship Comp 4.png b/images/MMBN 5/Ship Comp 4.png similarity index 100% rename from images/Ship Comp 4.png rename to images/MMBN 5/Ship Comp 4.png diff --git a/images/Squirrel Comp 1.png b/images/MMBN 5/Squirrel Comp 1.png similarity index 100% rename from images/Squirrel Comp 1.png rename to images/MMBN 5/Squirrel Comp 1.png diff --git a/images/Squirrel Comp 10.png b/images/MMBN 5/Squirrel Comp 10.png similarity index 100% rename from images/Squirrel Comp 10.png rename to images/MMBN 5/Squirrel Comp 10.png diff --git a/images/Squirrel Comp 11.png b/images/MMBN 5/Squirrel Comp 11.png similarity index 100% rename from images/Squirrel Comp 11.png rename to images/MMBN 5/Squirrel Comp 11.png diff --git a/images/Squirrel Comp 12.png b/images/MMBN 5/Squirrel Comp 12.png similarity index 100% rename from images/Squirrel Comp 12.png rename to images/MMBN 5/Squirrel Comp 12.png diff --git a/images/Squirrel Comp 13.png b/images/MMBN 5/Squirrel Comp 13.png similarity index 100% rename from images/Squirrel Comp 13.png rename to images/MMBN 5/Squirrel Comp 13.png diff --git a/images/Squirrel Comp 14.png b/images/MMBN 5/Squirrel Comp 14.png similarity index 100% rename from images/Squirrel Comp 14.png rename to images/MMBN 5/Squirrel Comp 14.png diff --git a/images/Squirrel Comp 15.png b/images/MMBN 5/Squirrel Comp 15.png similarity index 100% rename from images/Squirrel Comp 15.png rename to images/MMBN 5/Squirrel Comp 15.png diff --git a/images/Squirrel Comp 16.png b/images/MMBN 5/Squirrel Comp 16.png similarity index 100% rename from images/Squirrel Comp 16.png rename to images/MMBN 5/Squirrel Comp 16.png diff --git a/images/Squirrel Comp 2.png b/images/MMBN 5/Squirrel Comp 2.png similarity index 100% rename from images/Squirrel Comp 2.png rename to images/MMBN 5/Squirrel Comp 2.png diff --git a/images/Squirrel Comp 3.png b/images/MMBN 5/Squirrel Comp 3.png similarity index 100% rename from images/Squirrel Comp 3.png rename to images/MMBN 5/Squirrel Comp 3.png diff --git a/images/Squirrel Comp 4.png b/images/MMBN 5/Squirrel Comp 4.png similarity index 100% rename from images/Squirrel Comp 4.png rename to images/MMBN 5/Squirrel Comp 4.png diff --git a/images/Squirrel Comp 5.png b/images/MMBN 5/Squirrel Comp 5.png similarity index 100% rename from images/Squirrel Comp 5.png rename to images/MMBN 5/Squirrel Comp 5.png diff --git a/images/Squirrel Comp 6.png b/images/MMBN 5/Squirrel Comp 6.png similarity index 100% rename from images/Squirrel Comp 6.png rename to images/MMBN 5/Squirrel Comp 6.png diff --git a/images/Squirrel Comp 7.png b/images/MMBN 5/Squirrel Comp 7.png similarity index 100% rename from images/Squirrel Comp 7.png rename to images/MMBN 5/Squirrel Comp 7.png diff --git a/images/Squirrel Comp 8.png b/images/MMBN 5/Squirrel Comp 8.png similarity index 100% rename from images/Squirrel Comp 8.png rename to images/MMBN 5/Squirrel Comp 8.png diff --git a/images/Squirrel Comp 9.png b/images/MMBN 5/Squirrel Comp 9.png similarity index 100% rename from images/Squirrel Comp 9.png rename to images/MMBN 5/Squirrel Comp 9.png diff --git a/images/Undernet 1.png b/images/MMBN 5/Undernet 1.png similarity index 100% rename from images/Undernet 1.png rename to images/MMBN 5/Undernet 1.png diff --git a/images/Undernet 2.png b/images/MMBN 5/Undernet 2.png similarity index 100% rename from images/Undernet 2.png rename to images/MMBN 5/Undernet 2.png diff --git a/images/Undernet 3.png b/images/MMBN 5/Undernet 3.png similarity index 100% rename from images/Undernet 3.png rename to images/MMBN 5/Undernet 3.png diff --git a/images/Undernet 4.png b/images/MMBN 5/Undernet 4.png similarity index 100% rename from images/Undernet 4.png rename to images/MMBN 5/Undernet 4.png diff --git a/images/MMBN 6/ACDC Area.PNG b/images/MMBN 6/ACDC Area.PNG new file mode 100644 index 0000000..22c7fec Binary files /dev/null and b/images/MMBN 6/ACDC Area.PNG differ diff --git a/images/MMBN 6/Aquarium Area 1.PNG b/images/MMBN 6/Aquarium Area 1.PNG new file mode 100644 index 0000000..8d325df Binary files /dev/null and b/images/MMBN 6/Aquarium Area 1.PNG differ diff --git a/images/MMBN 6/Aquarium Area 2.PNG b/images/MMBN 6/Aquarium Area 2.PNG new file mode 100644 index 0000000..1db30c1 Binary files /dev/null and b/images/MMBN 6/Aquarium Area 2.PNG differ diff --git a/images/MMBN 6/Aquarium Area 3.PNG b/images/MMBN 6/Aquarium Area 3.PNG new file mode 100644 index 0000000..7eda0e9 Binary files /dev/null and b/images/MMBN 6/Aquarium Area 3.PNG differ diff --git a/images/MMBN 6/Central Area 1.PNG b/images/MMBN 6/Central Area 1.PNG new file mode 100644 index 0000000..e605adf Binary files /dev/null and b/images/MMBN 6/Central Area 1.PNG differ diff --git a/images/MMBN 6/Central Area 2.PNG b/images/MMBN 6/Central Area 2.PNG new file mode 100644 index 0000000..b005bf5 Binary files /dev/null and b/images/MMBN 6/Central Area 2.PNG differ diff --git a/images/MMBN 6/Central Area 3.PNG b/images/MMBN 6/Central Area 3.PNG new file mode 100644 index 0000000..be94287 Binary files /dev/null and b/images/MMBN 6/Central Area 3.PNG differ diff --git a/images/MMBN 6/Graveyard ARea 0.PNG b/images/MMBN 6/Graveyard ARea 0.PNG new file mode 100644 index 0000000..3b8c00b Binary files /dev/null and b/images/MMBN 6/Graveyard ARea 0.PNG differ diff --git a/images/MMBN 6/Graveyard Area 1.PNG b/images/MMBN 6/Graveyard Area 1.PNG new file mode 100644 index 0000000..bb1cd55 Binary files /dev/null and b/images/MMBN 6/Graveyard Area 1.PNG differ diff --git a/images/MMBN 6/Green Area 1.PNG b/images/MMBN 6/Green Area 1.PNG new file mode 100644 index 0000000..2bf65c0 Binary files /dev/null and b/images/MMBN 6/Green Area 1.PNG differ diff --git a/images/MMBN 6/Green Area 2.PNG b/images/MMBN 6/Green Area 2.PNG new file mode 100644 index 0000000..f1887ee Binary files /dev/null and b/images/MMBN 6/Green Area 2.PNG differ diff --git a/images/MMBN 6/Immortal Area.PNG b/images/MMBN 6/Immortal Area.PNG new file mode 100644 index 0000000..424a401 Binary files /dev/null and b/images/MMBN 6/Immortal Area.PNG differ diff --git a/images/MMBN 6/JdgTree Area 1.PNG b/images/MMBN 6/JdgTree Area 1.PNG new file mode 100644 index 0000000..d8e76df Binary files /dev/null and b/images/MMBN 6/JdgTree Area 1.PNG differ diff --git a/images/MMBN 6/JdgTree Area 2.PNG b/images/MMBN 6/JdgTree Area 2.PNG new file mode 100644 index 0000000..a0e148d Binary files /dev/null and b/images/MMBN 6/JdgTree Area 2.PNG differ diff --git a/images/MMBN 6/JdgTree Area 3.PNG b/images/MMBN 6/JdgTree Area 3.PNG new file mode 100644 index 0000000..eb02838 Binary files /dev/null and b/images/MMBN 6/JdgTree Area 3.PNG differ diff --git a/images/MMBN 6/Mr. Weather Area 1.PNG b/images/MMBN 6/Mr. Weather Area 1.PNG new file mode 100644 index 0000000..f3882c8 Binary files /dev/null and b/images/MMBN 6/Mr. Weather Area 1.PNG differ diff --git a/images/MMBN 6/Mr. Weather Area 3.PNG b/images/MMBN 6/Mr. Weather Area 3.PNG new file mode 100644 index 0000000..deafd65 Binary files /dev/null and b/images/MMBN 6/Mr. Weather Area 3.PNG differ diff --git a/images/MMBN 6/Mr. Weather Area2.PNG b/images/MMBN 6/Mr. Weather Area2.PNG new file mode 100644 index 0000000..5b4f910 Binary files /dev/null and b/images/MMBN 6/Mr. Weather Area2.PNG differ diff --git a/images/MMBN 6/Pavillon Area 1.PNG b/images/MMBN 6/Pavillon Area 1.PNG new file mode 100644 index 0000000..4f41b2c Binary files /dev/null and b/images/MMBN 6/Pavillon Area 1.PNG differ diff --git a/images/MMBN 6/Pavillon Area 2.PNG b/images/MMBN 6/Pavillon Area 2.PNG new file mode 100644 index 0000000..27e0f2d Binary files /dev/null and b/images/MMBN 6/Pavillon Area 2.PNG differ diff --git a/images/MMBN 6/Pavillon Area 3.PNG b/images/MMBN 6/Pavillon Area 3.PNG new file mode 100644 index 0000000..2315fa1 Binary files /dev/null and b/images/MMBN 6/Pavillon Area 3.PNG differ diff --git a/images/MMBN 6/Pavillon Area 4.PNG b/images/MMBN 6/Pavillon Area 4.PNG new file mode 100644 index 0000000..8271579 Binary files /dev/null and b/images/MMBN 6/Pavillon Area 4.PNG differ diff --git a/images/MMBN 6/Robo Control Area 1.PNG b/images/MMBN 6/Robo Control Area 1.PNG new file mode 100644 index 0000000..2f57756 Binary files /dev/null and b/images/MMBN 6/Robo Control Area 1.PNG differ diff --git a/images/MMBN 6/Robo Control Area 2.PNG b/images/MMBN 6/Robo Control Area 2.PNG new file mode 100644 index 0000000..d04ee6c Binary files /dev/null and b/images/MMBN 6/Robo Control Area 2.PNG differ diff --git a/images/MMBN 6/SeaSide Area 1.PNG b/images/MMBN 6/SeaSide Area 1.PNG new file mode 100644 index 0000000..5a9169b Binary files /dev/null and b/images/MMBN 6/SeaSide Area 1.PNG differ diff --git a/images/MMBN 6/SeaSide Area 2.PNG b/images/MMBN 6/SeaSide Area 2.PNG new file mode 100644 index 0000000..dafdd82 Binary files /dev/null and b/images/MMBN 6/SeaSide Area 2.PNG differ diff --git a/images/MMBN 6/SeaSide Area 3.PNG b/images/MMBN 6/SeaSide Area 3.PNG new file mode 100644 index 0000000..227fe5c Binary files /dev/null and b/images/MMBN 6/SeaSide Area 3.PNG differ diff --git a/images/MMBN 6/Sky Area .PNG b/images/MMBN 6/Sky Area .PNG new file mode 100644 index 0000000..a3bf548 Binary files /dev/null and b/images/MMBN 6/Sky Area .PNG differ diff --git a/images/MMBN 6/Sky Area 1.PNG b/images/MMBN 6/Sky Area 1.PNG new file mode 100644 index 0000000..c42492b Binary files /dev/null and b/images/MMBN 6/Sky Area 1.PNG differ diff --git a/images/MMBN 6/Underground Area 1.PNG b/images/MMBN 6/Underground Area 1.PNG new file mode 100644 index 0000000..607ed17 Binary files /dev/null and b/images/MMBN 6/Underground Area 1.PNG differ diff --git a/images/MMBN 6/Underground Area 2.PNG b/images/MMBN 6/Underground Area 2.PNG new file mode 100644 index 0000000..0d11880 Binary files /dev/null and b/images/MMBN 6/Underground Area 2.PNG differ diff --git a/images/MMBN 6/Undernet Area 1.PNG b/images/MMBN 6/Undernet Area 1.PNG new file mode 100644 index 0000000..49353ca Binary files /dev/null and b/images/MMBN 6/Undernet Area 1.PNG differ diff --git a/images/MMBN 6/Undernet Area 2.PNG b/images/MMBN 6/Undernet Area 2.PNG new file mode 100644 index 0000000..7b6f271 Binary files /dev/null and b/images/MMBN 6/Undernet Area 2.PNG differ diff --git a/images/MMBN 6/Undernet Area 3.PNG b/images/MMBN 6/Undernet Area 3.PNG new file mode 100644 index 0000000..6bfefc7 Binary files /dev/null and b/images/MMBN 6/Undernet Area 3.PNG differ diff --git a/images/MMBN 6/Undernet Zero Area.PNG b/images/MMBN 6/Undernet Zero Area.PNG new file mode 100644 index 0000000..5c5e276 Binary files /dev/null and b/images/MMBN 6/Undernet Zero Area.PNG differ diff --git a/mmbn5m.lpi b/mmbn5m.lpi index 6ac1b86..27c0dba 100644 --- a/mmbn5m.lpi +++ b/mmbn5m.lpi @@ -5,7 +5,7 @@ - + <Title Value="mmbn56mm"/> <Scaled Value="True"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> @@ -17,10 +17,10 @@ <VersionInfo> <UseVersionInfo Value="True"/> <AutoIncrementBuild Value="True"/> - <MinorVersionNr Value="1"/> - <RevisionNr Value="5"/> + <MinorVersionNr Value="2"/> <BuildNr Value="18"/> <Attributes pvaPrivateBuild="True"/> + <StringTable CompanyName="4aiman" FileDescription="Megaman Battle Network 5 and 6 minimap app" InternalName="mmbn56mm" LegalCopyright="4aiman" OriginalFilename="mmbn56mm" ProductName="MMBN56MM" ProductVersion="2"/> </VersionInfo> <BuildModes> <Item Name="Debug" Default="True"/> @@ -96,6 +96,9 @@ <Item> <Name Value="EFOpenError"/> </Item> + <Item> + <Name Value="EConvertError"/> + </Item> </Exceptions> </Debugging> </CONFIG> diff --git a/mmbn5m.lpr b/mmbn5m.lpr index b0f2b7f..d88de49 100644 --- a/mmbn5m.lpr +++ b/mmbn5m.lpr @@ -17,7 +17,7 @@ uses begin RequireDerivedFormResource:=True; - Application.Title:='mmbn5mm'; + Application.Title:='mmbn56mm'; Application.Scaled:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); diff --git a/mmbn5m.lps b/mmbn5m.lps index aa61f45..7cfc45e 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -47,8 +47,8 @@ <Filename Value="mmbn5m.lpr"/> <IsPartOfProject Value="True"/> <EditorIndex Value="2"/> - <CursorPos X="69" Y="19"/> - <UsageCount Value="44"/> + <CursorPos X="25" Y="5"/> + <UsageCount Value="57"/> <Loaded Value="True"/> </Unit> <Unit> @@ -59,149 +59,161 @@ <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> <IsVisibleTab Value="True"/> - <TopLine Value="330"/> - <CursorPos X="81" Y="340"/> - <UsageCount Value="44"/> + <TopLine Value="130"/> + <CursorPos X="85" Y="165"/> + <UsageCount Value="57"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit> <Unit> <Filename Value="C:\lazarus\lcl\interfaces\win32\win32listsl.inc"/> - <EditorIndex Value="3"/> + <EditorIndex Value="-1"/> <TopLine Value="128"/> <CursorPos Y="152"/> <UsageCount Value="21"/> - <Loaded Value="True"/> </Unit> <Unit> <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\syshelph.inc"/> - <EditorIndex Value="1"/> + <EditorIndex Value="-1"/> <TopLine Value="147"/> <CursorPos X="16" Y="161"/> <UsageCount Value="11"/> + </Unit> + <Unit> + <Filename Value="rooms.ini"/> + <EditorIndex Value="1"/> + <TopLine Value="40"/> + <CursorPos X="121" Y="53"/> + <UsageCount Value="16"/> <Loaded Value="True"/> + <DefaultSyntaxHighlighter Value="Ini"/> + </Unit> + <Unit> + <Filename Value="mmbn5m.lpi"/> + <EditorIndex Value="-1"/> + <CursorPos Y="46"/> + <UsageCount Value="9"/> + <DefaultSyntaxHighlighter Value="XML"/> </Unit> </Units> <JumpHistory HistoryIndex="29"> <Position> <Filename Value="unit1.pas"/> - <Caret Line="165" Column="36" TopLine="141"/> + <Caret Line="31" Column="11"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="227" Column="47" TopLine="195"/> + <Caret Line="32" Column="11"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="151" Column="59" TopLine="144"/> + <Caret Line="40" Column="21"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="155" Column="32" TopLine="144"/> + <Caret Line="168" Column="27" TopLine="128"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="126" Column="27" TopLine="121"/> + <Caret Line="170" Column="13" TopLine="130"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="153" Column="42" TopLine="140"/> + <Caret Line="171" Column="13" TopLine="131"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="211" Column="22" TopLine="209"/> + <Caret Line="176" Column="11" TopLine="136"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="235" Column="59" TopLine="211"/> + <Caret Line="282" Column="49" TopLine="282"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="216" TopLine="192"/> + <Caret Line="272" Column="72" TopLine="235"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="116" Column="18" TopLine="85"/> + <Caret Line="312" Column="88" TopLine="283"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="115" Column="24" TopLine="92"/> + <Caret Line="121" Column="7" TopLine="102"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="234" Column="46" TopLine="205"/> + <Caret Line="291" Column="84" TopLine="272"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="235" Column="45" TopLine="211"/> + <Caret Line="286" Column="14" TopLine="262"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="211" Column="11" TopLine="163"/> + <Caret Line="287" Column="47" TopLine="264"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="212" Column="53" TopLine="180"/> + <Caret Line="289" Column="45" TopLine="265"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="163" Column="43" TopLine="147"/> + <Caret Line="291" Column="69" TopLine="268"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="174" Column="73" TopLine="149"/> + <Caret Line="300" Column="37" TopLine="275"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="167" Column="47" TopLine="149"/> + <Caret Line="268" Column="98" TopLine="235"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="140" Column="20" TopLine="106"/> + <Caret Line="344" Column="52" TopLine="315"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="141" Column="54" TopLine="116"/> + <Caret Line="383" Column="89" TopLine="351"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="9" Column="36"/> + <Caret Line="281" Column="68" TopLine="259"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="60" Column="6" TopLine="36"/> + <Caret Line="358" Column="89" TopLine="333"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="130" Column="33" TopLine="99"/> + <Caret Line="136" Column="109" TopLine="108"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="334" TopLine="293"/> + <Caret Line="398" Column="5" TopLine="351"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="301" Column="50" TopLine="266"/> + <Caret Line="396" Column="5" TopLine="350"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="352" TopLine="315"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="146" TopLine="139"/> + <Caret Line="355" Column="14" TopLine="308"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="140" Column="3" TopLine="138"/> + <Caret Line="371" Column="57" TopLine="350"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="144" Column="55" TopLine="131"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="219" Column="51" TopLine="193"/> + <Caret Line="360" Column="141" TopLine="352"/> </Position> </JumpHistory> <RunParams> diff --git a/mmbn5m.res b/mmbn5m.res index e129932..617826e 100644 Binary files a/mmbn5m.res and b/mmbn5m.res differ diff --git a/rooms.ini b/rooms.ini index fe62670..d0a0636 100644 --- a/rooms.ini +++ b/rooms.ini @@ -1,4 +1,4 @@ -[Rooms] +[Rooms MMBN 5] 144=ACDC Area 1 145=Oran Area 1 146=SciLab Area 1 @@ -60,7 +60,7 @@ 641=Drill Comp 3 2818=Old Mine 9 908=Electronic Lock Comp -5=Regal Base 1 +5=Nebula Control 142=Squirrel Comp 1 398=Squirrel Comp 2 654=Squirrel Comp 3 @@ -120,8 +120,20 @@ 653=Tree Comp 3469=Message Comp 394=Prologue Room +1933=Net Battle Comp (ship) +261=Factory Exterior +3213=Pipe Comp +517=Factory Hall +773=Dark Chip Factory +2444=Chip Maker Comp +132=Factory Comp 1 +388=Factory Comp 2 +644=Factory Comp 3 +1029=Soul Server +2701=Exp Server Comp +1156=Soul Server Comp -[Spoils] +[Spoils MMBN 5] 397=RegUP2,1000z 141=HolyPanl*,RegUP1 401=Vulcan2 C,HP Memory,HP Memory [N} @@ -129,13 +141,13 @@ 658=Mega Folder1,SciKey Oran2 147=Vulcan3 L,M-Canon G,Barr 100 P,WideBlade V,Jealousy J,Reg Up 2 3=48958798 -1536=48958798,28706568 +1536=48958798,28706568,45654128,68799876 515=00798216 1164=400z 1420=Battery 1676=Reg Up 2 1932=Sub Memory -2188=Don'tNeedData +2188=Don'tNeedData,HP Memory 130=ShipKey,YoYo F,Spin White 386=700z,Don'tNeedData,ShipKey,RegUp3 642=GrasSeed A @@ -145,13 +157,13 @@ 2700=Mem Data,Right panel,press A 2445=Metagel T 2956=HP+100 -260=RegUP1 +260=RegUP1,45654128 3212=RegUP2 3468=HP Memory 2957=Air Spin 2 B 1416=CasBannr 1028=HP Memory -131=Speed +1 +131=Speed +1,HP Memory 387=RegUp2,MegEnBom C 643=HP+100,HP Memry 899=Slasher R @@ -166,3 +178,36 @@ 653=HP Memory 3469=RegUp3 660=Attack +1 +1933=HP+50 +404=68799876 +256=Disk Data +394=RegUp1 +3213=Hp Memory +2444=DarkCirk R +132=M-Cannon F,HP Memory +388=Reg Up 3,Oil Body +900=SubMemory +2701=MudWave D [U] + +[Pointers] +MMBN 5=2149605364 +MMBN 6=2147425942 + +[Rooms MMBN 6] +65536=Central Town +9175040=RoboDog Comp +281474976776192=Lan's House +562949953486848=Lan's Room +844424930197504=Lan's Bathroom +8912896=Lan's Home Page +9437184=Central Area 1 +281474986147840=Central Area 2 +1688849860395008=Cyber Academy Foyer Hall +1970324837105664=Teacher's Room +1125899906973696=Cyber Academy 1F Hallway +1407374883684352=Cyber Academy 2F Hallway +131072=Cyber Academy Class 6-1 +562949962596352=Class 6-1 Comp + +[Spoils MMBN 6] +562949962596352=700z diff --git a/unit1.lfm b/unit1.lfm index 52df579..dce19a6 100644 --- a/unit1.lfm +++ b/unit1.lfm @@ -1,11 +1,11 @@ object Form1: TForm1 - Left = 1657 + Left = 1066 Height = 448 - Top = 313 - Width = 528 - Caption = 'MMBN5M' + Top = 323 + Width = 606 + Caption = 'MMBN5-6M' ClientHeight = 448 - ClientWidth = 528 + ClientWidth = 606 Font.CharSet = ANSI_CHARSET Font.Height = -16 Font.Name = 'Liberation Mono' @@ -19,7 +19,7 @@ object Form1: TForm1 AnchorSideLeft.Control = start_stop_button AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner - Left = 136 + Left = 192 Height = 18 Top = 8 Width = 320 @@ -38,10 +38,10 @@ object Form1: TForm1 AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom - Left = 136 + Left = 192 Height = 406 Top = 34 - Width = 384 + Width = 406 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Top = 8 BorderSpacing.Right = 8 @@ -53,11 +53,12 @@ object Form1: TForm1 end object start_stop_button: TSpeedButton AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner + AnchorSideTop.Control = gamebox + AnchorSideTop.Side = asrBottom Left = 8 Height = 30 - Top = 8 - Width = 120 + Top = 40 + Width = 176 AllowAllUp = True BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -73,8 +74,8 @@ object Form1: TForm1 AnchorSideRight.Control = map_image Left = 8 Height = 30 - Top = 46 - Width = 120 + Top = 78 + Width = 176 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -91,8 +92,8 @@ object Form1: TForm1 AnchorSideBottom.Control = plus_spoil Left = 8 Height = 250 - Top = 110 - Width = 120 + Top = 142 + Width = 176 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -111,8 +112,8 @@ object Form1: TForm1 AnchorSideRight.Control = map_image Left = 8 Height = 18 - Top = 84 - Width = 120 + Top = 116 + Width = 176 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -144,7 +145,7 @@ object Form1: TForm1 Left = 72 Height = 40 Top = 400 - Width = 56 + Width = 112 Anchors = [akLeft, akRight, akBottom] BorderSpacing.Left = 8 BorderSpacing.Right = 8 @@ -162,7 +163,7 @@ object Form1: TForm1 Left = 8 Height = 22 Top = 370 - Width = 120 + Width = 176 Anchors = [akLeft, akRight, akBottom] BorderSpacing.Left = 8 BorderSpacing.Top = 8 @@ -172,6 +173,32 @@ object Form1: TForm1 OnChange = map_stretch_checkboxChange TabOrder = 4 end + object gamebox: TComboBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = Owner + AnchorSideRight.Control = start_stop_button + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = start_stop_button + Left = 8 + Height = 24 + Top = 8 + Width = 176 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Bottom = 8 + ItemHeight = 18 + ItemIndex = 0 + Items.Strings = ( + 'MMBN 5' + 'MMBN 6' + ) + OnSelect = gameboxSelect + ReadOnly = True + Style = csOwnerDrawFixed + TabOrder = 5 + Text = 'MMBN 5' + end object Timer1: TTimer Enabled = False OnTimer = Timer1Timer diff --git a/unit1.pas b/unit1.pas index 835e94c..9a906a7 100644 --- a/unit1.pas +++ b/unit1.pas @@ -5,370 +5,394 @@ unit Unit1; interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, - Buttons, Grids, IniFiles, Windows; +Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, +Buttons, Grids, IniFiles, Windows; type - TWMHotKey = packed record - MSG: cardinal; - HotKey: PtrInt; - Unused: PtrInt; - Result: PtrInt; - end; +TWMHotKey = packed record + MSG :CARDINAL; + HotKey :PtrInt; + Unused :PtrInt; + Result :PtrInt; +end; type - { TForm1 } +{ TForm1 } - TForm1 = class(TForm) - map_stretch_checkbox: TCheckBox; - plus_spoil: TButton; - edit_room_button: TButton; - minus_spoil1: TButton; - spoils_label: TLabel; - spoils_listbox: TListBox; - map_image: TImage; - room_name_label: TLabel; - start_stop_button: TSpeedButton; - Timer1: TTimer; - procedure edit_room_buttonClick(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); - procedure FormCreate(Sender: TObject); - procedure map_imagePaint(Sender: TObject); - procedure map_stretch_checkboxChange(Sender: TObject); - procedure minus_spoil1Click(Sender: TObject); - procedure plus_spoilClick(Sender: TObject); - procedure spoils_listboxDblClick(Sender: TObject); - procedure start_stop_buttonClick(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - private +TForm1 = class ( TForm ) + gamebox :TComboBox; + map_stretch_checkbox :TCheckBox; + plus_spoil :TButton; + edit_room_button :TButton; + minus_spoil1 :TButton; + spoils_label :TLabel; + spoils_listbox :TListBox; + map_image :TImage; + room_name_label :TLabel; + start_stop_button :TSpeedButton; + Timer1 :TTimer; + procedure edit_room_buttonClick ( Sender :TObject ); + procedure FormClose ( Sender :TObject; var CloseAction :TCloseAction ); + procedure FormCreate ( Sender :TObject ); + procedure gameboxSelect ( Sender :TObject ); + procedure map_imagePaint ( Sender :TObject ); + procedure map_stretch_checkboxChange ( Sender :TObject ); + procedure minus_spoil1Click ( Sender :TObject ); + procedure plus_spoilClick ( Sender :TObject ); + procedure spoils_listboxDblClick ( Sender :TObject ); + procedure start_stop_buttonClick ( Sender :TObject ); + procedure Timer1Timer ( Sender :TObject ); +PRIVATE - public +PUBLIC - protected - procedure WMHotKey(var MSG: TWMHotKey); message WM_HOTKEY; +PROTECTED + procedure WMHotKey ( var MSG :TWMHotKey ); MESSAGE WM_HOTKEY; - end; +end; var - Form1: TForm1; +Form1 :TForm1; implementation uses JwaTlHelp32; -function FindProcessID(const ExeFileName: string): DWORD; + +function FindProcessID ( const ExeFileName :STRING ) :DWORD; var - ContinueLoop: BOOL; - FSnapshotHandle: THandle; - FProcessEntry32: TProcessEntry32; + ContinueLoop :BOOL; + FSnapshotHandle :THandle; + FProcessEntry32 :TProcessEntry32; begin - Result := 0; + Result := 0; - FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - FProcessEntry32.dwSize := SizeOf(FProcessEntry32); - ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); + FSnapshotHandle := CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ); + FProcessEntry32.dwSize := SizeOf ( FProcessEntry32 ); + ContinueLoop := Process32First ( FSnapshotHandle, FProcessEntry32 ); - while integer(ContinueLoop) <> 0 do - begin - if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = - UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = - UpperCase(ExeFileName))) then - begin - Result := FProcessEntry32.th32ProcessID; - Break; - end; - ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); - end; + while INTEGER ( ContinueLoop ) <> 0 do + begin + if ( ( UpperCase ( ExtractFileName ( FProcessEntry32.szExeFile ) ) = UpperCase ( ExeFileName ) ) + OR( UpperCase ( FProcessEntry32.szExeFile ) = UpperCase ( ExeFileName ) ) ) then begin + Result := FProcessEntry32.th32ProcessID; + Break; + end; + ContinueLoop := Process32Next ( FSnapshotHandle, FProcessEntry32 ); + end; - CloseHandle(FSnapshotHandle); + CloseHandle ( FSnapshotHandle ); end; - -function ReadMemory(hProcess: THandle; Address: Pointer; var Buffer; - Size: DWORD): boolean; +function ReadMemory ( hProcess :THandle; Address :Pointer; var Buffer; Size :DWORD ) :BOOLEAN; var - NumberOfBytesRead: SIZE_T; + NumberOfBytesRead :SIZE_T; begin - Result := ReadProcessMemory(hProcess, Address, @Buffer, Size, NumberOfBytesRead) and - (NumberOfBytesRead = Size); -end; - -procedure ListRunningProcesses(ProcList: TStrings); -var - pProc: TProcessEntry32; - pSnap: THandle; - pBool: BOOL; -begin - ProcList.Clear; - pProc.dwSize := SizeOf(pProc); - pSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); - pBool := Process32First(pSnap, pProc); - while integer(pBool) <> 0 do - begin - ProcList.Add(pProc.szExeFile); - pBool := Process32Next(pSnap, pProc); - end; - CloseHandle(pSnap); + Result := ReadProcessMemory ( hProcess, Address, @Buffer, Size, NumberOfBytesRead ) AND ( NumberOfBytesRead = Size ); end; +procedure ListRunningProcesses ( ProcList :TStrings ); +var + pProc :TProcessEntry32; + pSnap :THandle; + pBool :BOOL; +begin + ProcList.Clear; + pProc.dwSize := SizeOf ( pProc ); + pSnap := CreateToolhelp32Snapshot ( TH32CS_SNAPALL, 0 ); + pBool := Process32First ( pSnap, pProc ); + while INTEGER ( pBool ) <> 0 do begin + ProcList.Add ( pProc.szExeFile ); + pBool := Process32Next ( pSnap, pProc ); + end; + CloseHandle ( pSnap ); +end; + var - hProcess: THandle; - ROOMS: TIniFile; // contains room labels - process_list: TStrings; - room: smallint = -1; // contains current room 16-bit value - last_room: smallint = -1; - room_name: string; - new_room: bool; - spoils_list: string; - spoils: TStringArray; - fullscreen_map: bool = False; +hProcess :THandle; +ROOMS :TIniFile; // contains room labels +process_list :TStrings; +room :QWORD = -1; // contains current room 16-bit value +last_room :QWORD = -1; +room_name :STRING; +new_room :bool; +spoils_list :STRING; +spoils :TStringArray; +fullscreen_map :bool = False; +current_game :STRING = 'MMBN 6'; +mmbn5_pointer :QWORD = $80205FF4; +//mmbn6 has a weird way to denote areas: there' main area code and subcodes. 0 = Central Town, 1 = Cyberspace in Central Town. +// So, Central Area 1 is 0-144, but Central Area 2 is somehow 144-256 +// the pointer is : smallint = $7FFF1E9B (subarea) and smallint = $7FFF1E98 (general area); +// I don't want to dea with that, so I just read everything as ONE qword and it seems to work +mmbn6_pointer :QWORD = $7FFF1E96; +current_game_pointer :QWORD; +is_cyberworld :BOOLEAN = False; var - x, y, w, h: integer; - state: TWindowState; +x, y, w, h :INTEGER; +state :TWindowState; {$R *.lfm} { TForm1 } -procedure TForm1.FormCreate(Sender: TObject); +procedure TForm1.FormCreate ( Sender :TObject ); begin - // open ini file and create a list to hold processes - ROOMS := TIniFile.Create('rooms.ini'); - process_list := TStringList.Create(); - spoils_listbox.Height := 0; - if not RegisterHotKey(Handle, 111000, MOD_WIN, VK_Y) then - ShowMessage('HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.'); + current_game_pointer := mmbn5_pointer; + // open ini file and create a list to hold processes + ROOMS := TIniFile.Create ( 'rooms.ini' ); + process_list := TStringList.Create ( ); + spoils_listbox.Height := 0; + if NOT RegisterHotKey ( Handle, 111000, MOD_WIN, VK_Y ) then + ShowMessage ( 'HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.' ); end; -procedure TForm1.map_imagePaint(Sender: TObject); + +procedure TForm1.gameboxSelect ( Sender :TObject ); begin - //map_image.Canvas.Brush.Style := bsClear; - //map_image.Canvas.Rectangle(0, 0, 400, 400); + current_game := gamebox.Items [gamebox.ItemIndex]; + if ( gamebox.ItemIndex = 0 ) then begin + current_game_pointer := mmbn5_pointer; + end else begin + current_game_pointer := mmbn6_pointer; + end; + ROOMS.WriteString ( 'Pointers', current_game, IntToStr ( current_game_pointer ) ); end; -procedure TForm1.map_stretch_checkboxChange(Sender: TObject); + +procedure TForm1.map_imagePaint ( Sender :TObject ); begin - map_image.Proportional := not map_stretch_checkbox.Checked; + //map_image.Canvas.Brush.Style := bsClear; + //map_image.Canvas.Rectangle(0, 0, 400, 400); end; -procedure TForm1.minus_spoil1Click(Sender: TObject); + +procedure TForm1.map_stretch_checkboxChange ( Sender :TObject ); +begin + map_image.Proportional := NOT map_stretch_checkbox.Checked; +end; + + +procedure TForm1.minus_spoil1Click ( Sender :TObject ); var - Txt: string; - i: integer; + Txt :STRING; + i :INTEGER; begin - if (spoils_listbox.ItemIndex > -1) then - begin - spoils_listbox.Items.Delete(spoils_listbox.ItemIndex); - for i := 0 to spoils_listbox.Items.Count - 1 do - begin - if i < spoils_listbox.Items.Count - 1 then - Txt := Txt + spoils_listbox.Items[i] + ',' - else - Txt := Txt + spoils_listbox.Items[i]; - end; - ROOMS.WriteString('Spoils', IntToStr(room), Txt); - end; - spoils_listbox.ClearSelection; + if ( spoils_listbox.ItemIndex > -1 ) then begin + spoils_listbox.Items.Delete ( spoils_listbox.ItemIndex ); + for i := 0 to spoils_listbox.Items.Count - 1 do begin + if i < spoils_listbox.Items.Count - 1 then + Txt := Txt + spoils_listbox.Items [i] + ',' + else + Txt := Txt + spoils_listbox.Items [i]; + end; + if is_cyberworld = True then + ROOMS.WriteString ( 'Spoils Cyberworld ' + current_game, IntToStr ( room ), Txt ) + else + ROOMS.WriteString ( 'Spoils ' + current_game, IntToStr ( room ), Txt ); + + end; + spoils_listbox.ClearSelection; end; -procedure TForm1.plus_spoilClick(Sender: TObject); + +procedure TForm1.plus_spoilClick ( Sender :TObject ); var - new_spoil_name: string; + new_spoil_name :STRING; + Txt :STRING; + i :INTEGER; +begin + if InputQuery ( 'Adding item to Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then begin + spoils_listbox.Items.Add ( new_spoil_name ); + for i := 0 to spoils_listbox.Items.Count - 1 do begin + if i < spoils_listbox.Items.Count - 1 then + Txt := Txt + spoils_listbox.Items [i] + ',' + else + Txt := Txt + spoils_listbox.Items [i]; + end; + if is_cyberworld = True then + ROOMS.WriteString ( 'Spoils Cyberworld ' + current_game, IntToStr ( room ), Txt ) + else + ROOMS.WriteString ( 'Spoils ' + current_game, IntToStr ( room ), Txt ); + + end; + spoils_listbox.ClearSelection; +end; + + +procedure TForm1.spoils_listboxDblClick ( Sender :TObject ); var - Txt: string; - i: integer; -begin - if InputQuery('Adding item to Room #' + IntToStr(room), 'Enter item''s name', - new_spoil_name) then - begin - spoils_listbox.Items.Add(new_spoil_name); - for i := 0 to spoils_listbox.Items.Count - 1 do - begin - if i < spoils_listbox.Items.Count - 1 then - Txt := Txt + spoils_listbox.Items[i] + ',' - else - Txt := Txt + spoils_listbox.Items[i]; - end; - ROOMS.WriteString('Spoils', IntToStr(room), Txt); - end; - spoils_listbox.ClearSelection; -end; - -procedure TForm1.spoils_listboxDblClick(Sender: TObject); + new_spoil_name :STRING; var - new_spoil_name: string; + Txt :STRING; + i :INTEGER; +begin + if ( spoils_listbox.ItemIndex > -1 ) then begin + new_spoil_name := spoils_listbox.Items [spoils_listbox.ItemIndex]; + if InputQuery ( 'Editing item in Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then begin + spoils_listbox.Items[spoils_listbox.ItemIndex] := new_spoil_name; + for i := 0 to spoils_listbox.Items.Count - 1 do begin + if i < spoils_listbox.Items.Count - 1 then + Txt := Txt + spoils_listbox.Items [i] + ',' + else + Txt := Txt + spoils_listbox.Items [i]; + end; + if is_cyberworld = True then + ROOMS.WriteString ( 'Spoils Cyberworld ' + current_game, IntToStr ( room ), Txt ) + else + ROOMS.WriteString ( 'Spoils ' + current_game, IntToStr ( room ), Txt ); + + end; + end; + spoils_listbox.ClearSelection; +end; + + +procedure TForm1.start_stop_buttonClick ( Sender :TObject ); var - Txt: string; - i: integer; -begin - if (spoils_listbox.ItemIndex > -1) then - begin - new_spoil_name := spoils_listbox.Items[spoils_listbox.ItemIndex]; - if InputQuery('Editing item in Room #' + IntToStr(room), - 'Enter item''s name', new_spoil_name) then - begin - spoils_listbox.Items[spoils_listbox.ItemIndex] := new_spoil_name; - for i := 0 to spoils_listbox.Items.Count - 1 do - begin - if i < spoils_listbox.Items.Count - 1 then - Txt := Txt + spoils_listbox.Items[i] + ',' - else - Txt := Txt + spoils_listbox.Items[i]; - end; - ROOMS.WriteString('Spoils', IntToStr(room), Txt); + i :INTEGER; + ProcID :DWORD; - end; - end; - spoils_listbox.ClearSelection; +begin + if start_stop_button.Down = False then begin + start_stop_button.Caption := 'Start'; + Timer1.Enabled := False; + CloseHandle ( hProcess ); + room_name_label.Caption := 'Run the game, then press "Start"'; + end else begin + start_stop_button.Caption := 'Stop'; + ListRunningProcesses ( process_list ); + for i := 0 to process_list.Count - 1 do begin + if ( process_list [i] = 'MMBN_LC2.exe' ) then begin + ProcID := FindProcessID ( process_list [i] ); + hProcess := OpenProcess ( PROCESS_VM_READ, False, ProcID ); + Caption := 'MMBN5-6M: Reading from process ID ' + IntToStr ( ProcID ); + Timer1.Enabled := True; + break; + end else begin + room_name_label.Caption := 'Error. Run the game.'; + end; + end; + end; end; -procedure TForm1.start_stop_buttonClick(Sender: TObject); + +procedure TForm1.Timer1Timer ( Sender :TObject ); var - i: integer; - ProcID: DWORD; - + room_number_size :SMALLINT; begin - if start_stop_button.Down = False then - begin - start_stop_button.Caption := 'Start'; - Timer1.Enabled := False; - CloseHandle(hProcess); - end - else - begin - start_stop_button.Caption := 'Stop'; - ListRunningProcesses(process_list); - for i := 0 to process_list.Count - 1 do - begin - if (process_list[i] = 'MMBN_LC2.exe') then - begin - ProcID := FindProcessID(process_list[i]); - hProcess := OpenProcess(PROCESS_VM_READ, False, ProcID); - Caption := 'MMBN5M: Reading from process ID ' + IntToStr(ProcID); - Timer1.Enabled := True; - break; - end; - end; - end; + spoils_listbox.Height := spoils_listbox.Items.Count * spoils_listbox.ItemHeight; + + if hProcess <> 0 then begin + try + if current_game = 'MMBN 6' then + room_number_size := SizeOf ( QWORD ) + else + room_number_size := SizeOf ( SMALLINT ); + + if ReadMemory ( hProcess, Pointer ( current_game_pointer ), room, room_number_size ) then begin + if ( last_room <> room ) OR ( new_room ) then begin + new_room := False; + last_room := room; + if current_game = 'MMBN 6' then begin + // Don't show room numbers for MMBN 6 until something smaller-looking can be figured out + room_name := ROOMS.ReadString ( 'Rooms ' + current_game, IntToStr ( room ), 'Unknown' ); + room_name_label.Caption := room_name; + end else begin + room := SMALLINT ( room ); // - 844424930459648; + room_name := ROOMS.ReadString ( 'Rooms ' + current_game, IntToStr ( room ), 'Unknown' ); + room_name_label.Caption := 'Room #' + IntToStr ( room ) + ': ' + room_name; + end; + + spoils_list := ROOMS.ReadString ( 'Spoils ' + current_game, IntToStr ( room ), '' ); + spoils_listbox.Items.Clear; + if ( spoils_list <> '' ) then begin + spoils := spoils_list.Split ( ',' ); + spoils_listbox.Items.AddStrings ( spoils ); + end; + + if FileExists ( 'images/' + current_game + '/' + room_name + '.png' ) then begin + map_image.Picture.LoadFromFile ( 'images/' + current_game + '/' + room_name + '.png' ); + end else begin + map_image.Picture.Clear; + end; + end; + end else begin + room_name_label.Caption := 'Error. Make sure the game is running.'; + end; + except + on edit_room_button :Exception do + room_name_label.Caption := 'Error. Can''t read game''s memory.'; + end; + end; end; -procedure TForm1.Timer1Timer(Sender: TObject); -begin - spoils_listbox.Height := spoils_listbox.Items.Count * spoils_listbox.ItemHeight; - - if hProcess <> 0 then - begin - try - if ReadMemory(hProcess, Pointer($80205FF4), room, SizeOf(room)) then - begin - if (last_room <> room) or (new_room) then - begin - new_room := False; - last_room := room; - room_name := ROOMS.ReadString('Rooms', IntToStr(room), 'Unknown'); - room_name_label.Caption := 'Room #' + IntToStr(room) + ': ' + room_name; - spoils_list := ROOMS.ReadString('Spoils', IntToStr(room), ''); - spoils_listbox.Items.Clear; - if (spoils_list <> '') then - begin - spoils := spoils_list.Split(','); - spoils_listbox.Items.AddStrings(spoils); - end; - - if FileExists('images/' + room_name + '.png') then - begin - map_image.Picture.LoadFromFile('images/' + room_name + '.png'); - end - else - begin - map_image.Picture.Clear; - end; - end; - end - else - begin - room_name_label.Caption := 'Error. Make sure the game is running'; - end; - except - on edit_room_button: Exception do - room_name_label.Caption := 'Error'; - end; - end; - -end; - -procedure TForm1.edit_room_buttonClick(Sender: TObject); +procedure TForm1.edit_room_buttonClick ( Sender :TObject ); var - new_room_name: string; + new_room_name :STRING; begin - new_room_name := room_name; - if InputQuery('Editing Room # ' + IntToStr(room), 'Enter this Room''s name', - new_room_name) then - begin - ROOMS.WriteString('Rooms', IntToStr(room), new_room_name); - new_room := True; - end; -end; - -procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction); -begin - // close the process on exit if it's been opened - if start_stop_button.Down = True then - begin - Timer1.Enabled := False; - CloseHandle(hProcess); - end; - // free additionally created objects - ROOMS.Free; - process_list.Free; - UnregisterHotKey(Handle, 111000); + new_room_name := room_name; + if InputQuery ( 'Editing Room # ' + IntToStr ( room ), 'Enter this Room''s name', new_room_name ) then begin + ROOMS.WriteString ( 'Rooms ' + current_game, IntToStr ( room ), new_room_name ); + end; end; -procedure TForm1.WMHotKey(var MSG: TWMHotKey); +procedure TForm1.FormClose ( Sender :TObject; var CloseAction :TCloseAction ); begin - fullscreen_map := not fullscreen_map; + // close the process on exit if it's been opened + if start_stop_button.Down = True then begin + Timer1.Enabled := False; + CloseHandle ( hProcess ); + end; + // free additionally created objects + ROOMS.Free; + process_list.Free; + UnregisterHotKey ( Handle, 111000 ); +end; - Form1.Visible := False; - if (fullscreen_map = True) then - begin - x := Form1.Left; - y := Form1.top; - w := Form1.Width; - h := Form1.Height; - Application.ProcessMessages; - state := Form1.WindowState; - Form1.FormStyle := fsStayOnTop; - Form1.BorderStyle := bsNone; - Form1.Left := 0; - Form1.Top := 0; - form1.Width := Screen.Width; - Form1.Height := Screen.Height; - end - else - begin - Form1.WindowState := state; - Form1.FormStyle := fsNormal; - Form1.BorderStyle := bsSizeable; - Application.ProcessMessages; - Form1.Position:=poDesigned; - Form1.Left := x; - Form1.Top := y; - form1.Width := w; - Form1.Height := h; - end; - Form1.Visible := True; - RegisterHotKey(Handle, 111000, MOD_WIN, VK_Y); +procedure TForm1.WMHotKey ( var MSG :TWMHotKey ); +begin + fullscreen_map := NOT fullscreen_map; + + Form1.Visible := False; + if ( fullscreen_map = True ) then begin + x := Form1.Left; + y := Form1.top; + w := Form1.Width; + h := Form1.Height; + Application.ProcessMessages; + state := Form1.WindowState; + Form1.FormStyle := fsStayOnTop; + Form1.BorderStyle := bsNone; + Form1.Left := 0; + Form1.Top := 0; + form1.Width := Screen.Width; + Form1.Height := Screen.Height; + end else begin + Form1.WindowState := state; + Form1.FormStyle := fsNormal; + Form1.BorderStyle := bsSizeable; + Application.ProcessMessages; + Form1.Position := poDesigned; + Form1.Left := x; + Form1.Top := y; + form1.Width := w; + Form1.Height := h; + end; + + Form1.Visible := True; + RegisterHotKey ( Handle, 111000, MOD_WIN, VK_Y ); end;