diff --git a/README.md b/README.md index 889d268..5b35f17 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,15 +10,11 @@ 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. - The name you've given will be used when loading images, e.g. when you're in the `Lan's Room`, the app will try to load `./images/Lan's Room.png` image. -- Use `+`/`-` buttons to add/delete spoils list found in room (blue, gree, purple mystery data, lotto codes etc) -- Double click spoil item to edit it -- Use `Stretch` checkbox if you want your map stretched (usefull for those streaming people) -- Use `Win`+`Y` global hotkey to toggle fullscreen (conflicts with mixed reality shortcut, not configurable atm) The app should work under a regular user ***do not*** give this app (and 99.9% of all the other apps) admin privs @@ -40,12 +36,12 @@ Assets are *not* included. Because... > > We can argue all day about whether coding something means I can tell you what to do. Especially when the app in question uses assets made by other people and is useless without those. > -> The same goes for the images. Yes, [Mega Boy](mailto:megaboy@sympatico.ca) did create the images used in this app, but does he own them? Can he (or Dr. Cossack for that sake) grant *any* persmissions regading Capcom's assets? +> The same goes for the images. Yes, [Mega Boy](megaboy@sympatico.ca) did create the images used in this app, but does he own them? Can he (or Dr. Cossack's for that sake) grant *any* persmissions regading Capcom's assets? > > Don't think so. > > It's not hard to ask, but I don't feel like there's any reason to. > -> 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. +> Dumping something from a game sure requires an investment of time - just as crating this app and writing this readme does. But neither act magically makes any of use the owner of those assets. 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/Gargoil Comp 1.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 1.png rename to images/Gargoil Comp 1.png diff --git a/images/MMBN 5/Gargoyle Comp 2.png b/images/Gargoil Comp 2.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 2.png rename to images/Gargoil Comp 2.png diff --git a/images/MMBN 5/Gargoyle Comp 3.png b/images/Gargoil Comp 3.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 3.png rename to images/Gargoil Comp 3.png diff --git a/images/MMBN 5/Gargoyle Comp 4.png b/images/Gargoil Comp 4.png similarity index 100% rename from images/MMBN 5/Gargoyle Comp 4.png rename to images/Gargoil Comp 4.png diff --git a/images/MMBN 5/Squirrel Comp 1.png b/images/MMBN 5/Squirrel Comp 1.png deleted file mode 100644 index 929bce2..0000000 Binary files a/images/MMBN 5/Squirrel Comp 1.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 10.png b/images/MMBN 5/Squirrel Comp 10.png deleted file mode 100644 index 58e0f9e..0000000 Binary files a/images/MMBN 5/Squirrel Comp 10.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 11.png b/images/MMBN 5/Squirrel Comp 11.png deleted file mode 100644 index 1498986..0000000 Binary files a/images/MMBN 5/Squirrel Comp 11.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 12.png b/images/MMBN 5/Squirrel Comp 12.png deleted file mode 100644 index b15591a..0000000 Binary files a/images/MMBN 5/Squirrel Comp 12.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 13.png b/images/MMBN 5/Squirrel Comp 13.png deleted file mode 100644 index 1a3c9ad..0000000 Binary files a/images/MMBN 5/Squirrel Comp 13.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 14.png b/images/MMBN 5/Squirrel Comp 14.png deleted file mode 100644 index 8857fde..0000000 Binary files a/images/MMBN 5/Squirrel Comp 14.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 15.png b/images/MMBN 5/Squirrel Comp 15.png deleted file mode 100644 index 1fda405..0000000 Binary files a/images/MMBN 5/Squirrel Comp 15.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 16.png b/images/MMBN 5/Squirrel Comp 16.png deleted file mode 100644 index 0d47de5..0000000 Binary files a/images/MMBN 5/Squirrel Comp 16.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 2.png b/images/MMBN 5/Squirrel Comp 2.png deleted file mode 100644 index 01960c6..0000000 Binary files a/images/MMBN 5/Squirrel Comp 2.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 3.png b/images/MMBN 5/Squirrel Comp 3.png deleted file mode 100644 index 5c2d70c..0000000 Binary files a/images/MMBN 5/Squirrel Comp 3.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 4.png b/images/MMBN 5/Squirrel Comp 4.png deleted file mode 100644 index 828fb84..0000000 Binary files a/images/MMBN 5/Squirrel Comp 4.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 5.png b/images/MMBN 5/Squirrel Comp 5.png deleted file mode 100644 index ed9a6d4..0000000 Binary files a/images/MMBN 5/Squirrel Comp 5.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 6.png b/images/MMBN 5/Squirrel Comp 6.png deleted file mode 100644 index c332c6c..0000000 Binary files a/images/MMBN 5/Squirrel Comp 6.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 7.png b/images/MMBN 5/Squirrel Comp 7.png deleted file mode 100644 index 0b26b38..0000000 Binary files a/images/MMBN 5/Squirrel Comp 7.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 8.png b/images/MMBN 5/Squirrel Comp 8.png deleted file mode 100644 index 97d78c2..0000000 Binary files a/images/MMBN 5/Squirrel Comp 8.png and /dev/null differ diff --git a/images/MMBN 5/Squirrel Comp 9.png b/images/MMBN 5/Squirrel Comp 9.png deleted file mode 100644 index 8ab1e29..0000000 Binary files a/images/MMBN 5/Squirrel Comp 9.png and /dev/null differ diff --git a/images/MMBN 5/Undernet 2.png b/images/MMBN 5/Undernet 2.png deleted file mode 100644 index d68e692..0000000 Binary files a/images/MMBN 5/Undernet 2.png and /dev/null differ diff --git a/images/MMBN 5/Undernet 3.png b/images/MMBN 5/Undernet 3.png deleted file mode 100644 index 2706314..0000000 Binary files a/images/MMBN 5/Undernet 3.png and /dev/null differ 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 System 1.png similarity index 100% rename from images/MMBN 5/Main Comp 1.png rename to images/Main System 1.png diff --git a/images/MMBN 5/Main Comp 2.png b/images/Main System 2.png similarity index 100% rename from images/MMBN 5/Main Comp 2.png rename to images/Main System 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/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/Undernet 2.png b/images/Undernet 2.png new file mode 100644 index 0000000..61557c4 Binary files /dev/null and b/images/Undernet 2.png differ diff --git a/images/Undernet 3.png b/images/Undernet 3.png new file mode 100644 index 0000000..0a40109 Binary files /dev/null and b/images/Undernet 3.png differ 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..22f4515 100644 --- a/mmbn5m.lpi +++ b/mmbn5m.lpi @@ -5,7 +5,7 @@ - + <Title Value="mmbn5m"/> <Scaled Value="True"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> @@ -14,25 +14,11 @@ </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"/> - <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"/> </BuildModes> <PublishOptions> <Version Value="2"/> - <OpenInFileMan Value="True"/> <UseFileFilters Value="True"/> </PublishOptions> <RunParams> @@ -101,9 +87,6 @@ <Item> <Name Value="EFOpenError"/> </Item> - <Item> - <Name Value="EConvertError"/> - </Item> </Exceptions> </Debugging> </CONFIG> diff --git a/mmbn5m.lpr b/mmbn5m.lpr index d88de49..d73f6e2 100644 --- a/mmbn5m.lpr +++ b/mmbn5m.lpr @@ -17,7 +17,6 @@ uses begin RequireDerivedFormResource:=True; - Application.Title:='mmbn56mm'; Application.Scaled:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); diff --git a/mmbn5m.lps b/mmbn5m.lps index fd5fe7f..2abe8e8 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -9,7 +9,7 @@ <Version Value="11"/> <PathDelim Value="\"/> <Target> - <Filename Value="mmbn56mm"/> + <Filename Value="mmbn5m"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> @@ -46,9 +46,9 @@ <Unit> <Filename Value="mmbn5m.lpr"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="2"/> - <CursorPos X="49" Y="20"/> - <UsageCount Value="65"/> + <EditorIndex Value="1"/> + <CursorPos X="69" Y="19"/> + <UsageCount Value="29"/> <Loaded Value="True"/> </Unit> <Unit> @@ -59,181 +59,141 @@ <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> <IsVisibleTab Value="True"/> - <TopLine Value="364"/> - <CursorPos X="52" Y="411"/> - <UsageCount Value="65"/> + <TopLine Value="144"/> + <CursorPos X="41" Y="175"/> + <UsageCount Value="29"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit> <Unit> <Filename Value="C:\lazarus\lcl\interfaces\win32\win32listsl.inc"/> - <EditorIndex Value="-1"/> + <EditorIndex Value="2"/> <TopLine Value="128"/> <CursorPos Y="152"/> - <UsageCount Value="20"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\syshelph.inc"/> - <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> </Units> <JumpHistory HistoryIndex="29"> <Position> <Filename Value="unit1.pas"/> - <Caret Line="9" Column="34" TopLine="9"/> + <Caret Line="200" Column="35" TopLine="142"/> </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="108" Column="17" TopLine="82"/> </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="116" TopLine="84"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="428" Column="73" TopLine="409"/> + <Caret Line="108" Column="33" TopLine="84"/> </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="192" Column="11" TopLine="182"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="435" Column="44" TopLine="406"/> + <Caret Line="199" Column="11" TopLine="174"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="437" Column="54" TopLine="406"/> + <Caret Line="200" Column="25" TopLine="176"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="26" Column="92"/> + <Caret Line="117" TopLine="93"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="414" Column="53" TopLine="390"/> + <Caret Line="132" Column="12" TopLine="122"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="412" Column="27" TopLine="387"/> + <Caret Line="175" TopLine="144"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="211" Column="5" TopLine="165"/> + <Caret Line="118" Column="41" TopLine="94"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="409" Column="19" TopLine="399"/> + <Caret Line="170" Column="55" TopLine="146"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="175" Column="24" TopLine="151"/> + <Caret Line="117" Column="13" TopLine="117"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="9" Column="73"/> + <Caret Line="136" Column="25" TopLine="116"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="188" Column="20" TopLine="173"/> + <Caret Line="135" Column="25" TopLine="115"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="189" Column="25" TopLine="171"/> + <Caret Line="134" Column="25" TopLine="114"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="208" Column="3" TopLine="186"/> + <Caret Line="133" Column="25" TopLine="113"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="453" Column="5" TopLine="408"/> + <Caret Line="132" Column="25" TopLine="112"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="209" Column="46" TopLine="197"/> + <Caret Line="210" Column="6" TopLine="208"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="224" Column="58" TopLine="192"/> + <Caret Line="209" Column="6" TopLine="207"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="210" Column="59" TopLine="210"/> + <Caret Line="199" Column="38" TopLine="181"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="195" Column="6" TopLine="171"/> + <Caret Line="166" Column="7" TopLine="153"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="214" Column="66" TopLine="190"/> + <Caret Line="182" Column="91" TopLine="156"/> </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="145" Column="63" TopLine="113"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="201" Column="82" TopLine="174"/> + <Caret Line="141" Column="58" TopLine="113"/> </Position> <Position> <Filename Value="unit1.pas"/> - <Caret Line="265" Column="25" TopLine="241"/> + <Caret Line="140" Column="41" TopLine="118"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="171" Column="61" TopLine="155"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="130" Column="37" TopLine="106"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="129" Column="22" TopLine="106"/> + </Position> + <Position> + <Filename Value="unit1.pas"/> + <Caret Line="174" Column="38" TopLine="155"/> </Position> </JumpHistory> <RunParams> diff --git a/mmbn5m.res b/mmbn5m.res index 29a13f5..09ecee6 100644 Binary files a/mmbn5m.res and b/mmbn5m.res differ diff --git a/mmbn5mm.exe b/mmbn5mm.exe new file mode 100644 index 0000000..d46ded7 Binary files /dev/null and b/mmbn5mm.exe 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..b50efb0 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 @@ -19,7 +19,7 @@ 661=Undernet 4 897=Drill Comp 4 898=Ship Comp 4 -899=Gargoyle Comp 4 +899=Gargoil Comp 4 900=Factory Comp 4 256=Lan's House 512=Lan's Room @@ -27,343 +27,5 @@ 768=Mayl's Room 1024=Dex's Room 1280=Yai's Room -594=Nebula 6 136=Lan's Home Page -140=Doghouse Comp 392=Mayl's Home Page -648=Dex's Home Page -904=Yai's Home Page -1421=Sculpture Comp -257=SciLab Front -513=SciLab Lobby -1677=Terminal Comp -1=Dad's Lab -1165=Dad's Comp -128=Main Comp 1 -384=Main Comp 2 -769=Op Room -652=Kitchen Comp -2=Oran Island -258=Old Mine -2050=Old Mine 6 -770=Old Mine 1 -1026=Old Mine 2 -1282=Old Mine 3 -1538=Old Mine 4 -2700=Air Filter Comp -1794=Old Mine 5 -2306=Old Mine 7 -129=Drill Comp 1 -514=Big Cave -2562=Old Mine 8 -385=Drill Comp 2 -641=Drill Comp 3 -2818=Old Mine 9 -908=Electronic Lock Comp -5=Nebula Control -142=Squirrel Comp 1 -398=Squirrel Comp 2 -654=Squirrel Comp 3 -1166=Squirrel Comp 5 -910=Squirrel Comp 4 -1678=Squirrel Comp 7 -1934=Squirrel Comp 8 -2190=Squirrel Comp 9 -2446=Squirrel Comp 10 -2958=Squirrel Comp 12 -3726=Squirrel Comp 15 -2702=Squirrel Comp 11 -3214=Squirrel Comp 13 -3470=Squirrel Comp 14 -3982=Squirrel Comp 16 -1536=Higsby's -1422=Squirrel Comp 6 -397=Crane Comp -141=Elevator Room -1025=Mission Control -3=Dock -1160=SciLab Home Page -259=Ship Hall -515=Ship Deck -771=Engine Room -1164=Radar Comp -1420=Air Conditioner Comp -1676=Screw Comp -1932=Engine Comp -1027=Fiesta Room -2188=View Comp -130=Ship Comp 1 -386=Ship Comp 2 -642=Ship Comp 3 -1283=Ship Bridge -4=End City -2445=Dumplig Comp -260=Mum Room -2956=Armor Comp -3212=Helmet Comp -3468=Katana Comp -516=Lily Room -2957=Wind God Comp -1028=Castle Exterior -772=Castle Keep -1416=Gargoyle Castle Home Page -138=Cyber ACDC Town -131=Gargoyle Comp 1 -387=Gargoyle Comp 2 -643=Gargoyle Comp 3 -1158=End Area 5 -396=Old Terminal Comp -650=Oran Isle (Vision Burst) -1792=Higgsby's Base -909=Old Comp -1414=Undernet 4 -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] -397=RegUP2,1000z -141=HolyPanl*,RegUP1 -401=Vulcan2 C,HP Memory,HP Memory [N} -145=Quake1 A,Snake M -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 -515=00798216 -1164=400z -1420=Battery -1676=Reg Up 2 -1932=Sub Memory -2188=Don'tNeedData,HP Memory -130=ShipKey,YoYo F,Spin White -386=700z,Don'tNeedData,ShipKey,RegUp3 -642=GrasSeed A -898=ExpMemory -403=HP Memory -659=Spin Yellow,VarSword V [L],Air Shoes [N] -2700=Mem Data,Right panel,press A -2445=Metagel T -2956=HP+100 -260=RegUP1,45654128 -3212=RegUP2 -3468=HP Memory -2957=Air Spin 2 B -1416=CasBannr -1028=HP Memory -131=Speed +1,HP Memory -387=RegUp2,MegEnBom C -643=HP+100,HP Memry -899=Slasher R -1158=MrkCan2D [L],Guard 2B [L],BugFrag [L],BugFrag [L] -648=HP Memory -144=HP+200 [N] -396=RegUp2 -1792=HP Memory -909=Spin Pink,RegUp1 -148=SoulT+1,HP Memory -1414=BugFrag1 [L],1000z [L],1300z [L] -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..e571616 100644 --- a/unit1.lfm +++ b/unit1.lfm @@ -1,283 +1,56 @@ object Form1: TForm1 - Left = 821 - Height = 478 - Top = 472 - Width = 792 - Anchors = [akTop] - Caption = 'MMBN5-6M' - ClientHeight = 478 - ClientWidth = 792 + Left = 802 + Height = 461 + Top = 496 + Width = 548 + BorderStyle = bsSingle + Caption = 'MMBN5M' + ClientHeight = 461 + ClientWidth = 548 Font.CharSet = ANSI_CHARSET Font.Height = -16 - Font.Name = 'Liberation Mono' - Font.Pitch = fpFixed + Font.Pitch = fpVariable Font.Quality = fqDraft - OnClose = FormClose OnCreate = FormCreate - Position = poScreenCenter - LCLVersion = '3.2.0.0' + OnDestroy = FormDestroy + LCLVersion = '2.2.6.0' object room_name_label: TLabel - AnchorSideLeft.Control = Splitter2 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Owner - Left = 231 - Height = 18 + Left = 120 + Height = 21 Top = 8 - Width = 320 - BorderSpacing.Top = 8 - Caption = 'Run the game, then press "Start"' - Color = clGradientInactiveCaption + Width = 157 + Caption = 'Room #0: Lan''s Room ' ParentColor = False - Transparent = False end object map_image: TImage - AnchorSideLeft.Control = Splitter2 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = room_name_label - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 232 - Height = 436 - Top = 34 - Width = 552 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 1 - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 + Left = 120 + Height = 400 + Top = 40 + Width = 400 Center = True OnPaint = map_imagePaint Proportional = True Stretch = True end - object Splitter1: TSplitter - Left = 787 - Height = 478 - Top = 0 - Width = 5 - Align = alRight - ResizeAnchor = akRight + object start_stop_button: TSpeedButton + Left = 8 + Height = 30 + Top = 8 + Width = 100 + AllowAllUp = True + Caption = 'Start' + GroupIndex = 1 + Transparent = False + OnClick = start_stop_buttonClick 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 - 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 - BorderSpacing.Right = 8 - ItemHeight = 18 - ItemIndex = 0 - Items.Strings = ( - 'en' - 'ru' - ) - ReadOnly = True - Style = csDropDownList - TabOrder = 3 - Text = 'en' - OnSelect = langboxSelect + object edit_room_button: TButton + Left = 8 + Height = 30 + Top = 40 + Width = 100 + Caption = 'Edit Room' + OnClick = edit_room_buttonClick + TabOrder = 0 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..b628b5e 100644 --- a/unit1.pas +++ b/unit1.pas @@ -5,458 +5,200 @@ unit Unit1; interface uses -Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, -Buttons, Grids, IniFiles, Windows, DefaultTranslator, LCLTranslator, FileUtil; - -type -TWMHotKey = packed record - MSG :CARDINAL; - HotKey :PtrInt; - Unused :PtrInt; - Result :PtrInt; -end; - + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, + Buttons, IniFiles ; 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) + edit_room_button: TButton; + map_image: TImage; + room_name_label: TLabel; + start_stop_button: TSpeedButton; + Timer1: TTimer; + procedure edit_room_buttonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure map_imagePaint(Sender: TObject); + procedure start_stop_buttonClick(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + private -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'; + public + end; var -Form1 :TForm1; + Form1: TForm1; implementation -uses JwaTlHelp32; +uses Windows, 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; - -var -x, y, w, h :INTEGER; -state :TWindowState; -languages :TStrings; -current_language :STRING; +hProcess: THandle; +ROOMS : TIniFile; // contains room labels +process_list : TStrings; +room: SmallInt = -1; // contains current room 16-bit value {$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(); +end; + +procedure TForm1.FormDestroy(Sender: TObject); +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; +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.start_stop_buttonClick(Sender: TObject); +var i:integer; + ProcID: DWORD; + +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; + +end; + +procedure TForm1.Timer1Timer(Sender: TObject); var - i :INTEGER; + room_name: string; 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' ); -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 ); -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 ); -var - new_spoil_name :STRING = ''; - 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; -end; - - -procedure TForm1.Splitter2Moved ( Sender :TObject ); -begin - plus_spoil.Width := Round ( Panel1.Width/2 ) -12; -end; - - -procedure TForm1.spoils_listboxDblClick ( Sender :TObject ); -var - new_spoil_name :STRING; -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 + 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 ); - - end; - end; - spoils_listbox.ClearSelection; -end; - - -procedure TForm1.start_stop_buttonClick ( Sender :TObject ); -var - 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; -end; - - -procedure TForm1.Timer1Timer ( Sender :TObject ); -var - room_number_size :SMALLINT; -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; + if hProcess <> 0 then + begin + try + if ReadMemory(hProcess, Pointer($80205FF4), room, SizeOf(room)) then + begin + room_name := ROOMS.ReadString('Rooms', inttostr(room), 'Unknown'); + room_name_label.Caption := 'Room #'+ inttostr(room)+ ': '+ room_name; + 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 + else + begin + room_name_label.Caption := 'error'; + end; + except + on edit_room_button: Exception do + room_name_label.Caption:='error'; + end; + end; end; - -procedure TForm1.edit_room_buttonClick ( Sender :TObject ); -var - new_room_name :STRING = ''; -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; +procedure TForm1.edit_room_buttonClick(Sender: TObject); +var new_room_name:string; +begin// + if InputQuery('Editing Room # '+inttostr(room), 'Enter this Room''s name', new_room_name) then begin + ROOMS.WriteString('Rooms', inttostr(room), new_room_name); + 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; - 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; - - -initialization - - -SetDefaultLang ( 'en', 'po' ); - end. + + + + + + + +