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