From 75b4423e8f03b69b77eae41c9198e906c1b8f823 Mon Sep 17 00:00:00 2001 From: 4aiman Date: Wed, 13 Mar 2024 00:09:36 +0300 Subject: [PATCH 1/8] Added rooms up to Auditorium. Fixed Room not being loaded w/o re-entering the room --- mmbn5m.lps | 4 ++-- mmbn5m.res | Bin 12372 -> 12372 bytes rooms.ini | 41 ++++++++++++++++++++++++++++++++++++++++- unit1.pas | 1 + 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/mmbn5m.lps b/mmbn5m.lps index 7cfc45e..cbb4b0e 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -59,8 +59,8 @@ - - + + diff --git a/mmbn5m.res b/mmbn5m.res index 617826e0e8e036f3f0991eef28d1c79490e02a03..43c57965c27a7677b061408c346766705283fe56 100644 GIT binary patch delta 36 ucmV+<0Nel6VANo+*awsJ2ey;m2x60L37C`E2ON{62sD#G2`sY&3Q#6S{tov5 delta 36 ucmV+<0Nel6VANo+*awq{2^^Ey2ey-{2`-a}2xybo2`rQF2$-`33Q#6F7!O$h diff --git a/rooms.ini b/rooms.ini index d0a0636..98566cd 100644 --- a/rooms.ini +++ b/rooms.ini @@ -208,6 +208,45 @@ MMBN 6=2147425942 1407374883684352=Cyber Academy 2F Hallway 131072=Cyber Academy Class 6-1 562949962596352=Class 6-1 Comp +18446744073709486080=Title +0=ACDC Town +281474976841728=Class 6-2 +844424939307008=Class 6-2 Comp +1125899916017664=Class 1-1 Comp +562949953552384=Class 1-1 +844424930263040=Class 1-2 +8388608=Robo Control Area 1 +281474985099264=Robo Control Area 2 +562949962858496=Central Area 3 +2251799813816320=Mayor Cain's Office +1688849869438976=Bathroom Comp (Lan's Toilet) +9502720=Seaside Area 1 +3659174706479104=Stuffed Toy Shop Comp +281474986213376=Seaside Area 2 +844424939044864=Aquarium Home Page +562949962924032=Seaside Area 3 +196608=Seaside Town +844424939372544=Water Machine Comp +2251799822860288=Fish Sticks Shop Comp +281474976907264=Aquarium 1 +844424930328576=Auditorium (Aquarium Arena) +562949953617920=Aquarium 2 [Spoils MMBN 6] -562949962596352=700z +562949962596352=700z,Thunder * +9175040=600z +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 * +562949962858496=Hi Cannon L,Elec Sword {PMD} +1688849869438976=Unlocker +3659174706479104=Dubl Shot *,1000z +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 diff --git a/unit1.pas b/unit1.pas index 9a906a7..f46daaf 100644 --- a/unit1.pas +++ b/unit1.pas @@ -343,6 +343,7 @@ 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 ' + current_game, IntToStr ( room ), new_room_name ); + last_room := -1; end; end; From 01dbca36a6018bf244edae8ed5e8187afe0189ae Mon Sep 17 00:00:00 2001 From: 4aiman Date: Wed, 13 Mar 2024 11:40:16 +0300 Subject: [PATCH 2/8] Updated readme added mmbn 6 references --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0fbfa30..e614e0e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 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. @@ -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. From c5a7c1ee9d0f22e49b599ebb218799fc1958476c Mon Sep 17 00:00:00 2001 From: 4aiman Date: Wed, 27 Mar 2024 00:01:12 +0300 Subject: [PATCH 3/8] Added Aqua Comps + some BMD data --- .../{Aquarium Area 1.PNG => Aquarium Comp 1.PNG} | Bin .../{Aquarium Area 2.PNG => Aquarium Comp 2.PNG} | Bin .../{Aquarium Area 3.PNG => Aquarium Comp 3.PNG} | Bin rooms.ini | 15 ++++++++++++++- 4 files changed, 14 insertions(+), 1 deletion(-) rename images/MMBN 6/{Aquarium Area 1.PNG => Aquarium Comp 1.PNG} (100%) rename images/MMBN 6/{Aquarium Area 2.PNG => Aquarium Comp 2.PNG} (100%) rename images/MMBN 6/{Aquarium Area 3.PNG => Aquarium Comp 3.PNG} (100%) diff --git a/images/MMBN 6/Aquarium Area 1.PNG b/images/MMBN 6/Aquarium Comp 1.PNG similarity index 100% rename from images/MMBN 6/Aquarium Area 1.PNG rename to images/MMBN 6/Aquarium Comp 1.PNG diff --git a/images/MMBN 6/Aquarium Area 2.PNG b/images/MMBN 6/Aquarium Comp 2.PNG similarity index 100% rename from images/MMBN 6/Aquarium Area 2.PNG rename to images/MMBN 6/Aquarium Comp 2.PNG diff --git a/images/MMBN 6/Aquarium Area 3.PNG b/images/MMBN 6/Aquarium Comp 3.PNG similarity index 100% rename from images/MMBN 6/Aquarium Area 3.PNG rename to images/MMBN 6/Aquarium Comp 3.PNG diff --git a/rooms.ini b/rooms.ini index 98566cd..a1e5948 100644 --- a/rooms.ini +++ b/rooms.ini @@ -231,6 +231,12 @@ 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 [Spoils MMBN 6] 562949962596352=700z,Thunder * @@ -244,9 +250,16 @@ MMBN 6=2147425942 562949962858496=Hi Cannon L,Elec Sword {PMD} 1688849869438976=Unlocker 3659174706479104=Dubl Shot *,1000z -281474986213376=Panel Return * +281474986213376=Panel Return *,Vulcan 2D 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= +1407374883684352=QuizBook From 56ede08dbfb24b60bae1c32796f746a14e6d42a1 Mon Sep 17 00:00:00 2001 From: 4aiman Date: Wed, 3 Apr 2024 14:29:00 +0300 Subject: [PATCH 4/8] - 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 --- images/MMBN 6/Green Area 1.PNG | Bin 31107 -> 20449 bytes ...gTree Area 1.PNG => Judge Tree Area 1.PNG} | Bin ...gTree Area 2.PNG => Judge Tree Area 2.PNG} | Bin ...gTree Area 3.PNG => Judge Tree Area 3.PNG} | Bin ...dernet Zero Area.PNG => Undernet Zero.PNG} | Bin mmbn5m.lpi | 7 +- mmbn5m.lps | 128 +++--- mmbn5m.res | Bin 12372 -> 12372 bytes po/mmbn56mm.en.po | 111 ++++++ po/mmbn56mm.ru.po | 107 +++++ rooms.ini | 39 +- unit1.lfm | 376 +++++++++++------- unit1.lrj | 13 + unit1.pas | 120 ++++-- 14 files changed, 666 insertions(+), 235 deletions(-) rename images/MMBN 6/{JdgTree Area 1.PNG => Judge Tree Area 1.PNG} (100%) rename images/MMBN 6/{JdgTree Area 2.PNG => Judge Tree Area 2.PNG} (100%) rename images/MMBN 6/{JdgTree Area 3.PNG => Judge Tree Area 3.PNG} (100%) rename images/MMBN 6/{Undernet Zero Area.PNG => Undernet Zero.PNG} (100%) create mode 100644 po/mmbn56mm.en.po create mode 100644 po/mmbn56mm.ru.po create mode 100644 unit1.lrj diff --git a/images/MMBN 6/Green Area 1.PNG b/images/MMBN 6/Green Area 1.PNG index 2bf65c0de5fbe4aed2bc82760c12014f51aa4964..d6e78cf85a970ded2a5c7f8da2b72ccaec002760 100644 GIT binary patch literal 20449 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 literal 31107 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

