diff --git a/README.md b/README.md index 889d268..0fbfa30 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Megaman Battle Network 5 and 6 Mini Map App +# Megaman Battle Network 5 Mini Map App This app is a Windows only tool that reads MMBN Legacy Collection 2's memory and grabs current map ID from that. -Then it displays an image of the current room if that's present in the [images](images/) folder. +Then it displays an image of the current room if that's present in the [images](/images/) folder. The images were taken from [Dr. Cossack's Lab](https://www.interordi.com/mega_man_pc/games/mmbn5/) without anyone's consent. @@ -10,7 +10,7 @@ The images were taken from [Dr. Cossack's Lab](https://www.interordi.com/mega_ma # How to use - Open the legacy collection 2 -- Load up MMBN 5 (tested with Team Protoman) or MMBN6 (tested with Cyberbeast Falzar) +- Load up MMBN 5 (tested with Team Protoman) - Open this app - Use `Start`/`Stop` button to enable/disable memory reading. - If you encounter an `Unknown` Room - press `Edit` it and give it a name. @@ -48,4 +48,4 @@ Assets are *not* included. Because... > > Dumping something from a game sure requires an investment of time - just as crating this app and writing this readme does. But neither of those acts magically makes any of us the owner of the assets in question. At best it's a derivative work akin fan art. > -> If there's anyone to ask, that would be Capcom themselves. And we all know what they think (see [III. IMPERMISSIBLE USES](https://www.capcomusa.com/video-policy/)). Be happy Capcom doesn't enforce its rights and allows us to do what we do +> If there's anyone to ask, that would be Capcom themselves. And we all know what they think (see [III. IMPERMISSIBLE USES](https://www.capcomusa.com/video-policy/)). Be happy Capcom doesn't enforce its rights and allows us to to what we do diff --git a/images/MMBN 6/Aquarium Comp 1.PNG b/images/MMBN 6/Aquarium Area 1.PNG similarity index 100% rename from images/MMBN 6/Aquarium Comp 1.PNG rename to images/MMBN 6/Aquarium Area 1.PNG diff --git a/images/MMBN 6/Aquarium Comp 2.PNG b/images/MMBN 6/Aquarium Area 2.PNG similarity index 100% rename from images/MMBN 6/Aquarium Comp 2.PNG rename to images/MMBN 6/Aquarium Area 2.PNG diff --git a/images/MMBN 6/Aquarium Comp 3.PNG b/images/MMBN 6/Aquarium Area 3.PNG similarity index 100% rename from images/MMBN 6/Aquarium Comp 3.PNG rename to images/MMBN 6/Aquarium Area 3.PNG diff --git a/images/MMBN 6/Green Area 1.PNG b/images/MMBN 6/Green Area 1.PNG index d6e78cf..2bf65c0 100644 Binary files a/images/MMBN 6/Green Area 1.PNG and b/images/MMBN 6/Green Area 1.PNG differ diff --git a/images/MMBN 6/Judge Tree Area 1.PNG b/images/MMBN 6/JdgTree Area 1.PNG similarity index 100% rename from images/MMBN 6/Judge Tree Area 1.PNG rename to images/MMBN 6/JdgTree Area 1.PNG diff --git a/images/MMBN 6/Judge Tree Area 2.PNG b/images/MMBN 6/JdgTree Area 2.PNG similarity index 100% rename from images/MMBN 6/Judge Tree Area 2.PNG rename to images/MMBN 6/JdgTree Area 2.PNG diff --git a/images/MMBN 6/Judge Tree Area 3.PNG b/images/MMBN 6/JdgTree Area 3.PNG similarity index 100% rename from images/MMBN 6/Judge Tree Area 3.PNG rename to images/MMBN 6/JdgTree Area 3.PNG diff --git a/images/MMBN 6/Mr. Weather Comp 1.PNG b/images/MMBN 6/Mr. Weather Area 1.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Comp 1.PNG rename to images/MMBN 6/Mr. Weather Area 1.PNG diff --git a/images/MMBN 6/Mr. Weather Comp 3.PNG b/images/MMBN 6/Mr. Weather Area 3.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Comp 3.PNG rename to images/MMBN 6/Mr. Weather Area 3.PNG diff --git a/images/MMBN 6/Mr. Weather Comp 2.PNG b/images/MMBN 6/Mr. Weather Area2.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Comp 2.PNG rename to images/MMBN 6/Mr. Weather Area2.PNG diff --git a/images/MMBN 6/Pavillion Comp 1.PNG b/images/MMBN 6/Pavillon Area 1.PNG similarity index 100% rename from images/MMBN 6/Pavillion Comp 1.PNG rename to images/MMBN 6/Pavillon Area 1.PNG diff --git a/images/MMBN 6/Pavillion Comp 2.PNG b/images/MMBN 6/Pavillon Area 2.PNG similarity index 100% rename from images/MMBN 6/Pavillion Comp 2.PNG rename to images/MMBN 6/Pavillon Area 2.PNG diff --git a/images/MMBN 6/Pavillion Comp 3.PNG b/images/MMBN 6/Pavillon Area 3.PNG similarity index 100% rename from images/MMBN 6/Pavillion Comp 3.PNG rename to images/MMBN 6/Pavillon Area 3.PNG diff --git a/images/MMBN 6/Pavillion Comp 4.PNG b/images/MMBN 6/Pavillon Area 4.PNG similarity index 100% rename from images/MMBN 6/Pavillion Comp 4.PNG rename to images/MMBN 6/Pavillon Area 4.PNG diff --git a/images/MMBN 6/Sky Area 2.PNG b/images/MMBN 6/Sky Area .PNG similarity index 100% rename from images/MMBN 6/Sky Area 2.PNG rename to images/MMBN 6/Sky Area .PNG diff --git a/images/MMBN 6/Undernet Zero.PNG b/images/MMBN 6/Undernet Zero Area.PNG similarity index 100% rename from images/MMBN 6/Undernet Zero.PNG rename to images/MMBN 6/Undernet Zero Area.PNG diff --git a/mmbn5m.lpi b/mmbn5m.lpi index 8ae2d7b..27c0dba 100644 --- a/mmbn5m.lpi +++ b/mmbn5m.lpi @@ -14,16 +14,11 @@ - - - - - - + diff --git a/mmbn5m.lps b/mmbn5m.lps index fd5fe7f..cbb4b0e 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -9,7 +9,7 @@ - + @@ -47,8 +47,8 @@ - - + + @@ -59,9 +59,9 @@ - - - + + + @@ -70,21 +70,21 @@ - + - + - - - - + + + + @@ -92,148 +92,128 @@ - + - - - - - - - - - - - - - - - - - - - + - - - - - + - - - - - + - + - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + - + - + + + + + + + + + + + + + + + diff --git a/mmbn5m.res b/mmbn5m.res index 29a13f5..43c5796 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..98566cd 100644 --- a/rooms.ini +++ b/rooms.ini @@ -231,139 +231,22 @@ MMBN 6=2147425942 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] +9437184=MiniEnergy 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] +281474985099264=Reg UP2,Rocovery 30 * 562949962858496=Hi Cannon L,Elec Sword {PMD} 1688849869438976=Unlocker 3659174706479104=Dubl Shot *,1000z -281474986213376=Panel Return *,Vulcan 2D,Attack +1 [Tengu] +281474986213376=Panel Return * 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..dce19a6 100644 --- a/unit1.lfm +++ b/unit1.lfm @@ -1,12 +1,11 @@ object Form1: TForm1 - Left = 821 - Height = 478 - Top = 472 - Width = 792 - Anchors = [akTop] + Left = 1066 + Height = 448 + Top = 323 + Width = 606 Caption = 'MMBN5-6M' - ClientHeight = 478 - ClientWidth = 792 + ClientHeight = 448 + ClientWidth = 606 Font.CharSet = ANSI_CHARSET Font.Height = -16 Font.Name = 'Liberation Mono' @@ -15,15 +14,16 @@ object Form1: TForm1 OnClose = FormClose OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '3.2.0.0' + LCLVersion = '2.2.6.0' object room_name_label: TLabel - AnchorSideLeft.Control = Splitter2 + AnchorSideLeft.Control = start_stop_button AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner - Left = 231 + Left = 192 Height = 18 Top = 8 Width = 320 + BorderSpacing.Left = 8 BorderSpacing.Top = 8 Caption = 'Run the game, then press "Start"' Color = clGradientInactiveCaption @@ -31,20 +31,18 @@ object Form1: TForm1 Transparent = False end object map_image: TImage - AnchorSideLeft.Control = Splitter2 - AnchorSideLeft.Side = asrBottom + AnchorSideLeft.Control = room_name_label AnchorSideTop.Control = room_name_label AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom - Left = 232 - Height = 436 + Left = 192 + Height = 406 Top = 34 - Width = 552 + Width = 406 Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 1 BorderSpacing.Top = 8 BorderSpacing.Right = 8 BorderSpacing.Bottom = 8 @@ -53,231 +51,153 @@ object Form1: TForm1 Proportional = True Stretch = True end - object Splitter1: TSplitter - Left = 787 - Height = 478 - Top = 0 - Width = 5 - Align = alRight - ResizeAnchor = akRight - end - object Panel1: TPanel - Left = 0 - Height = 478 - Top = 0 - Width = 227 - Align = alLeft - BevelOuter = bvNone - ClientHeight = 478 - ClientWidth = 227 - TabOrder = 1 - object plus_spoil: TButton - AnchorSideLeft.Control = Panel1 - AnchorSideBottom.Control = Panel1 - AnchorSideBottom.Side = asrBottom - Left = 8 - Height = 40 - Top = 430 - Width = 104 - Anchors = [akLeft, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Bottom = 8 - Caption = '+' - TabOrder = 0 - OnClick = plus_spoilClick - end - object minus_spoil1: TButton - AnchorSideLeft.Control = plus_spoil - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = plus_spoil - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Panel1 - AnchorSideBottom.Side = asrBottom - Left = 120 - Height = 40 - Top = 430 - Width = 103 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - Caption = '-' - TabOrder = 1 - OnClick = minus_spoil1Click - end - object map_stretch_checkbox: TCheckBox - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = spoils_listbox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = plus_spoil - Left = 8 - Height = 22 - Top = 400 - Width = 215 - Anchors = [akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - Caption = 'Stretch' - TabOrder = 2 - OnChange = map_stretch_checkboxChange - end - object spoils_listbox: TListBox - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = spoils_label - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = plus_spoil - Left = 8 - Height = 250 - Top = 142 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - BorderStyle = bsNone - Color = clGradientInactiveCaption - ItemHeight = 0 - TabOrder = 3 - OnDblClick = spoils_listboxDblClick - end - object spoils_label: TLabel - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = edit_room_button - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 18 - Top = 116 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Spoils:' - ParentColor = False - end - object edit_room_button: TButton - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = start_stop_button - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 30 - Top = 78 - Width = 215 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Edit Room' - TabOrder = 4 - OnClick = edit_room_buttonClick - end - object start_stop_button: TSpeedButton - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = gamebox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 8 - Height = 30 - Top = 40 - Width = 215 - AllowAllUp = True - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - Caption = 'Start' - GroupIndex = 1 - Transparent = False - OnClick = start_stop_buttonClick - end - object gamebox: TComboBox - AnchorSideLeft.Control = Label1 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Panel1 - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = start_stop_button - Left = 66 - Height = 24 - Top = 8 - Width = 157 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 4 - BorderSpacing.Bottom = 8 - ItemHeight = 18 - ItemIndex = 0 - Items.Strings = ( - 'MMBN 5' - 'MMBN 6' - ) - ReadOnly = True - Style = csOwnerDrawFixed - TabOrder = 5 - Text = 'MMBN 5' - OnSelect = gameboxSelect - end - object Label1: TLabel - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = Panel1 - AnchorSideBottom.Control = gamebox - AnchorSideBottom.Side = asrBottom - Left = 8 - Height = 18 - Top = 11 - Width = 50 - BorderSpacing.Left = 8 - BorderSpacing.Top = 11 - Caption = 'Game:' - ParentColor = False - end - end - object Splitter2: TSplitter - Left = 227 - Height = 478 - Top = 0 - Width = 4 - OnMoved = Splitter2Moved - ResizeStyle = rsLine - end - object langbox: TComboBox + object start_stop_button: TSpeedButton AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 734 - Height = 26 - Top = 1 - Width = 50 - Anchors = [akTop, akRight] - BorderSpacing.Top = 1 + AnchorSideTop.Control = gamebox + AnchorSideTop.Side = asrBottom + Left = 8 + Height = 30 + Top = 40 + Width = 176 + AllowAllUp = True + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + Caption = 'Start' + GroupIndex = 1 + Transparent = False + OnClick = start_stop_buttonClick + end + object edit_room_button: TButton + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = start_stop_button + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + Left = 8 + Height = 30 + Top = 78 + Width = 176 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 BorderSpacing.Right = 8 + Caption = 'Edit Room' + OnClick = edit_room_buttonClick + TabOrder = 0 + end + object spoils_listbox: TListBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = spoils_label + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = plus_spoil + Left = 8 + Height = 250 + Top = 142 + Width = 176 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + BorderStyle = bsNone + Color = clGradientInactiveCaption + ItemHeight = 0 + OnDblClick = spoils_listboxDblClick + TabOrder = 1 + end + object spoils_label: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = edit_room_button + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + Left = 8 + Height = 18 + Top = 116 + Width = 176 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + Caption = 'Spoils:' + ParentColor = False + end + object plus_spoil: TButton + AnchorSideLeft.Control = Owner + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom + Left = 8 + Height = 40 + Top = 400 + Width = 56 + Anchors = [akLeft, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Bottom = 8 + Caption = '+' + OnClick = plus_spoilClick + TabOrder = 2 + end + object minus_spoil1: TButton + AnchorSideLeft.Control = plus_spoil + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom + Left = 72 + Height = 40 + Top = 400 + Width = 112 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + Caption = '-' + OnClick = minus_spoil1Click + TabOrder = 3 + end + object map_stretch_checkbox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = spoils_listbox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = map_image + AnchorSideBottom.Control = plus_spoil + Left = 8 + Height = 22 + Top = 370 + Width = 176 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Left = 8 + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + BorderSpacing.Bottom = 8 + Caption = 'Stretch' + OnChange = map_stretch_checkboxChange + TabOrder = 4 + end + object 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 = ( - 'en' - 'ru' + 'MMBN 5' + 'MMBN 6' ) + OnSelect = gameboxSelect ReadOnly = True - Style = csDropDownList - TabOrder = 3 - Text = 'en' - OnSelect = langboxSelect + Style = csOwnerDrawFixed + TabOrder = 5 + Text = 'MMBN 5' 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..f46daaf 100644 --- a/unit1.pas +++ b/unit1.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, -Buttons, Grids, IniFiles, Windows, DefaultTranslator, LCLTranslator, FileUtil; +Buttons, Grids, IniFiles, Windows; type TWMHotKey = packed record @@ -22,32 +22,25 @@ type { 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; + 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 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 ); @@ -60,25 +53,6 @@ PROTECTED 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'; - - var Form1 :TForm1; @@ -102,7 +76,8 @@ begin while INTEGER ( ContinueLoop ) <> 0 do begin - if ( ( UpperCase ( ExtractFileName ( FProcessEntry32.szExeFile ) ) = UpperCase ( ExeFileName ) ) OR( UpperCase ( FProcessEntry32.szExeFile ) = UpperCase ( ExeFileName ) ) ) then begin + if ( ( UpperCase ( ExtractFileName ( FProcessEntry32.szExeFile ) ) = UpperCase ( ExeFileName ) ) + OR( UpperCase ( FProcessEntry32.szExeFile ) = UpperCase ( ExeFileName ) ) ) then begin Result := FProcessEntry32.th32ProcessID; Break; end; @@ -143,8 +118,8 @@ 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 :QWORD = -1; // contains current room 16-bit value +last_room :QWORD = -1; room_name :STRING; new_room :bool; spoils_list :STRING; @@ -163,17 +138,12 @@ is_cyberworld :BOOLEAN = False; var x, y, w, h :INTEGER; state :TWindowState; -languages :TStrings; -current_language :STRING; {$R *.lfm} - { TForm1 } procedure TForm1.FormCreate ( Sender :TObject ); -var - i :INTEGER; begin current_game_pointer := mmbn5_pointer; // open ini file and create a list to hold processes @@ -181,18 +151,7 @@ begin process_list := TStringList.Create ( ); spoils_listbox.Height := 0; if NOT RegisterHotKey ( Handle, 111000, MOD_WIN, VK_Y ) then - ShowMessage ( ERROR_HOTKEY_REGISTRATION_FAILED ); - - // translations - languages := TStringList.Create ( ); - current_language := ROOMS.ReadString ( 'Settings', 'Language', 'en' ); - FindAllFiles ( languages, 'po', '*.po', False ); - for i := 0 to languages.Count -1 do begin - languages[i] := languages [i].Replace ( 'po\mmbn56mm.', '' ).Replace ( '.po', '' ); - end; - langbox.Items := languages; - langbox.ItemIndex := langbox.Items.IndexOf ( current_language ); - SetDefaultLang ( current_language, 'po' ); + ShowMessage ( 'HotKey registration failed. You won''t be able to press Win+Y to temporarily view map in full screen.' ); end; @@ -208,14 +167,6 @@ begin 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; @@ -231,7 +182,7 @@ end; procedure TForm1.minus_spoil1Click ( Sender :TObject ); var - Txt :STRING = ''; + Txt :STRING; i :INTEGER; begin if ( spoils_listbox.ItemIndex > -1 ) then begin @@ -254,11 +205,11 @@ end; procedure TForm1.plus_spoilClick ( Sender :TObject ); var - new_spoil_name :STRING = ''; - Txt :STRING = ''; + new_spoil_name :STRING; + Txt :STRING; i :INTEGER; begin - if InputQuery ( ADDING_ITEM + IntToStr ( room ), ENTER_ITEM_NAME, new_spoil_name ) then 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 @@ -276,22 +227,16 @@ begin 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 = ''; + 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 + 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 @@ -317,22 +262,22 @@ var begin if start_stop_button.Down = False then begin - start_stop_button.Caption := START_BUTTON_STRAT; + start_stop_button.Caption := 'Start'; Timer1.Enabled := False; CloseHandle ( hProcess ); - room_name_label.Caption := RUN_THE_GAME_NOTICE; + room_name_label.Caption := 'Run the game, then press "Start"'; end else begin - start_stop_button.Caption := START_BUTTON_STOP; + 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 := APP_CAPTION + ' ' + IntToStr ( ProcID ); + Caption := 'MMBN5-6M: Reading from process ID ' + IntToStr ( ProcID ); Timer1.Enabled := True; break; end else begin - room_name_label.Caption := ERROR_GAME_NOT_RUNNING; + room_name_label.Caption := 'Error. Run the game.'; end; end; end; @@ -362,8 +307,8 @@ begin 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; + 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 ), '' ); @@ -380,11 +325,11 @@ begin end; end; end else begin - room_name_label.Caption := ERROR_GAME_MEMORY_NOT_READ; + room_name_label.Caption := 'Error. Make sure the game is running.'; end; except on edit_room_button :Exception do - room_name_label.Caption := ERROR_UNABLE_TO_READ_GAME_MEMORY; + room_name_label.Caption := 'Error. Can''t read game''s memory.'; end; end; @@ -393,12 +338,12 @@ end; 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_ROOM_NAME, new_room_name ) then begin + 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 ); - last_room := 18446744073709551615; + last_room := -1; end; end; @@ -413,7 +358,6 @@ begin // free additionally created objects ROOMS.Free; process_list.Free; - languages.Free; UnregisterHotKey ( Handle, 111000 ); end; @@ -453,10 +397,4 @@ begin end; - -initialization - - -SetDefaultLang ( 'en', 'po' ); - end.