Compare commits

...

7 commits

Author SHA1 Message Date
331d4fc1de Update README.md 2025-11-26 19:02:58 +00:00
9371876ca2 Fixed images folder link in the readme 2025-11-26 18:57:54 +00:00
9c42c6b89d Added rooms up to the final battle. Final Release 2024-04-23 23:54:11 +03:00
6ecf321f5c More rooms (up to Undergroung) 2024-04-17 00:38:03 +03:00
56ede08dbf - Moved wrongly placed BMD in Green Area 1
- Renamed Judge Tree areas, as now it's clear what the names should really be
- Renamed Undernet Zero map
- Renamed project executable name
- Added a splitter to make UI adjstable
- Added translation support (see "po" folder to add more)
- Added Russian Translation
- Added more rooms from the Green Town postion of the game
2024-04-03 14:29:00 +03:00
c5a7c1ee9d Added Aqua Comps + some BMD data 2024-03-27 00:01:12 +03:00
01dbca36a6
Updated readme
added mmbn 6 references
2024-03-13 11:40:16 +03:00
26 changed files with 754 additions and 239 deletions

View file

@ -1,8 +1,8 @@
# Megaman Battle Network 5 Mini Map App
# Megaman Battle Network 5 and 6 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)
- Load up MMBN 5 (tested with Team Protoman) or MMBN6 (tested with Cyberbeast Falzar)
- 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 to 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 do what we do

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before After
Before After

View file

@ -14,11 +14,16 @@
</XPManifest>
<Icon Value="0"/>
</General>
<i18n>
<EnableI18N Value="True"/>
<OutDir Value="po"/>
</i18n>
<VersionInfo>
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="2"/>
<BuildNr Value="18"/>
<RevisionNr Value="1"/>
<BuildNr Value="19"/>
<Attributes pvaPrivateBuild="True"/>
<StringTable CompanyName="4aiman" FileDescription="Megaman Battle Network 5 and 6 minimap app" InternalName="mmbn56mm" LegalCopyright="4aiman" OriginalFilename="mmbn56mm" ProductName="MMBN56MM" ProductVersion="2"/>
</VersionInfo>

View file

@ -9,7 +9,7 @@
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="mmbn5mm"/>
<Filename Value="mmbn56mm"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
@ -47,8 +47,8 @@
<Filename Value="mmbn5m.lpr"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="2"/>
<CursorPos X="25" Y="5"/>
<UsageCount Value="57"/>
<CursorPos X="49" Y="20"/>
<UsageCount Value="65"/>
<Loaded Value="True"/>
</Unit>
<Unit>
@ -59,9 +59,9 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
<IsVisibleTab Value="True"/>
<TopLine Value="325"/>
<CursorPos X="25" Y="346"/>
<UsageCount Value="57"/>
<TopLine Value="364"/>
<CursorPos X="52" Y="411"/>
<UsageCount Value="65"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit>
@ -70,21 +70,21 @@
<EditorIndex Value="-1"/>
<TopLine Value="128"/>
<CursorPos Y="152"/>
<UsageCount Value="21"/>
<UsageCount Value="20"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\syshelph.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="147"/>
<CursorPos X="16" Y="161"/>
<UsageCount Value="11"/>
<UsageCount Value="10"/>
</Unit>
<Unit>
<Filename Value="rooms.ini"/>
<EditorIndex Value="1"/>
<TopLine Value="40"/>
<CursorPos X="121" Y="53"/>
<UsageCount Value="16"/>
<EditorIndex Value="4"/>
<TopLine Value="274"/>
<CursorPos X="52" Y="298"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
<DefaultSyntaxHighlighter Value="Ini"/>
</Unit>
@ -92,128 +92,148 @@
<Filename Value="mmbn5m.lpi"/>
<EditorIndex Value="-1"/>
<CursorPos Y="46"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
<DefaultSyntaxHighlighter Value="XML"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\lcl\lcltranslator.pas"/>
<UnitName Value="LCLTranslator"/>
<EditorIndex Value="1"/>
<TopLine Value="95"/>
<CursorPos Y="95"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit>
<Unit>
<Filename Value="C:\lazarus\components\lazutils\translations.pas"/>
<UnitName Value="Translations"/>
<EditorIndex Value="3"/>
<TopLine Value="738"/>
<CursorPos X="54" Y="775"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit>
</Units>
<JumpHistory HistoryIndex="29">
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="31" Column="11"/>
<Caret Line="9" Column="34" TopLine="9"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="32" Column="11"/>
<Caret Line="432" Column="49" TopLine="387"/>
</Position>
<Position>
<Filename Value="mmbn5m.lpr"/>
<Caret Line="21" Column="21"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="40" Column="21"/>
<Caret Line="435" Column="35" TopLine="408"/>
</Position>
<Position>
<Filename Value="mmbn5m.lpr"/>
<Caret Line="13" Column="16"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="168" Column="27" TopLine="128"/>
<Caret Line="428" Column="73" TopLine="409"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="170" Column="13" TopLine="130"/>
<Caret Line="435" Column="50" TopLine="388"/>
</Position>
<Position>
<Filename Value="C:\lazarus\components\lazutils\translations.pas"/>
<Caret Line="762" Column="128" TopLine="738"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="171" Column="13" TopLine="131"/>
<Caret Line="435" Column="44" TopLine="406"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="176" Column="11" TopLine="136"/>
<Caret Line="437" Column="54" TopLine="406"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="282" Column="49" TopLine="282"/>
<Caret Line="26" Column="92"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="272" Column="72" TopLine="235"/>
<Caret Line="414" Column="53" TopLine="390"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="312" Column="88" TopLine="283"/>
<Caret Line="412" Column="27" TopLine="387"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="121" Column="7" TopLine="102"/>
<Caret Line="211" Column="5" TopLine="165"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="291" Column="84" TopLine="272"/>
<Caret Line="409" Column="19" TopLine="399"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="286" Column="14" TopLine="262"/>
<Caret Line="175" Column="24" TopLine="151"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="287" Column="47" TopLine="264"/>
<Caret Line="9" Column="73"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="289" Column="45" TopLine="265"/>
<Caret Line="188" Column="20" TopLine="173"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="291" Column="69" TopLine="268"/>
<Caret Line="189" Column="25" TopLine="171"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="300" Column="37" TopLine="275"/>
<Caret Line="208" Column="3" TopLine="186"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="268" Column="98" TopLine="235"/>
<Caret Line="453" Column="5" TopLine="408"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="344" Column="52" TopLine="315"/>
<Caret Line="209" Column="46" TopLine="197"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="383" Column="89" TopLine="351"/>
<Caret Line="224" Column="58" TopLine="192"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="281" Column="68" TopLine="259"/>
<Caret Line="210" Column="59" TopLine="210"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="358" Column="89" TopLine="333"/>
<Caret Line="195" Column="6" TopLine="171"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="136" Column="109" TopLine="108"/>
<Caret Line="214" Column="66" TopLine="190"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="398" Column="5" TopLine="351"/>
<Caret Line="415" Column="13" TopLine="375"/>
</Position>
<Position>
<Filename Value="rooms.ini"/>
<Caret Line="51" Column="40" TopLine="25"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="396" Column="5" TopLine="350"/>
<Caret Line="201" Column="82" TopLine="174"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="355" Column="14" TopLine="308"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="371" Column="57" TopLine="350"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
</Position>
<Position>
<Filename Value="unit1.pas"/>
<Caret Line="360" Column="141" TopLine="352"/>
<Caret Line="265" Column="25" TopLine="241"/>
</Position>
</JumpHistory>
<RunParams>

