diff --git a/README.md b/README.md index 889d268..0fbfa30 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Megaman Battle Network 5 and 6 Mini Map App +# Megaman Battle Network 5 Mini Map App This app is a Windows only tool that reads MMBN Legacy Collection 2's memory and grabs current map ID from that. -Then it displays an image of the current room if that's present in the [images](images/) folder. +Then it displays an image of the current room if that's present in the [images](/images/) folder. The images were taken from [Dr. Cossack's Lab](https://www.interordi.com/mega_man_pc/games/mmbn5/) without anyone's consent. @@ -10,7 +10,7 @@ The images were taken from [Dr. Cossack's Lab](https://www.interordi.com/mega_ma # How to use - Open the legacy collection 2 -- Load up MMBN 5 (tested with Team Protoman) or MMBN6 (tested with Cyberbeast Falzar) +- Load up MMBN 5 (tested with Team Protoman) - Open this app - Use `Start`/`Stop` button to enable/disable memory reading. - If you encounter an `Unknown` Room - press `Edit` it and give it a name. @@ -48,4 +48,4 @@ Assets are *not* included. Because... > > Dumping something from a game sure requires an investment of time - just as crating this app and writing this readme does. But neither of those acts magically makes any of us the owner of the assets in question. At best it's a derivative work akin fan art. > -> If there's anyone to ask, that would be Capcom themselves. And we all know what they think (see [III. IMPERMISSIBLE USES](https://www.capcomusa.com/video-policy/)). Be happy Capcom doesn't enforce its rights and allows us to do what we do +> If there's anyone to ask, that would be Capcom themselves. And we all know what they think (see [III. IMPERMISSIBLE USES](https://www.capcomusa.com/video-policy/)). Be happy Capcom doesn't enforce its rights and allows us to to what we do diff --git a/images/MMBN 5/ACDC Area 1.png b/images/ACDC Area 1.png similarity index 100% rename from images/MMBN 5/ACDC Area 1.png rename to images/ACDC Area 1.png diff --git a/images/MMBN 5/ACDC Area 2.png b/images/ACDC Area 2.png similarity index 100% rename from images/MMBN 5/ACDC Area 2.png rename to images/ACDC Area 2.png diff --git a/images/MMBN 5/ACDC Area 3.png b/images/ACDC Area 3.png similarity index 100% rename from images/MMBN 5/ACDC Area 3.png rename to images/ACDC Area 3.png diff --git a/images/MMBN 5/Drill Comp 1.png b/images/Drill Comp 1.png similarity index 100% rename from images/MMBN 5/Drill Comp 1.png rename to images/Drill Comp 1.png diff --git a/images/MMBN 5/Drill Comp 2.png b/images/Drill Comp 2.png similarity index 100% rename from images/MMBN 5/Drill Comp 2.png rename to images/Drill Comp 2.png diff --git a/images/MMBN 5/Drill Comp 3.png b/images/Drill Comp 3.png similarity index 100% rename from images/MMBN 5/Drill Comp 3.png rename to images/Drill Comp 3.png diff --git a/images/MMBN 5/Drill Comp 4.png b/images/Drill Comp 4.png similarity index 100% rename from images/MMBN 5/Drill Comp 4.png rename to images/Drill Comp 4.png diff --git a/images/MMBN 5/End Area 1.png b/images/End Area 1.png similarity index 100% rename from images/MMBN 5/End Area 1.png rename to images/End Area 1.png diff --git a/images/MMBN 5/End Area 2.png b/images/End Area 2.png similarity index 100% rename from images/MMBN 5/End Area 2.png rename to images/End Area 2.png diff --git a/images/MMBN 5/End Area 3.png b/images/End Area 3.png similarity index 100% rename from images/MMBN 5/End Area 3.png rename to images/End Area 3.png diff --git a/images/MMBN 5/End Area 4.png b/images/End Area 4.png similarity index 100% rename from images/MMBN 5/End Area 4.png rename to images/End Area 4.png diff --git a/images/MMBN 5/End Area 5.png b/images/End Area 5.png similarity index 100% rename from images/MMBN 5/End Area 5.png rename to images/End Area 5.png diff --git a/images/MMBN 5/Factory Comp 1.png b/images/Factory Comp 1.png similarity index 100% rename from images/MMBN 5/Factory Comp 1.png rename to images/Factory Comp 1.png diff --git a/images/MMBN 5/Factory Comp 2.png b/images/Factory Comp 2.png similarity index 100% rename from images/MMBN 5/Factory Comp 2.png rename to images/Factory Comp 2.png diff --git a/images/MMBN 5/Factory Comp 3.png b/images/Factory Comp 3.png similarity index 100% rename from images/MMBN 5/Factory Comp 3.png rename to images/Factory Comp 3.png diff --git a/images/MMBN 5/Factory Comp 4.png b/images/Factory Comp 4.png similarity index 100% rename from images/MMBN 5/Factory Comp 4.png rename to images/Factory Comp 4.png diff --git a/images/MMBN 5/Gargoyle Comp 1.png b/images/Gargoyle Comp 1.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 1.png rename to images/Gargoyle Comp 1.png diff --git a/images/MMBN 5/Gargoyle Comp 2.png b/images/Gargoyle Comp 2.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 2.png rename to images/Gargoyle Comp 2.png diff --git a/images/MMBN 5/Gargoyle Comp 3.png b/images/Gargoyle Comp 3.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 3.png rename to images/Gargoyle Comp 3.png diff --git a/images/MMBN 5/Gargoyle Comp 4.png b/images/Gargoyle Comp 4.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 4.png rename to images/Gargoyle Comp 4.png diff --git a/images/MMBN 6/ACDC Area.PNG b/images/MMBN 6/ACDC Area.PNG deleted file mode 100644 index 22c7fec..0000000 Binary files a/images/MMBN 6/ACDC Area.PNG and /dev/null differ diff --git a/images/MMBN 6/Aquarium Comp 1.PNG b/images/MMBN 6/Aquarium Comp 1.PNG deleted file mode 100644 index 8d325df..0000000 Binary files a/images/MMBN 6/Aquarium Comp 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Aquarium Comp 2.PNG b/images/MMBN 6/Aquarium Comp 2.PNG deleted file mode 100644 index 1db30c1..0000000 Binary files a/images/MMBN 6/Aquarium Comp 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Aquarium Comp 3.PNG b/images/MMBN 6/Aquarium Comp 3.PNG deleted file mode 100644 index 7eda0e9..0000000 Binary files a/images/MMBN 6/Aquarium Comp 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Central Area 1.PNG b/images/MMBN 6/Central Area 1.PNG deleted file mode 100644 index e605adf..0000000 Binary files a/images/MMBN 6/Central Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Central Area 2.PNG b/images/MMBN 6/Central Area 2.PNG deleted file mode 100644 index b005bf5..0000000 Binary files a/images/MMBN 6/Central Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Central Area 3.PNG b/images/MMBN 6/Central Area 3.PNG deleted file mode 100644 index be94287..0000000 Binary files a/images/MMBN 6/Central Area 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Graveyard ARea 0.PNG b/images/MMBN 6/Graveyard ARea 0.PNG deleted file mode 100644 index 3b8c00b..0000000 Binary files a/images/MMBN 6/Graveyard ARea 0.PNG and /dev/null differ diff --git a/images/MMBN 6/Graveyard Area 1.PNG b/images/MMBN 6/Graveyard Area 1.PNG deleted file mode 100644 index bb1cd55..0000000 Binary files a/images/MMBN 6/Graveyard Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Green Area 1.PNG b/images/MMBN 6/Green Area 1.PNG deleted file mode 100644 index d6e78cf..0000000 Binary files a/images/MMBN 6/Green Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Green Area 2.PNG b/images/MMBN 6/Green Area 2.PNG deleted file mode 100644 index f1887ee..0000000 Binary files a/images/MMBN 6/Green Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Immortal Area.PNG b/images/MMBN 6/Immortal Area.PNG deleted file mode 100644 index 424a401..0000000 Binary files a/images/MMBN 6/Immortal Area.PNG and /dev/null differ diff --git a/images/MMBN 6/Judge Tree Area 1.PNG b/images/MMBN 6/Judge Tree Area 1.PNG deleted file mode 100644 index d8e76df..0000000 Binary files a/images/MMBN 6/Judge Tree Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Judge Tree Area 2.PNG b/images/MMBN 6/Judge Tree Area 2.PNG deleted file mode 100644 index a0e148d..0000000 Binary files a/images/MMBN 6/Judge Tree Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Judge Tree Area 3.PNG b/images/MMBN 6/Judge Tree Area 3.PNG deleted file mode 100644 index eb02838..0000000 Binary files a/images/MMBN 6/Judge Tree Area 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Mr. Weather Comp 1.PNG b/images/MMBN 6/Mr. Weather Comp 1.PNG deleted file mode 100644 index f3882c8..0000000 Binary files a/images/MMBN 6/Mr. Weather Comp 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Mr. Weather Comp 2.PNG b/images/MMBN 6/Mr. Weather Comp 2.PNG deleted file mode 100644 index 5b4f910..0000000 Binary files a/images/MMBN 6/Mr. Weather Comp 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Mr. Weather Comp 3.PNG b/images/MMBN 6/Mr. Weather Comp 3.PNG deleted file mode 100644 index deafd65..0000000 Binary files a/images/MMBN 6/Mr. Weather Comp 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Pavillion Comp 1.PNG b/images/MMBN 6/Pavillion Comp 1.PNG deleted file mode 100644 index 4f41b2c..0000000 Binary files a/images/MMBN 6/Pavillion Comp 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Pavillion Comp 2.PNG b/images/MMBN 6/Pavillion Comp 2.PNG deleted file mode 100644 index 27e0f2d..0000000 Binary files a/images/MMBN 6/Pavillion Comp 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Pavillion Comp 3.PNG b/images/MMBN 6/Pavillion Comp 3.PNG deleted file mode 100644 index 2315fa1..0000000 Binary files a/images/MMBN 6/Pavillion Comp 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Pavillion Comp 4.PNG b/images/MMBN 6/Pavillion Comp 4.PNG deleted file mode 100644 index 8271579..0000000 Binary files a/images/MMBN 6/Pavillion Comp 4.PNG and /dev/null differ diff --git a/images/MMBN 6/Robo Control Area 1.PNG b/images/MMBN 6/Robo Control Area 1.PNG deleted file mode 100644 index 2f57756..0000000 Binary files a/images/MMBN 6/Robo Control Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Robo Control Area 2.PNG b/images/MMBN 6/Robo Control Area 2.PNG deleted file mode 100644 index d04ee6c..0000000 Binary files a/images/MMBN 6/Robo Control Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/SeaSide Area 1.PNG b/images/MMBN 6/SeaSide Area 1.PNG deleted file mode 100644 index 5a9169b..0000000 Binary files a/images/MMBN 6/SeaSide Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/SeaSide Area 2.PNG b/images/MMBN 6/SeaSide Area 2.PNG deleted file mode 100644 index dafdd82..0000000 Binary files a/images/MMBN 6/SeaSide Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/SeaSide Area 3.PNG b/images/MMBN 6/SeaSide Area 3.PNG deleted file mode 100644 index 227fe5c..0000000 Binary files a/images/MMBN 6/SeaSide Area 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Sky Area 1.PNG b/images/MMBN 6/Sky Area 1.PNG deleted file mode 100644 index c42492b..0000000 Binary files a/images/MMBN 6/Sky Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Sky Area 2.PNG b/images/MMBN 6/Sky Area 2.PNG deleted file mode 100644 index a3bf548..0000000 Binary files a/images/MMBN 6/Sky Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Underground Area 1.PNG b/images/MMBN 6/Underground Area 1.PNG deleted file mode 100644 index 607ed17..0000000 Binary files a/images/MMBN 6/Underground Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Underground Area 2.PNG b/images/MMBN 6/Underground Area 2.PNG deleted file mode 100644 index 0d11880..0000000 Binary files a/images/MMBN 6/Underground Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Undernet Area 1.PNG b/images/MMBN 6/Undernet Area 1.PNG deleted file mode 100644 index 49353ca..0000000 Binary files a/images/MMBN 6/Undernet Area 1.PNG and /dev/null differ diff --git a/images/MMBN 6/Undernet Area 2.PNG b/images/MMBN 6/Undernet Area 2.PNG deleted file mode 100644 index 7b6f271..0000000 Binary files a/images/MMBN 6/Undernet Area 2.PNG and /dev/null differ diff --git a/images/MMBN 6/Undernet Area 3.PNG b/images/MMBN 6/Undernet Area 3.PNG deleted file mode 100644 index 6bfefc7..0000000 Binary files a/images/MMBN 6/Undernet Area 3.PNG and /dev/null differ diff --git a/images/MMBN 6/Undernet Zero.PNG b/images/MMBN 6/Undernet Zero.PNG deleted file mode 100644 index 5c5e276..0000000 Binary files a/images/MMBN 6/Undernet Zero.PNG and /dev/null differ diff --git a/images/MMBN 5/Main Comp 1.png b/images/Main Comp 1.png similarity index 100% rename from images/MMBN 5/Main Comp 1.png rename to images/Main Comp 1.png diff --git a/images/MMBN 5/Main Comp 2.png b/images/Main Comp 2.png similarity index 100% rename from images/MMBN 5/Main Comp 2.png rename to images/Main Comp 2.png diff --git a/images/MMBN 5/Nebula 1.png b/images/Nebula 1.png similarity index 100% rename from images/MMBN 5/Nebula 1.png rename to images/Nebula 1.png diff --git a/images/MMBN 5/Nebula 2.png b/images/Nebula 2.png similarity index 100% rename from images/MMBN 5/Nebula 2.png rename to images/Nebula 2.png diff --git a/images/MMBN 5/Nebula 3.png b/images/Nebula 3.png similarity index 100% rename from images/MMBN 5/Nebula 3.png rename to images/Nebula 3.png diff --git a/images/MMBN 5/Nebula 4.png b/images/Nebula 4.png similarity index 100% rename from images/MMBN 5/Nebula 4.png rename to images/Nebula 4.png diff --git a/images/MMBN 5/Nebula 5.png b/images/Nebula 5.png similarity index 100% rename from images/MMBN 5/Nebula 5.png rename to images/Nebula 5.png diff --git a/images/MMBN 5/Nebula 6.png b/images/Nebula 6.png similarity index 100% rename from images/MMBN 5/Nebula 6.png rename to images/Nebula 6.png diff --git a/images/MMBN 5/Oran Area 1.png b/images/Oran Area 1.png similarity index 100% rename from images/MMBN 5/Oran Area 1.png rename to images/Oran Area 1.png diff --git a/images/MMBN 5/Oran Area 2.png b/images/Oran Area 2.png similarity index 100% rename from images/MMBN 5/Oran Area 2.png rename to images/Oran Area 2.png diff --git a/images/MMBN 5/Oran Area 3.png b/images/Oran Area 3.png similarity index 100% rename from images/MMBN 5/Oran Area 3.png rename to images/Oran Area 3.png diff --git a/images/MMBN 5/SciLab Area 1.png b/images/SciLab Area 1.png similarity index 100% rename from images/MMBN 5/SciLab Area 1.png rename to images/SciLab Area 1.png diff --git a/images/MMBN 5/SciLab Area 2.png b/images/SciLab Area 2.png similarity index 100% rename from images/MMBN 5/SciLab Area 2.png rename to images/SciLab Area 2.png diff --git a/images/MMBN 5/SciLab Area 3.png b/images/SciLab Area 3.png similarity index 100% rename from images/MMBN 5/SciLab Area 3.png rename to images/SciLab Area 3.png diff --git a/images/MMBN 5/SciLab Area 4.png b/images/SciLab Area 4.png similarity index 100% rename from images/MMBN 5/SciLab Area 4.png rename to images/SciLab Area 4.png diff --git a/images/MMBN 5/Ship Comp 1.png b/images/Ship Comp 1.png similarity index 100% rename from images/MMBN 5/Ship Comp 1.png rename to images/Ship Comp 1.png diff --git a/images/MMBN 5/Ship Comp 2.png b/images/Ship Comp 2.png similarity index 100% rename from images/MMBN 5/Ship Comp 2.png rename to images/Ship Comp 2.png diff --git a/images/MMBN 5/Ship Comp 3.png b/images/Ship Comp 3.png similarity index 100% rename from images/MMBN 5/Ship Comp 3.png rename to images/Ship Comp 3.png diff --git a/images/MMBN 5/Ship Comp 4.png b/images/Ship Comp 4.png similarity index 100% rename from images/MMBN 5/Ship Comp 4.png rename to images/Ship Comp 4.png diff --git a/images/MMBN 5/Squirrel Comp 1.png b/images/Squirrel Comp 1.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 1.png rename to images/Squirrel Comp 1.png diff --git a/images/MMBN 5/Squirrel Comp 10.png b/images/Squirrel Comp 10.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 10.png rename to images/Squirrel Comp 10.png diff --git a/images/MMBN 5/Squirrel Comp 11.png b/images/Squirrel Comp 11.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 11.png rename to images/Squirrel Comp 11.png diff --git a/images/MMBN 5/Squirrel Comp 12.png b/images/Squirrel Comp 12.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 12.png rename to images/Squirrel Comp 12.png diff --git a/images/MMBN 5/Squirrel Comp 13.png b/images/Squirrel Comp 13.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 13.png rename to images/Squirrel Comp 13.png diff --git a/images/MMBN 5/Squirrel Comp 14.png b/images/Squirrel Comp 14.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 14.png rename to images/Squirrel Comp 14.png diff --git a/images/MMBN 5/Squirrel Comp 15.png b/images/Squirrel Comp 15.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 15.png rename to images/Squirrel Comp 15.png diff --git a/images/MMBN 5/Squirrel Comp 16.png b/images/Squirrel Comp 16.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 16.png rename to images/Squirrel Comp 16.png diff --git a/images/MMBN 5/Squirrel Comp 2.png b/images/Squirrel Comp 2.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 2.png rename to images/Squirrel Comp 2.png diff --git a/images/MMBN 5/Squirrel Comp 3.png b/images/Squirrel Comp 3.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 3.png rename to images/Squirrel Comp 3.png diff --git a/images/MMBN 5/Squirrel Comp 4.png b/images/Squirrel Comp 4.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 4.png rename to images/Squirrel Comp 4.png diff --git a/images/MMBN 5/Squirrel Comp 5.png b/images/Squirrel Comp 5.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 5.png rename to images/Squirrel Comp 5.png diff --git a/images/MMBN 5/Squirrel Comp 6.png b/images/Squirrel Comp 6.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 6.png rename to images/Squirrel Comp 6.png diff --git a/images/MMBN 5/Squirrel Comp 7.png b/images/Squirrel Comp 7.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 7.png rename to images/Squirrel Comp 7.png diff --git a/images/MMBN 5/Squirrel Comp 8.png b/images/Squirrel Comp 8.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 8.png rename to images/Squirrel Comp 8.png diff --git a/images/MMBN 5/Squirrel Comp 9.png b/images/Squirrel Comp 9.png similarity index 100% rename from images/MMBN 5/Squirrel Comp 9.png rename to images/Squirrel Comp 9.png diff --git a/images/MMBN 5/Undernet 1.png b/images/Undernet 1.png similarity index 100% rename from images/MMBN 5/Undernet 1.png rename to images/Undernet 1.png diff --git a/images/MMBN 5/Undernet 2.png b/images/Undernet 2.png similarity index 100% rename from images/MMBN 5/Undernet 2.png rename to images/Undernet 2.png diff --git a/images/MMBN 5/Undernet 3.png b/images/Undernet 3.png similarity index 100% rename from images/MMBN 5/Undernet 3.png rename to images/Undernet 3.png diff --git a/images/MMBN 5/Undernet 4.png b/images/Undernet 4.png similarity index 100% rename from images/MMBN 5/Undernet 4.png rename to images/Undernet 4.png diff --git a/mmbn5m.lpi b/mmbn5m.lpi index 8ae2d7b..6ac1b86 100644 --- a/mmbn5m.lpi +++ b/mmbn5m.lpi @@ -5,7 +5,7 @@ - + <Title Value="mmbn5mm"/> <Scaled Value="True"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> @@ -14,18 +14,13 @@ </XPManifest> <Icon Value="0"/> </General> - <i18n> - <EnableI18N Value="True"/> - <OutDir Value="po"/> - </i18n> <VersionInfo> <UseVersionInfo Value="True"/> <AutoIncrementBuild Value="True"/> - <MinorVersionNr Value="2"/> - <RevisionNr Value="1"/> - <BuildNr Value="19"/> + <MinorVersionNr Value="1"/> + <RevisionNr Value="5"/> + <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"/> @@ -101,9 +96,6 @@ <Item> <Name Value="EFOpenError"/> </Item> - <Item> - <Name Value="EConvertError"/> - </Item> </Exceptions> </Debugging> </CONFIG> diff --git a/mmbn5m.lpr b/mmbn5m.lpr index d88de49..b0f2b7f 100644 --- a/mmbn5m.lpr +++ b/mmbn5m.lpr @@ -17,7 +17,7 @@ uses begin RequireDerivedFormResource:=True; - Application.Title:='mmbn56mm'; + Application.Title:='mmbn5mm'; Application.Scaled:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); diff --git a/mmbn5m.lps b/mmbn5m.lps index fd5fe7f..aa61f45 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -9,7 +9,7 @@ <Version Value="11"/> <PathDelim Value="\"/> <Target> - <Filename Value="mmbn56mm"/> + <Filename Value="mmbn5mm"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> @@ -47,8 +47,8 @@ <Filename Value="mmbn5m.lpr"/> <IsPartOfProject Value="True"/> <EditorIndex Value="2"/> - <CursorPos X="49" Y="20"/> - <UsageCount Value="65"/> + <CursorPos X="69" Y="19"/> + <UsageCount Value="44"/> <Loaded Value="True"/> </Unit> <Unit> @@ -59,57 +59,25 @@ <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> <IsVisibleTab Value="True"/> - <TopLine Value="364"/> - <CursorPos X="52" Y="411"/> - <UsageCount Value="65"/> + <TopLine Value="330"/> + <CursorPos X="81" Y="340"/> + <UsageCount Value="44"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit> <Unit> <Filename Value="C:\lazarus\lcl\interfaces\win32\win32listsl.inc"/> - <EditorIndex Value="-1"/> + <EditorIndex Value="3"/> <TopLine Value="128"/> <CursorPos Y="152"/> - <UsageCount Value="20"/> + <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="10"/> - </Unit> - <Unit> - <Filename Value="rooms.ini"/> - <EditorIndex Value="4"/> - <TopLine Value="274"/> - <CursorPos X="52" Y="298"/> - <UsageCount Value="20"/> - <Loaded Value="True"/> - <DefaultSyntaxHighlighter Value="Ini"/> - </Unit> - <Unit> - <Filename Value="mmbn5m.lpi"/> - <EditorIndex Value="-1"/> - <CursorPos Y="46"/> - <UsageCount Value="8"/> - <DefaultSyntaxHighlighter Value="XML"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\lcl\lcltranslator.pas"/> - <UnitName Value="LCLTranslator"/> - <EditorIndex Value="1"/> - <TopLine Value="95"/> - <CursorPos Y="95"/> - <UsageCount Value="12"/> - <Loaded Value="True"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\components\lazutils\translations.pas"/> - <UnitName Value="Translations"/> - <EditorIndex Value="3"/> - <TopLine Value="738"/> - <CursorPos X="54" Y="775"/> <UsageCount Value="11"/> <Loaded Value="True"/> </Unit> @@ -117,123 +85,123 @@ <JumpHistory HistoryIndex="29"> <Position> <Filename Value="unit1.pas"/> - <Caret Line="9" Column="34" TopLine="9"/> + <Caret Line="165" Column="36" TopLine="141"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="432" Column="49" TopLine="387"/> - </Position> - <Position> - <Filename Value="mmbn5m.lpr"/> - <Caret Line="21" Column="21"/> + <Caret Line="227" Column="47" TopLine="195"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="435" Column="35" TopLine="408"/> - </Position> - <Position> - <Filename Value="mmbn5m.lpr"/> - <Caret Line="13" Column="16"/> + <Caret Line="151" Column="59" TopLine="144"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="428" Column="73" TopLine="409"/> + <Caret Line="155" Column="32" TopLine="144"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="435" Column="50" TopLine="388"/> - </Position> - <Position> - <Filename Value="C:\lazarus\components\lazutils\translations.pas"/> - <Caret Line="762" Column="128" TopLine="738"/> + <Caret Line="126" Column="27" TopLine="121"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="435" Column="44" TopLine="406"/> + <Caret Line="153" Column="42" TopLine="140"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="437" Column="54" TopLine="406"/> + <Caret Line="211" Column="22" TopLine="209"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="26" Column="92"/> + <Caret Line="235" Column="59" TopLine="211"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="414" Column="53" TopLine="390"/> + <Caret Line="216" TopLine="192"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="412" Column="27" TopLine="387"/> + <Caret Line="116" Column="18" TopLine="85"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="211" Column="5" TopLine="165"/> + <Caret Line="115" Column="24" TopLine="92"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="409" Column="19" TopLine="399"/> + <Caret Line="234" Column="46" TopLine="205"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="175" Column="24" TopLine="151"/> + <Caret Line="235" Column="45" TopLine="211"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="9" Column="73"/> + <Caret Line="211" Column="11" TopLine="163"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="188" Column="20" TopLine="173"/> + <Caret Line="212" Column="53" TopLine="180"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="189" Column="25" TopLine="171"/> + <Caret Line="163" Column="43" TopLine="147"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="208" Column="3" TopLine="186"/> + <Caret Line="174" Column="73" TopLine="149"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="453" Column="5" TopLine="408"/> + <Caret Line="167" Column="47" TopLine="149"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="209" Column="46" TopLine="197"/> + <Caret Line="140" Column="20" TopLine="106"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="224" Column="58" TopLine="192"/> + <Caret Line="141" Column="54" TopLine="116"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="210" Column="59" TopLine="210"/> + <Caret Line="9" Column="36"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="195" Column="6" TopLine="171"/> + <Caret Line="60" Column="6" TopLine="36"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="214" Column="66" TopLine="190"/> + <Caret Line="130" Column="33" TopLine="99"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="415" Column="13" TopLine="375"/> - </Position> - <Position> - <Filename Value="rooms.ini"/> - <Caret Line="51" Column="40" TopLine="25"/> + <Caret Line="334" TopLine="293"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="201" Column="82" TopLine="174"/> + <Caret Line="301" Column="50" TopLine="266"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="265" Column="25" TopLine="241"/> + <Caret Line="352" TopLine="315"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="146" TopLine="139"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="140" Column="3" TopLine="138"/> + </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"/> </Position> </JumpHistory> <RunParams> diff --git a/mmbn5m.res b/mmbn5m.res index 29a13f5..e129932 100644 Binary files a/mmbn5m.res and b/mmbn5m.res differ diff --git a/po/mmbn56mm.en.po b/po/mmbn56mm.en.po deleted file mode 100644 index b6ed18b..0000000 --- a/po/mmbn56mm.en.po +++ /dev/null @@ -1,111 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: tform1.caption -msgid "MMBN5-6M" -msgstr "MMBN5-6M" - -#: tform1.edit_room_button.caption -msgid "Edit Room" -msgstr "Edit Room" - -#: tform1.gamebox.text -msgid "MMBN 5" -msgstr "MMBN 5" - -#: tform1.label1.caption -msgid "Game:" -msgstr "Game:" - -#: tform1.langbox.text -msgid "en" -msgstr "" - -#: tform1.map_stretch_checkbox.caption -msgid "Stretch" -msgstr "Stretch" - -#: tform1.minus_spoil1.caption -msgid "-" -msgstr "-" - -#: tform1.plus_spoil.caption -msgid "+" -msgstr "+" - -#: tform1.room_name_label.caption -msgctxt "tform1.room_name_label.caption" -msgid "Run the game, then press \"Start\"" -msgstr "Run the game, then press \"Start\"" - -#: tform1.spoils_label.caption -msgid "Spoils:" -msgstr "Spoils:" - -#: tform1.start_stop_button.caption -msgctxt "tform1.start_stop_button.caption" -msgid "Start" -msgstr "Start" - -#: unit1.adding_item -msgid "Adding item to Room #" -msgstr "Adding item to Room #" - -#: unit1.app_caption -msgid "MMBN5-6M: Reading from process ID" -msgstr "MMBN5-6M: Reading from process ID" - -#: unit1.editing_item -msgid "Editing item in Room #" -msgstr "Editing item in Room #" - -#: unit1.editing_room -msgid "Editing Room #" -msgstr "Editing Room #" - -#: unit1.enter_item_name -msgid "Enter item's name" -msgstr "Enter item's name" - -#: unit1.enter_room_name -msgid "Enter this Room's name" -msgstr "Enter this Room's name" - -#: unit1.error_game_memory_not_read -msgid "Error. Game's memory not read." -msgstr "Error. Game's memory not read." - -#: unit1.error_game_not_running -msgid "Error. Make sure the game's running." -msgstr "Error. Make sure the game's running." - -#: unit1.error_hotkey_registration_failed -msgid "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen." -msgstr "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen." - -#: unit1.error_unable_to_read_game_memory -msgid "Error. Can't read game's memory." -msgstr "Error. Can't read game's memory." - -#: unit1.room_number -msgid "Room #" -msgstr "Room #" - -#: unit1.run_the_game_notice -msgctxt "unit1.run_the_game_notice" -msgid "Run the game, then press \"Start\"" -msgstr "Run the game, then press \"Start\"" - -#: unit1.start_button_stop -msgid "Stop" -msgstr "Stop" - -#: unit1.start_button_strat -msgctxt "unit1.start_button_strat" -msgid "Start" -msgstr "Start" - -#: unit1.unknown_room -msgid "Unknown" -msgstr "Unknown" - diff --git a/po/mmbn56mm.ru.po b/po/mmbn56mm.ru.po deleted file mode 100644 index 1532215..0000000 --- a/po/mmbn56mm.ru.po +++ /dev/null @@ -1,107 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: tform1.caption -msgid "MMBN5-6M" -msgstr "" - -#: tform1.edit_room_button.caption -msgid "Edit Room" -msgstr "Дать Комнате Имя" - -#: tform1.gamebox.text -msgid "MMBN 5" -msgstr "" - -#: tform1.label1.caption -msgid "Game:" -msgstr "Игра:" - -#: tform1.map_stretch_checkbox.caption -msgid "Stretch" -msgstr "Растянуть карту" - -#: tform1.minus_spoil1.caption -msgid "-" -msgstr "Удалить" - -#: tform1.plus_spoil.caption -msgid "+" -msgstr "Добавить" - -#: tform1.room_name_label.caption -msgctxt "tform1.room_name_label.caption" -msgid "Run the game, then press \"Start\"" -msgstr "Запусти игру, нажми \"Запуск\"" - -#: tform1.spoils_label.caption -msgid "Spoils:" -msgstr "Находки:" - -#: tform1.start_stop_button.caption -msgctxt "tform1.start_stop_button.caption" -msgid "Start" -msgstr "Запуск" - -#: unit1.adding_item -msgid "Adding item to Room #" -msgstr "Новая находка в Комнате №" - -#: unit1.app_caption -msgid "MMBN5-6M: Reading from process ID" -msgstr "MMBN5-6M: Чтение процесса с идентификатором" - -#: unit1.editing_item -msgid "Editing item in Room #" -msgstr "Редактирование находки в Комнате №" - -#: unit1.editing_room -msgid "Editing Room #" -msgstr "Переименование Комнаты №" - -#: unit1.enter_item_name -msgid "Enter item's name" -msgstr "Введи название находки" - -#: unit1.enter_room_name -msgid "Enter this Room's name" -msgstr "Введи название Комнаты" - -#: unit1.error_game_memory_not_read -msgid "Error. Game's memory not read." -msgstr "Ошибка. Память приложения не прочитана." - -#: unit1.error_game_not_running -msgid "Error. Make sure the game's running." -msgstr "Ошибка. Игра точно запущена?" - -#: unit1.error_hotkey_registration_failed -msgid "HotKey registration failed. You won't be able to press Win+Y to temporarily view map in full screen." -msgstr "Регистрация горячих клавиш не удалась. Нажимать Win+Y для переключения в полноэкранный режим не выйдет." - -#: unit1.error_unable_to_read_game_memory -msgid "Error. Can't read game's memory." -msgstr "Ошибка. Чтение памяти приложения невозможно." - -#: unit1.room_number -msgid "Room #" -msgstr "Комната №" - -#: unit1.run_the_game_notice -msgctxt "unit1.run_the_game_notice" -msgid "Run the game, then press \"Start\"" -msgstr "Запусти игру, нажми \"Запуск\"" - -#: unit1.start_button_stop -msgid "Stop" -msgstr "Остановка" - -#: unit1.start_button_strat -msgctxt "unit1.start_button_strat" -msgid "Start" -msgstr "Запуск" - -#: unit1.unknown_room -msgid "Unknown" -msgstr "Неизвестно где..." - diff --git a/rooms.ini b/rooms.ini index 0de81b8..fe62670 100644 --- a/rooms.ini +++ b/rooms.ini @@ -1,4 +1,4 @@ -[Rooms MMBN 5] +[Rooms] 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=Nebula Control +5=Regal Base 1 142=Squirrel Comp 1 398=Squirrel Comp 2 654=Squirrel Comp 3 @@ -120,20 +120,8 @@ 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 MMBN 5] +[Spoils] 397=RegUP2,1000z 141=HolyPanl*,RegUP1 401=Vulcan2 C,HP Memory,HP Memory [N} @@ -141,13 +129,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,45654128,68799876 +1536=48958798,28706568 515=00798216 1164=400z 1420=Battery 1676=Reg Up 2 1932=Sub Memory -2188=Don'tNeedData,HP Memory +2188=Don'tNeedData 130=ShipKey,YoYo F,Spin White 386=700z,Don'tNeedData,ShipKey,RegUp3 642=GrasSeed A @@ -157,13 +145,13 @@ 2700=Mem Data,Right panel,press A 2445=Metagel T 2956=HP+100 -260=RegUP1,45654128 +260=RegUP1 3212=RegUP2 3468=HP Memory 2957=Air Spin 2 B 1416=CasBannr 1028=HP Memory -131=Speed +1,HP Memory +131=Speed +1 387=RegUp2,MegEnBom C 643=HP+100,HP Memry 899=Slasher R @@ -178,192 +166,3 @@ 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 -18446744073709486080=Title -0=ACDC Town -281474976841728=Class 6-2 -844424939307008=Class 6-2 Comp -1125899916017664=Class 1-1 Comp -562949953552384=Class 1-1 -844424930263040=Class 1-2 -8388608=Robo Control Area 1 -281474985099264=Robo Control Area 2 -562949962858496=Central Area 3 -2251799813816320=Mayor Cain's Office -1688849869438976=Bathroom Comp (Lan's Toilet) -9502720=Seaside Area 1 -3659174706479104=Stuffed Toy Shop Comp -281474986213376=Seaside Area 2 -844424939044864=Aquarium Home Page -562949962924032=Seaside Area 3 -196608=Seaside Town -844424939372544=Water Machine Comp -2251799822860288=Fish Sticks Shop Comp -281474976907264=Aquarium 1 -844424930328576=Auditorium (Aquarium Arena) -562949953617920=Aquarium 2 -8454144=Aquarium Comp 1 -281474985164800=Aquarium Comp 2 -562949961875456=Aquarium Comp 3 -2533274790526976=Research Lab 1 -281474985885696=Lab's Comp 1 -1125899906908160=AsterLand -1688849869504512=Popcorn Shop Comp -1125899907039232=Control Room (Aquarium) -2533274799570944=Security Camera Comp (Class 6-1) -262144=Green Town -1125899916083200=Symbol Comp (Green Town) -1407374892466176=Green Home Page (TRUTH Tablet) -9568256=Green Area 1 -2814749776281600=Book Comp -281474976972800=Court Foyer -281474986278912=Green Area 2 -281474986475520=Undernet Zero -562949953683456=Courtroom (Green Town) -844424930394112=The Punishment Room -562949962661888=Punishment Chair Comp -8519680=Judge Tree Area 1 -281474985230336=Judge Tree Area 2 -562949961940992=Judge Tree Area 3 -327680=Admin -1970324846149632=Elevator Comp -281474977038336=Sky Town -3096224752992256=Fan Comp -3659174706413568=Heater Comp -3940649683124224=Shower Comp -3377699729702912=Air Conditioner Comp -2814749776347136=Oxygen Tank Comp -2533274799636480=Observation Comp -562949953748992=OpRoom (Sky City) -4222124659834880=Heliport Comp -281474986409984=Sky Area 2 -9699328=Sky Area 1 -844424930459648=Force Room -1688849869176832=Sky Home Page -9764864=Undernet Area 1 -9240576=Lab's Comp 2 -8585216=Mr. Weather Comp 1 -281474985295872=Mr. Weather Comp 2 -562949962006528=Mr. Weather Comp 3 -281474977103872=WWW OP -562949963186176=Undernet Area 2 -281474985951232=Vending Machine Comp -2814749767237632=Research Lab 2 -3940649683189760=Dog House Comp -281474985623552=ACDC Home Page -562949963120640=ACDC Area -9633792=Underground Area 1 -281474986344448=Underground Area 2 -3377699729768448=Mascot Comp -8716288=Pavillion Comp 1 -562949953814528=Seaside Hall -844424930525184=Green Hall -281474985426944=Pavillion Comp 2 -1125899907235840=Sky Hall -562949962137600=Pavillion Comp 3 -844424938848256=Pavillion Comp 4 -1125899915558912=Copy Bot Comp -281474976710656=ACDC Class 6-1 ? - -[Spoils MMBN 6] -562949962596352=700z,Thunder * -9175040=600z -9437184=MiniEnergy,5000z [WWWID] -281474986147840=Reg UP2,Copy Damage,Sub memory [Btl] -844424939307008={PMD},Reg UP2 -1125899916017664=Full Energy -8388608=Water Data,Spreader1 M,HP Memory -281474985099264=Reg UP2,Rocovery 30 *,ImgData [story] -562949962858496=Hi Cannon L,Elec Sword {PMD} -1688849869438976=Unlocker -3659174706479104=Dubl Shot *,1000z -281474986213376=Panel Return *,Vulcan 2D,Attack +1 [Tengu] -844424939044864=Tornado L {PMD},Geddon A [Pnl Return],HP Memory -562949962924032=Wide Blade B {PMD},Reg Up 2,HP Memory {S},Bamboo Sword W {S},Recov 80 K {S},Barr 100 H {S},Time Bomb 1 {S} -844424939372544=Barr 100 H -2251799822860288=White Capsule *,Unlocker -844424930328576=Reg UP1 -8454144=Life Sync *,HP Memory -281474985164800=Reg UP1,FstBarr -562949961875456=HP + 50,Hi Cannon M -281474985885696=FireHit1 F,Fan * -9502720=Sub Memory [Aqua],HP Memory Aquaman has no use for it ;p -1125899906908160=Full Energy [c] -1407374883684352=QuizBook -1688849869504512=HP memory -2533274799570944=HP Memory [story],Expo Folder [story],Jungle,3000z -1125899916083200=Reg UP 2,2400z -1407374892466176=BlkBomb F {PMD},HP Memory -2814749776281600=Yoyo *,Sub Memory -9568256=Lance W {PMD},Spreader2 C -281474986278912=Speed +1,Auth Data,HP Memory,Holy Panel A (WWWID) -281474986475520=Reg UP 2 [Tengu] -281474976972800=87341489 -562949962661888=Guardion O {PMD},Full Energy -8519680=ComingRd *,StepSword L -281474985230336=YoYo N,HP Memory -562949961940992=Reg UP 3,Expansion Memory -1970324846149632=Speed +1 -3096224752992256=1600z,OilBody -3659174706413568=1000z,Charge +1 -3940649683124224=Rush Food,Reg UP1,1 BugFrags -3377699729702912=ColorPt *,Reg UP 1 -562949953748992=HP Memory -2814749776347136=3 BugFrags,BugFix P {PMD} -2533274799636480=Reg UP2,3000z -4222124659834880=HP +50,Unlocker -281474986409984=Reg UP3,M-Cannon S,10000z {YMD},Vacuum Data -9699328=Fish,Spin Blue {PMD},HP+100 -1688849869176832=Hp Link,Vulcan3 A,AutoHeal -9764864=Reg UP 1 -9240576=Expansion Memory,StepSword B {PMD} -8585216=Reg UP 1,Spreader3 S -281474985295872=Shield,HP Memory -562949962006528=Spin Pink,Recov120 F -562949963186176=Recov150 M,AntiDmg {PMD} -281474985951232=Battery,1200z -65536=HP Memory {story} -3940649683189760=3 Bug Frags,GoingRd * -0=HP Memory -281474985623552=Ice Seed *,VarSwrd W {PMD} -562949963120640=Atk+30 * {PMD},ACDCKyDt (story),Spin White (Rush),HP +300 (WWWID) -9633792=Air Shoes {PMD} -2251799813816320=Reg UP 1 -3377699729768448=Reg UP 1,M-Cannon * -562949953814528=Reg UP 2 -8716288=Recov200 Z,Spreader3 * -281474985426944=Reg UP 2,GunDelS2 E -562949962137600=HP Memory,Attack+1 -844424938848256=6000z,Long Blade B - -[Settings] -Language=ru diff --git a/unit1.lfm b/unit1.lfm index 4d199fe..52df579 100644 --- a/unit1.lfm +++ b/unit1.lfm @@ -1,12 +1,11 @@ object Form1: TForm1 - Left = 821 - Height = 478 - Top = 472 - Width = 792 - Anchors = [akTop] - Caption = 'MMBN5-6M' - ClientHeight = 478 - ClientWidth = 792 + Left = 1657 + Height = 448 + Top = 313 + Width = 528 + Caption = 'MMBN5M' + ClientHeight = 448 + ClientWidth = 528 Font.CharSet = ANSI_CHARSET Font.Height = -16 Font.Name = 'Liberation Mono' @@ -15,15 +14,16 @@ object Form1: TForm1 OnClose = FormClose OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '3.2.0.0' + LCLVersion = '2.2.6.0' object room_name_label: TLabel - AnchorSideLeft.Control = Splitter2 + AnchorSideLeft.Control = start_stop_button AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner - Left = 231 + Left = 136 Height = 18 Top = 8 Width = 320 + BorderSpacing.Left = 8 BorderSpacing.Top = 8 Caption = 'Run the game, then press "Start"' Color = clGradientInactiveCaption @@ -31,20 +31,18 @@ object Form1: TForm1 Transparent = False end object map_image: TImage - AnchorSideLeft.Control = Splitter2 - AnchorSideLeft.Side = asrBottom + AnchorSideLeft.Control = room_name_label AnchorSideTop.Control = room_name_label AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom - Left = 232 - Height = 436 + Left = 136 + Height = 406 Top = 34 - Width = 552 + Width = 384 Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 1 BorderSpacing.Top = 8 BorderSpacing.Right = 8 BorderSpacing.Bottom = 8 @@ -53,231 +51,126 @@ object Form1: TForm1 Proportional = True Stretch = True end - object Splitter1: TSplitter - Left = 787 - Height = 478 - Top = 0 - Width = 5 - Align = alRight - ResizeAnchor = akRight - end - object Panel1: TPanel - Left = 0 - Height = 478 - Top = 0 - Width = 227 - Align = alLeft - BevelOuter = bvNone - ClientHeight = 478 - ClientWidth = 227 - TabOrder = 1 - object plus_spoil: TButton - AnchorSideLeft.Control = Panel1 - AnchorSideBottom.Control = Panel1 - AnchorSideBottom.Side = asrBottom - Left = 8 - Height = 40 - Top = 430 - Width = 104 - Anchors = [akLeft, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Bottom = 8 - Caption = '+' - TabOrder = 0 - OnClick = plus_spoilClick - end - object minus_spoil1: TButton - AnchorSideLeft.Control = plus_spoil - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = plus_spoil - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Panel1 - AnchorSideBottom.Side = asrBottom - Left = 120 - Height = 40 - Top = 430 - Width = 103 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - Caption = '-' - TabOrder = 1 - OnClick = minus_spoil1Click - end - object map_stretch_checkbox: TCheckBox - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = spoils_listbox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = plus_spoil - Left = 8 - Height = 22 - Top = 400 - Width = 215 - Anchors = [akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - Caption = 'Stretch' - TabOrder = 2 - OnChange = map_stretch_checkboxChange - end - object spoils_listbox: TListBox - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = spoils_label - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = plus_spoil - Left = 8 - Height = 250 - Top = 142 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - BorderStyle = bsNone - Color = clGradientInactiveCaption - ItemHeight = 0 - TabOrder = 3 - OnDblClick = spoils_listboxDblClick - end - object spoils_label: TLabel - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = edit_room_button - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 18 - Top = 116 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Spoils:' - ParentColor = False - end - object edit_room_button: TButton - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = start_stop_button - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 30 - Top = 78 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Edit Room' - TabOrder = 4 - OnClick = edit_room_buttonClick - end - object start_stop_button: TSpeedButton - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = gamebox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 30 - Top = 40 - Width = 215 - AllowAllUp = True - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Start' - GroupIndex = 1 - Transparent = False - OnClick = start_stop_buttonClick - end - object gamebox: TComboBox - AnchorSideLeft.Control = Label1 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Panel1 - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = start_stop_button - Left = 66 - Height = 24 - Top = 8 - Width = 157 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - ItemHeight = 18 - ItemIndex = 0 - Items.Strings = ( - 'MMBN 5' - 'MMBN 6' - ) - ReadOnly = True - Style = csOwnerDrawFixed - TabOrder = 5 - Text = 'MMBN 5' - OnSelect = gameboxSelect - end - object Label1: TLabel - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = Panel1 - AnchorSideBottom.Control = gamebox - AnchorSideBottom.Side = asrBottom - Left = 8 - Height = 18 - Top = 11 - Width = 50 - BorderSpacing.Left = 8 - BorderSpacing.Top = 11 - Caption = 'Game:' - ParentColor = False - end - end - object Splitter2: TSplitter - Left = 227 - Height = 478 - Top = 0 - Width = 4 - OnMoved = Splitter2Moved - ResizeStyle = rsLine - end - object langbox: TComboBox + object start_stop_button: TSpeedButton AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 734 - Height = 26 - Top = 1 - Width = 50 - Anchors = [akTop, akRight] - BorderSpacing.Top = 1 + Left = 8 + Height = 30 + Top = 8 + Width = 120 + AllowAllUp = True + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + Caption = 'Start' + GroupIndex = 1 + Transparent = False + OnClick = start_stop_buttonClick + end + object edit_room_button: TButton + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = start_stop_button + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + Left = 8 + Height = 30 + Top = 46 + Width = 120 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 BorderSpacing.Right = 8 - ItemHeight = 18 - ItemIndex = 0 - Items.Strings = ( - 'en' - 'ru' - ) - ReadOnly = True - Style = csDropDownList + Caption = 'Edit Room' + OnClick = edit_room_buttonClick + TabOrder = 0 + end + object spoils_listbox: TListBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = spoils_label + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = plus_spoil + Left = 8 + Height = 250 + Top = 110 + Width = 120 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + BorderStyle = bsNone + Color = clGradientInactiveCaption + ItemHeight = 0 + OnDblClick = spoils_listboxDblClick + TabOrder = 1 + end + object spoils_label: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = edit_room_button + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + Left = 8 + Height = 18 + Top = 84 + Width = 120 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + Caption = 'Spoils:' + ParentColor = False + end + object plus_spoil: TButton + AnchorSideLeft.Control = Owner + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom + Left = 8 + Height = 40 + Top = 400 + Width = 56 + Anchors = [akLeft, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Bottom = 8 + Caption = '+' + OnClick = plus_spoilClick + TabOrder = 2 + end + object minus_spoil1: TButton + AnchorSideLeft.Control = plus_spoil + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom + Left = 72 + Height = 40 + Top = 400 + Width = 56 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + Caption = '-' + OnClick = minus_spoil1Click TabOrder = 3 - Text = 'en' - OnSelect = langboxSelect + end + object map_stretch_checkbox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = spoils_listbox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = plus_spoil + Left = 8 + Height = 22 + Top = 370 + Width = 120 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + Caption = 'Stretch' + OnChange = map_stretch_checkboxChange + TabOrder = 4 end object Timer1: TTimer Enabled = False diff --git a/unit1.lrj b/unit1.lrj deleted file mode 100644 index 3ea6206..0000000 --- a/unit1.lrj +++ /dev/null @@ -1,13 +0,0 @@ -{"version":1,"strings":[ -{"hash":24216973,"name":"tform1.caption","sourcebytes":[77,77,66,78,53,45,54,77],"value":"MMBN5-6M"}, -{"hash":223940658,"name":"tform1.room_name_label.caption","sourcebytes":[82,117,110,32,116,104,101,32,103,97,109,101,44,32,116,104,101,110,32,112,114,101,115,115,32,34,83,116,97,114,116,34],"value":"Run the game, then press \"Start\""}, -{"hash":43,"name":"tform1.plus_spoil.caption","sourcebytes":[43],"value":"+"}, -{"hash":45,"name":"tform1.minus_spoil1.caption","sourcebytes":[45],"value":"-"}, -{"hash":179882696,"name":"tform1.map_stretch_checkbox.caption","sourcebytes":[83,116,114,101,116,99,104],"value":"Stretch"}, -{"hash":175506234,"name":"tform1.spoils_label.caption","sourcebytes":[83,112,111,105,108,115,58],"value":"Spoils:"}, -{"hash":6676461,"name":"tform1.edit_room_button.caption","sourcebytes":[69,100,105,116,32,82,111,111,109],"value":"Edit Room"}, -{"hash":5941396,"name":"tform1.start_stop_button.caption","sourcebytes":[83,116,97,114,116],"value":"Start"}, -{"hash":86077493,"name":"tform1.gamebox.text","sourcebytes":[77,77,66,78,32,53],"value":"MMBN 5"}, -{"hash":5079946,"name":"tform1.label1.caption","sourcebytes":[71,97,109,101,58],"value":"Game:"}, -{"hash":1726,"name":"tform1.langbox.text","sourcebytes":[101,110],"value":"en"} -]} diff --git a/unit1.pas b/unit1.pas index 95663b3..835e94c 100644 --- a/unit1.pas +++ b/unit1.pas @@ -5,458 +5,371 @@ unit Unit1; interface uses -Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, -Buttons, Grids, IniFiles, Windows, DefaultTranslator, LCLTranslator, FileUtil; + 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 ) - langbox :TComboBox; - edit_room_button :TButton; - gamebox :TComboBox; - Label1 :TLabel; - map_stretch_checkbox :TCheckBox; - minus_spoil1 :TButton; - Panel1 :TPanel; - plus_spoil :TButton; - Splitter1 :TSplitter; - map_image :TImage; - room_name_label :TLabel; - Splitter2 :TSplitter; - spoils_label :TLabel; - spoils_listbox :TListBox; - 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 langboxSelect ( Sender :TObject ); - procedure map_imagePaint ( Sender :TObject ); - procedure map_stretch_checkboxChange ( Sender :TObject ); - procedure minus_spoil1Click ( Sender :TObject ); - procedure plus_spoilClick ( Sender :TObject ); - procedure Splitter2Moved ( Sender :TObject ); - procedure spoils_listboxDblClick ( Sender :TObject ); - procedure start_stop_buttonClick ( Sender :TObject ); - procedure Timer1Timer ( Sender :TObject ); -PRIVATE + 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 -PUBLIC + public -PROTECTED - procedure WMHotKey ( var MSG :TWMHotKey ); MESSAGE WM_HOTKEY; - -end; - - -resourcestring -ADDING_ITEM = 'Adding item to Room #'; -ENTER_ITEM_NAME = 'Enter item''s name'; -EDITING_ITEM = 'Editing item in Room #'; -EDITING_ROOM = 'Editing Room #'; -ENTER_ROOM_NAME = 'Enter this Room''s name'; -START_BUTTON_STRAT = 'Start'; -START_BUTTON_STOP = 'Stop'; -APP_CAPTION = 'MMBN5-6M: Reading from process ID'; -ROOM_NUMBER = 'Room #'; -RUN_THE_GAME_NOTICE = 'Run the game, then press "Start"'; -ERROR_GAME_NOT_RUNNING = 'Error. Make sure the game''s running.'; -ERROR_GAME_MEMORY_NOT_READ = 'Error. Game''s memory not read.'; -ERROR_UNABLE_TO_READ_GAME_MEMORY = 'Error. Can''t read game''s memory.'; -ERROR_HOTKEY_REGISTRATION_FAILED = 'HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.'; -UNKNOWN_ROOM = 'Unknown'; + protected + procedure WMHotKey(var MSG: TWMHotKey); message WM_HOTKEY; + 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 ); + 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; -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 :QWORD = 18446744073709551615; // contains current room 16-bit value -last_room :QWORD = 18446744073709551615; -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; + 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; var -x, y, w, h :INTEGER; -state :TWindowState; -languages :TStrings; -current_language :STRING; + 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.'); +end; + +procedure TForm1.map_imagePaint(Sender: TObject); +begin + //map_image.Canvas.Brush.Style := bsClear; + //map_image.Canvas.Rectangle(0, 0, 400, 400); +end; + +procedure TForm1.map_stretch_checkboxChange(Sender: TObject); +begin + map_image.Proportional := not map_stretch_checkbox.Checked; +end; + +procedure TForm1.minus_spoil1Click(Sender: TObject); var - i :INTEGER; + Txt: string; + i: integer; begin - 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 ( ERROR_HOTKEY_REGISTRATION_FAILED ); - - // translations - languages := TStringList.Create ( ); - current_language := ROOMS.ReadString ( 'Settings', 'Language', 'en' ); - FindAllFiles ( languages, 'po', '*.po', False ); - for i := 0 to languages.Count -1 do begin - languages[i] := languages [i].Replace ( 'po\mmbn56mm.', '' ).Replace ( '.po', '' ); - end; - langbox.Items := languages; - langbox.ItemIndex := langbox.Items.IndexOf ( current_language ); - SetDefaultLang ( current_language, 'po' ); + 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; end; - -procedure TForm1.gameboxSelect ( Sender :TObject ); -begin - 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.langboxSelect ( Sender :TObject ); -begin - current_language := langbox.Items [langbox.ItemIndex]; - SetDefaultLang ( current_language, 'po' ); - ROOMS.WriteString ( 'Settings', 'Language', current_language ); -end; - - -procedure TForm1.map_imagePaint ( Sender :TObject ); -begin - //map_image.Canvas.Brush.Style := bsClear; - //map_image.Canvas.Rectangle(0, 0, 400, 400); -end; - - -procedure TForm1.map_stretch_checkboxChange ( Sender :TObject ); -begin - map_image.Proportional := NOT map_stretch_checkbox.Checked; -end; - - -procedure TForm1.minus_spoil1Click ( Sender :TObject ); +procedure TForm1.plus_spoilClick(Sender: TObject); var - 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; - 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 ); + new_spoil_name: string; var - new_spoil_name :STRING = ''; - Txt :STRING = ''; - i :INTEGER; + Txt: string; + i: integer; begin - if InputQuery ( ADDING_ITEM + IntToStr ( room ), ENTER_ITEM_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; + 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.Splitter2Moved ( Sender :TObject ); -begin - plus_spoil.Width := Round ( Panel1.Width/2 ) -12; -end; - - -procedure TForm1.spoils_listboxDblClick ( Sender :TObject ); +procedure TForm1.spoils_listboxDblClick(Sender: TObject); var - new_spoil_name :STRING; + new_spoil_name: string; var - Txt :STRING = ''; - i :INTEGER; + 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 + IntToStr ( room ), ENTER_ITEM_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 ); + 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); - end; - end; - spoils_listbox.ClearSelection; + end; + end; + spoils_listbox.ClearSelection; end; - -procedure TForm1.start_stop_buttonClick ( Sender :TObject ); +procedure TForm1.start_stop_buttonClick(Sender: TObject); var - i :INTEGER; - ProcID :DWORD; + i: integer; + ProcID: DWORD; begin - if start_stop_button.Down = False then begin - start_stop_button.Caption := START_BUTTON_STRAT; - Timer1.Enabled := False; - CloseHandle ( hProcess ); - room_name_label.Caption := RUN_THE_GAME_NOTICE; - end else begin - start_stop_button.Caption := START_BUTTON_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 := APP_CAPTION + ' ' + IntToStr ( ProcID ); - Timer1.Enabled := True; - break; - end else begin - room_name_label.Caption := ERROR_GAME_NOT_RUNNING; - end; - end; - end; + 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; + end; +procedure TForm1.Timer1Timer(Sender: TObject); +begin + spoils_listbox.Height := spoils_listbox.Items.Count * spoils_listbox.ItemHeight; -procedure TForm1.Timer1Timer ( Sender :TObject ); + + 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); var - room_number_size :SMALLINT; + new_room_name: string; begin - 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 ); - room_name_label.Caption := ROOM_NUMBER + 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_GAME_MEMORY_NOT_READ; - end; - except - on edit_room_button :Exception do - room_name_label.Caption := ERROR_UNABLE_TO_READ_GAME_MEMORY; - end; - end; + 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); end; -procedure TForm1.edit_room_buttonClick ( Sender :TObject ); -var - new_room_name :STRING = ''; +procedure TForm1.WMHotKey(var MSG: TWMHotKey); begin - new_room_name := room_name; - if InputQuery ( EDITING_ROOM + ' ' + IntToStr ( room ), ENTER_ROOM_NAME, new_room_name ) then begin - ROOMS.WriteString ( 'Rooms ' + current_game, IntToStr ( room ), new_room_name ); - last_room := 18446744073709551615; - end; -end; + 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; -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; - languages.Free; - UnregisterHotKey ( Handle, 111000 ); -end; - - -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; + Form1.Visible := True; + RegisterHotKey(Handle, 111000, MOD_WIN, VK_Y); end; - -initialization - - -SetDefaultLang ( 'en', 'po' ); - end.