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/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 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/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..9a369f9 100644
--- a/mmbn5m.lpi
+++ b/mmbn5m.lpi
@@ -5,7 +5,7 @@
-
+
@@ -14,25 +14,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -101,9 +87,6 @@
-
- -
-
-
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..2e5377d 100644
--- a/mmbn5m.lps
+++ b/mmbn5m.lps
@@ -9,7 +9,7 @@
-
+
@@ -46,9 +46,9 @@
-
-
-
+
+
+
@@ -59,181 +59,141 @@
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
+
-
-
-
-
-
+
-
+
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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/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..55cbdc4 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
@@ -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
@@ -78,292 +78,3 @@
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..a020d58 100644
--- a/unit1.lfm
+++ b/unit1.lfm
@@ -1,283 +1,63 @@
object Form1: TForm1
- Left = 821
- Height = 478
- Top = 472
- Width = 792
- Anchors = [akTop]
- Caption = 'MMBN5-6M'
- ClientHeight = 478
- ClientWidth = 792
+ Left = 802
+ Height = 448
+ Top = 496
+ Width = 528
+ BorderStyle = bsSingle
+ Caption = 'MMBN5M'
+ ClientHeight = 448
+ ClientWidth = 528
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"'
+ Width = 157
+ Caption = 'Room #0: Lan''s Room '
Color = clGradientInactiveCaption
+ Font.CharSet = ANSI_CHARSET
+ Font.Height = -16
+ Font.Pitch = fpFixed
+ Font.Quality = fqCleartype
ParentColor = False
+ ParentFont = 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..ec7e20b 100644
--- a/unit1.pas
+++ b/unit1.pas
@@ -5,458 +5,214 @@ 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
+ last_room: smallint = -1;
+ room_name: string;
+ new_room: bool;
{$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;
-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 );
+ 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;
- // 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 );
+procedure TForm1.Timer1Timer(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 ) );
+
+ 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;
+ 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';
+ end;
+ except
+ on edit_room_button: Exception do
+ room_name_label.Caption := 'error';
+ end;
+ end;
+
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.edit_room_buttonClick(Sender: TObject);
var
- Txt :STRING = '';
- i :INTEGER;
+ new_room_name: string;
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;
+ 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.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;
-
-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;
-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.