Binary file not shown.

111
po/mmbn56mm.en.po Normal file
View file

@ -0,0 +1,111 @@
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"

107
po/mmbn56mm.ru.po Normal file
View file

@ -0,0 +1,107 @@
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 "Неизвестно где..."

123
rooms.ini
View file

@ -231,22 +231,139 @@ 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
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 *
281474985099264=Reg UP2,Rocovery 30 *,ImgData [story]
562949962858496=Hi Cannon L,Elec Sword {PMD}
1688849869438976=Unlocker
3659174706479104=Dubl Shot *,1000z
281474986213376=Panel Return *
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

378
unit1.lfm
View file

@ -1,11 +1,12 @@
object Form1: TForm1
Left = 1066
Height = 448
Top = 323
Width = 606
Left = 821
Height = 478
Top = 472
Width = 792
Anchors = [akTop]
Caption = 'MMBN5-6M'
ClientHeight = 448
ClientWidth = 606
ClientHeight = 478
ClientWidth = 792
Font.CharSet = ANSI_CHARSET
Font.Height = -16
Font.Name = 'Liberation Mono'
@ -14,16 +15,15 @@ object Form1: TForm1
OnClose = FormClose
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '2.2.6.0'
LCLVersion = '3.2.0.0'
object room_name_label: TLabel
AnchorSideLeft.Control = start_stop_button
AnchorSideLeft.Control = Splitter2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 192
Left = 231
Height = 18
Top = 8
Width = 320
BorderSpacing.Left = 8
BorderSpacing.Top = 8
Caption = 'Run the game, then press "Start"'
Color = clGradientInactiveCaption
@ -31,18 +31,20 @@ object Form1: TForm1
Transparent = False
end
object map_image: TImage
AnchorSideLeft.Control = room_name_label
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 = 192
Height = 406
Left = 232
Height = 436
Top = 34
Width = 406
Width = 552
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 1
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
@ -51,153 +53,231 @@ object Form1: TForm1
Proportional = True
Stretch = True
end
object start_stop_button: TSpeedButton
AnchorSideLeft.Control = Owner
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
object Splitter1: TSplitter
Left = 787
Height = 478
Top = 0
Width = 5
Align = alRight
ResizeAnchor = akRight
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
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 spoils_label: TLabel
object Splitter2: TSplitter
Left = 227
Height = 478
Top = 0
Width = 4
OnMoved = Splitter2Moved
ResizeStyle = rsLine
end
object langbox: TComboBox
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.Control = Owner
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
Left = 734
Height = 26
Top = 1
Width = 50
Anchors = [akTop, akRight]
BorderSpacing.Top = 1
BorderSpacing.Right = 8
ItemHeight = 18
ItemIndex = 0
Items.Strings = (
'MMBN 5'
'MMBN 6'
'en'
'ru'
)
OnSelect = gameboxSelect
ReadOnly = True
Style = csOwnerDrawFixed
TabOrder = 5
Text = 'MMBN 5'
Style = csDropDownList
TabOrder = 3
Text = 'en'
OnSelect = langboxSelect
end
object Timer1: TTimer
Enabled = False