Ik|{8W5Tyr|JIP>Wi1dHTf3 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 + + + + - + + diff --git a/mmbn5m.lps b/mmbn5m.lps index cbb4b0e..47aa1ee 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -9,7 +9,7 @@ - + @@ -47,8 +47,8 @@ - - + + @@ -58,10 +58,9 @@ - - - - + + + @@ -70,21 +69,22 @@ - + - + - - - - + + + + + @@ -92,128 +92,148 @@ - + + + + + + + + + + + + + + + + + + + - + - + + + + + - + + + + + - + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - - - - - - - - - - - - - - - + diff --git a/mmbn5m.res b/mmbn5m.res index 43c57965c27a7677b061408c346766705283fe56..29a13f56d92813e9d77328c91eee44fd9d6c9288 100644 GIT binary patch delta 29 kcmcbTa3x_w2|Kee1LNj$_E08vLk2wtLk7#umpL2N0E)E;IRF3v delta 29 kcmcbTa3x_w2|Ke81H 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. From 6ecf321f5c4280287f50d28949bb1c3b71d95368 Mon Sep 17 00:00:00 2001 From: 4aiman Date: Wed, 17 Apr 2024 00:38:03 +0300 Subject: [PATCH 5/8] More rooms (up to Undergroung) --- ...ther Area 1.PNG => Mr. Weather Comp 1.PNG} | Bin ...ather Area2.PNG => Mr. Weather Comp 2.PNG} | Bin ...ther Area 3.PNG => Mr. Weather Comp 3.PNG} | Bin .../MMBN 6/{Sky Area .PNG => Sky Area 2.PNG} | Bin mmbn5m.lps | 4 +- rooms.ini | 58 +++++++++++++++++- unit1.lfm | 20 +++--- 7 files changed, 68 insertions(+), 14 deletions(-) rename images/MMBN 6/{Mr. Weather Area 1.PNG => Mr. Weather Comp 1.PNG} (100%) rename images/MMBN 6/{Mr. Weather Area2.PNG => Mr. Weather Comp 2.PNG} (100%) rename images/MMBN 6/{Mr. Weather Area 3.PNG => Mr. Weather Comp 3.PNG} (100%) rename images/MMBN 6/{Sky Area .PNG => Sky Area 2.PNG} (100%) diff --git a/images/MMBN 6/Mr. Weather Area 1.PNG b/images/MMBN 6/Mr. Weather Comp 1.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Area 1.PNG rename to images/MMBN 6/Mr. Weather Comp 1.PNG diff --git a/images/MMBN 6/Mr. Weather Area2.PNG b/images/MMBN 6/Mr. Weather Comp 2.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Area2.PNG rename to images/MMBN 6/Mr. Weather Comp 2.PNG diff --git a/images/MMBN 6/Mr. Weather Area 3.PNG b/images/MMBN 6/Mr. Weather Comp 3.PNG similarity index 100% rename from images/MMBN 6/Mr. Weather Area 3.PNG rename to images/MMBN 6/Mr. Weather Comp 3.PNG diff --git a/images/MMBN 6/Sky Area .PNG b/images/MMBN 6/Sky Area 2.PNG similarity index 100% rename from images/MMBN 6/Sky Area .PNG rename to images/MMBN 6/Sky Area 2.PNG diff --git a/mmbn5m.lps b/mmbn5m.lps index 47aa1ee..fd5fe7f 100644 --- a/mmbn5m.lps +++ b/mmbn5m.lps @@ -58,6 +58,7 @@ + @@ -80,10 +81,9 @@ - - + diff --git a/rooms.ini b/rooms.ini index 2944f00..0df6457 100644 --- a/rooms.ini +++ b/rooms.ini @@ -254,11 +254,40 @@ MMBN 6=2147425942 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 [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 @@ -286,13 +315,38 @@ MMBN 6=2147425942 1407374892466176=BlkBomb F {PMD},HP Memory 2814749776281600=Yoyo *,Sub Memory 9568256=Lance W {PMD},Spreader2 C -281474986278912=Speed +1,Auth Data +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} [Settings] Language=ru diff --git a/unit1.lfm b/unit1.lfm index 7cbbc3d..4d199fe 100644 --- a/unit1.lfm +++ b/unit1.lfm @@ -1,7 +1,7 @@ object Form1: TForm1 - Left = 1705 + Left = 821 Height = 478 - Top = 548 + Top = 472 Width = 792 Anchors = [akTop] Caption = 'MMBN5-6M' @@ -15,7 +15,7 @@ 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 = Splitter2 AnchorSideLeft.Side = asrBottom @@ -83,8 +83,8 @@ object Form1: TForm1 BorderSpacing.Left = 8 BorderSpacing.Bottom = 8 Caption = '+' - OnClick = plus_spoilClick TabOrder = 0 + OnClick = plus_spoilClick end object minus_spoil1: TButton AnchorSideLeft.Control = plus_spoil @@ -103,8 +103,8 @@ object Form1: TForm1 BorderSpacing.Right = 4 BorderSpacing.Bottom = 8 Caption = '-' - OnClick = minus_spoil1Click TabOrder = 1 + OnClick = minus_spoil1Click end object map_stretch_checkbox: TCheckBox AnchorSideLeft.Control = Panel1 @@ -123,8 +123,8 @@ object Form1: TForm1 BorderSpacing.Right = 4 BorderSpacing.Bottom = 8 Caption = 'Stretch' - OnChange = map_stretch_checkboxChange TabOrder = 2 + OnChange = map_stretch_checkboxChange end object spoils_listbox: TListBox AnchorSideLeft.Control = Panel1 @@ -145,8 +145,8 @@ object Form1: TForm1 BorderStyle = bsNone Color = clGradientInactiveCaption ItemHeight = 0 - OnDblClick = spoils_listboxDblClick TabOrder = 3 + OnDblClick = spoils_listboxDblClick end object spoils_label: TLabel AnchorSideLeft.Control = Panel1 @@ -180,8 +180,8 @@ object Form1: TForm1 BorderSpacing.Top = 8 BorderSpacing.Right = 4 Caption = 'Edit Room' - OnClick = edit_room_buttonClick TabOrder = 4 + OnClick = edit_room_buttonClick end object start_stop_button: TSpeedButton AnchorSideLeft.Control = Panel1 @@ -225,11 +225,11 @@ object Form1: TForm1 'MMBN 5' 'MMBN 6' ) - OnSelect = gameboxSelect ReadOnly = True Style = csOwnerDrawFixed TabOrder = 5 Text = 'MMBN 5' + OnSelect = gameboxSelect end object Label1: TLabel AnchorSideLeft.Control = Panel1 @@ -273,11 +273,11 @@ object Form1: TForm1 'en' 'ru' ) - OnSelect = langboxSelect ReadOnly = True Style = csDropDownList TabOrder = 3 Text = 'en' + OnSelect = langboxSelect end object Timer1: TTimer Enabled = False From 9c42c6b89dd8d9cc1fa28ceb089c923153427ca5 Mon Sep 17 00:00:00 2001 From: 4aiman Date: Tue, 23 Apr 2024 23:54:11 +0300 Subject: [PATCH 6/8] Added rooms up to the final battle. Final Release --- ...avillon Area 1.PNG => Pavillion Comp 1.PNG} | Bin ...avillon Area 2.PNG => Pavillion Comp 2.PNG} | Bin ...avillon Area 3.PNG => Pavillion Comp 3.PNG} | Bin ...avillon Area 4.PNG => Pavillion Comp 4.PNG} | Bin rooms.ini | 17 +++++++++++++++++ 5 files changed, 17 insertions(+) rename images/MMBN 6/{Pavillon Area 1.PNG => Pavillion Comp 1.PNG} (100%) rename images/MMBN 6/{Pavillon Area 2.PNG => Pavillion Comp 2.PNG} (100%) rename images/MMBN 6/{Pavillon Area 3.PNG => Pavillion Comp 3.PNG} (100%) rename images/MMBN 6/{Pavillon Area 4.PNG => Pavillion Comp 4.PNG} (100%) diff --git a/images/MMBN 6/Pavillon Area 1.PNG b/images/MMBN 6/Pavillion Comp 1.PNG similarity index 100% rename from images/MMBN 6/Pavillon Area 1.PNG rename to images/MMBN 6/Pavillion Comp 1.PNG diff --git a/images/MMBN 6/Pavillon Area 2.PNG b/images/MMBN 6/Pavillion Comp 2.PNG similarity index 100% rename from images/MMBN 6/Pavillon Area 2.PNG rename to images/MMBN 6/Pavillion Comp 2.PNG diff --git a/images/MMBN 6/Pavillon Area 3.PNG b/images/MMBN 6/Pavillion Comp 3.PNG similarity index 100% rename from images/MMBN 6/Pavillon Area 3.PNG rename to images/MMBN 6/Pavillion Comp 3.PNG diff --git a/images/MMBN 6/Pavillon Area 4.PNG b/images/MMBN 6/Pavillion Comp 4.PNG similarity index 100% rename from images/MMBN 6/Pavillon Area 4.PNG rename to images/MMBN 6/Pavillion Comp 4.PNG diff --git a/rooms.ini b/rooms.ini index 0df6457..0de81b8 100644 --- a/rooms.ini +++ b/rooms.ini @@ -283,6 +283,16 @@ MMBN 6=2147425942 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 * @@ -347,6 +357,13 @@ MMBN 6=2147425942 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 From 9371876ca2198fea7ff86bc3a207231bc20d611d Mon Sep 17 00:00:00 2001 From: 4aiman <4aiman@noreply.localhost> Date: Wed, 26 Nov 2025 18:57:54 +0000 Subject: [PATCH 7/8] Fixed images folder link in the readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e614e0e..c43568c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 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. From 331d4fc1de53291fcb5395b13888e4f8653f54fc Mon Sep 17 00:00:00 2001 From: 4aiman <4aiman@noreply.localhost> Date: Wed, 26 Nov 2025 19:02:58 +0000 Subject: [PATCH 8/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c43568c..889d268 100644 --- a/README.md +++ b/README.md @@ -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