13
unit1.lrj Normal file
View file

@ -0,0 +1,13 @@
{"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"}
]}

120
unit1.pas
View file

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
Buttons, Grids, IniFiles, Windows;
Buttons, Grids, IniFiles, Windows, DefaultTranslator, LCLTranslator, FileUtil;
type
TWMHotKey = packed record
@ -22,25 +22,32 @@ type
{ TForm1 }
TForm1 = class ( TForm )
gamebox :TComboBox;
map_stretch_checkbox :TCheckBox;
plus_spoil :TButton;
langbox :TComboBox;
edit_room_button :TButton;
gamebox :TComboBox;
Label1 :TLabel;
map_stretch_checkbox :TCheckBox;
minus_spoil1 :TButton;
spoils_label :TLabel;
spoils_listbox :TListBox;
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 );
@ -53,6 +60,25 @@ 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;
@ -76,8 +102,7 @@ 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;
@ -118,8 +143,8 @@ var
hProcess :THandle;
ROOMS :TIniFile; // contains room labels
process_list :TStrings;
room :QWORD = -1; // contains current room 16-bit value
last_room :QWORD = -1;
room :QWORD = 18446744073709551615; // contains current room 16-bit value
last_room :QWORD = 18446744073709551615;
room_name :STRING;
new_room :bool;
spoils_list :STRING;
@ -138,12 +163,17 @@ 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
@ -151,7 +181,18 @@ begin
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.' );
ShowMessage ( ERROR_HOTKEY_REGISTRATION_FAILED );
// translations
languages := TStringList.Create ( );
current_language := ROOMS.ReadString ( 'Settings', 'Language', 'en' );
FindAllFiles ( languages, 'po', '*.po', False );
for i := 0 to languages.Count -1 do begin
languages[i] := languages [i].Replace ( 'po\mmbn56mm.', '' ).Replace ( '.po', '' );
end;
langbox.Items := languages;
langbox.ItemIndex := langbox.Items.IndexOf ( current_language );
SetDefaultLang ( current_language, 'po' );
end;
@ -167,6 +208,14 @@ 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;
@ -182,7 +231,7 @@ end;
procedure TForm1.minus_spoil1Click ( Sender :TObject );
var
Txt :STRING;
Txt :STRING = '';
i :INTEGER;
begin
if ( spoils_listbox.ItemIndex > -1 ) then begin
@ -205,11 +254,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 to Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then 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
@ -227,16 +276,22 @@ 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 in Room #' + IntToStr ( room ), 'Enter item''s name', new_spoil_name ) then begin
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
@ -262,22 +317,22 @@ var
begin
if start_stop_button.Down = False then begin
start_stop_button.Caption := 'Start';
start_stop_button.Caption := START_BUTTON_STRAT;
Timer1.Enabled := False;
CloseHandle ( hProcess );
room_name_label.Caption := 'Run the game, then press "Start"';
room_name_label.Caption := RUN_THE_GAME_NOTICE;
end else begin
start_stop_button.Caption := 'Stop';
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 := 'MMBN5-6M: Reading from process ID ' + IntToStr ( ProcID );
Caption := APP_CAPTION + ' ' + IntToStr ( ProcID );
Timer1.Enabled := True;
break;
end else begin
room_name_label.Caption := 'Error. Run the game.';
room_name_label.Caption := ERROR_GAME_NOT_RUNNING;
end;
end;
end;
@ -307,8 +362,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_name_label.Caption := 'Room #' + IntToStr ( room ) + ': ' + room_name;
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 ), '' );
@ -325,11 +380,11 @@ begin
end;
end;
end else begin
room_name_label.Caption := 'Error. Make sure the game is running.';
room_name_label.Caption := ERROR_GAME_MEMORY_NOT_READ;
end;
except
on edit_room_button :Exception do
room_name_label.Caption := 'Error. Can''t read game''s memory.';
room_name_label.Caption := ERROR_UNABLE_TO_READ_GAME_MEMORY;
end;
end;
@ -338,12 +393,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 this Room''s name', new_room_name ) then begin
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 := -1;
last_room := 18446744073709551615;
end;
end;
@ -358,6 +413,7 @@ begin
// free additionally created objects
ROOMS.Free;
process_list.Free;
languages.Free;
UnregisterHotKey ( Handle, 111000 );
end;
@ -397,4 +453,10 @@ begin
end;
initialization
SetDefaultLang ( 'en', 'po' );
end.