Skip to main content

MMBN4 Custom Battle Guide

Mega Man Battle Network 4 was a major turning point in the series. The game got a huge overhaul both visually and gameplay-wise. The overhaul set a precedent for future titles.

To follow this guide, you need VisualBoyAdvance (VBA) and a backup of the game. I do not condone piracy, but if you somehow already have a copy, follow along.

Unfortunately, this game has no freely-accessible battle which you can repeat at any time in the game. Instead, this guide will also go over how to first overwrite the battles in the doghouse, then create your own battle.

You can download saves and state saves which are already in the map.

Download Battle Network 4 saves.

Here is where you should be. This is the Doghouse Comp.

Using VBA’s Memory Viewer window, the following steps will let you make temporary changes. Remember that any changes will be lost if the emulator is closed. You can make the changes permanent if the same steps are done in a hex editor such as HxD.

To make your own battle, a battle will first have to be made in free space. The freespace is the same for all versions of the game.

087F73A0

This free space will be used to enter the battle data needed for your battle. First, you write the Battle Settings data. Enter the following default data to get started.

20 00 1E 14 00 FF 83 00 85 F3 0F 08

The format is documented below.

0x00 Encounter Type
0x01 Battlefield
0x02 Unknown
0x03 Music
0x04 Battle Mode
0x05 Background
0x06 Enemy Level/Effect
0x07 Battle Number Count
0x08 Object Setup Pointer (4 bytes)

Also, when you’ve decided on the free space, write that pointer to the following offset, depending on your version.

Red Sun B4WE US
080FE610
Blue Moon B4BE US
080FE61C
Red Sun B4WP EU
080FE5F0
Blue Moon B4BP EU
080FE5FC
Red Sun B4WJ JP
080FE468
Red Sun B4WJ JP (v1.1)
080FE4E4
Blue Moon B4BJ JP
080FE474

It should be written in reverse if you are looking at it in 8-bit view. For example, 087F73A0 would become A0 73 7F 08.

0x00 Encounter Type

This value affects how the battle is encountered. If the value is 20, then you can encounter it.
Default is: 20

0x01 Battlefield

This byte lets you choose from the game’s 148 premade battlefields. Each stage has a different arrangement of panel types.
Default is: 00

Download all stages.

0x02 Unknown

It is unknown what this value does.
Default is: 1E

0x03 Music

This game finally lets you change the music through the Battle Settings. The value of 14 means its using the Virus Battle Theme. The full music list is below.
Default is: 14

00 = Title Screen
01 = Mysterious Theme
02 = ACDC Theme
03 = Indoors Theme
04 = Electopia Theme
05 = DenDome Theme
06 = Castillo Theme
07 = Netopia Theme
08 = NAXA Theme
09 = Tournament Selection
0A = Dracky Castle
0B = Event Occurrence
0C = Sad Theme
0D = Hero Theme
0E = Transmission
0F = ElecTownTower Theme
10 = ToyRobo Comp Theme
11 = Space Comp Theme
12 = Internet Theme
13 = Undernet Theme
14 = Virus Battle
15 = Boss Battle
16 = Final Battle
17 = Tournament Theme
18 = Winner Theme
19 = Loser Theme
1A = Game Over
1B = Boss Prelude
1C = Credits Theme
1D = Navi Customizer
1E = Winner Theme (short version)
1F = Tournament Winner
20 = Dracky Comp
21 = Operation Battle Theme
22 = No Music

0x04 Battle Mode

Battle Mode lets you play special battles like tutorials or ending the battle with no results. The full list of battle modes are below.
Default is: 00

00 = Normal Battle
04 = Disable Game Over
10 = No Running Battle
20 = Start Battle with Max HP
40 = Tutorial 1
41 = Tutorial 2
42 = Tutorial 3
43 = Double Soul Tutorial
44 = Free Tournament Mode
45 = No Results
46 = Network Battle

Some notes:
When the value is set to 10, you won’t be given an option to run, so you’re stuck in the battle. You also can’t run from the No Results battle.
For Free Tournament Mode, you can’t choose chips and pushing Select instantly quits the battle.
On Network Battle Mode, the battle instantly disconnects since there is no other player connected.

0x05 Background

This byte lets you change the background for the battle. The full background list is below.
Default is: FF

00 = ElecTownTower BG
01 = ToyRobo Comp BG
02 = Lan's HP BG
03 = Generic Comp BG
04 = ACDC Area BG
05 = Town Area BG
06 = Park Area BG
07 = YumLand Area BG
08 = Undernet BG
09 = Dark Generic Comp BG
0A = Meteor Comp BG
0B = Mayl's HP BG
0C = Dex's HP BG
0D = Yai's HP BG
0E = Hotel BG
0F = Castillo BG
10 = JomonElec HP BG
11 = Black Earth BG
12 = Dracky Comp BG
13 = Netopia Area BG
14 = Netfrica Area BG
15 = Sharo Area BG
16 = Space Center BG
17 = Duo Battle BG
18 = Green Tournament BG
19 = Blue Tournament BG
1A = Gold Tournament BG
FF = Inherited from Map

Download all backgrounds.

0x06 Battle Effects

Battle effects modify other aspects of the battle which can even get the tournament intro to appear during battle. The full battle effects table is listed below.
Default is: 83

1 = Battle can be encountered
2 = Unknown
4 = Unknown
8 = Unknown
10 = Unknown
20 = Tournament Intro
40 = Multiplayer Mode
80 = Force Lower Level

Effects can be combined using Windows Calculator. Two effects can be added together to get both effects.
For 40, this effect works with the Multiplayer Battle mode from the byte at 0x04. If it is enabled and the battle does load, it will make the Winner results screen appear. Alternately, you can go to 0203581F and write 46 during battle to see the effect. Also, your karma will not be affected by Dark Chips.
For 80, forcing lower level is necessary to fight all versions of enemies.

0x07 Battle Number Count

For values above 00, the number of the battle appears after the viruses appear. This is normally reserved for sequential battles.
Default is: 00

0x08 Object Setup Pointer

This is the pointer to the object setup data which details where the player and enemies appear. If you copied the default values from above, it should be pointing to the old battle in the Doghouse.
Overwrite these 4 bytes to B0 73 7F 08 or whatever free space offset. This will be necessary for the next step.

When you’ve set all the Battle Settings, you can start writing the Object Setup data. Using the above offset, go to the following offset, which is the same across all versions.

087F73B0

To read and write the Object Setup format, follow the documentation below.

0x00 Enemy Value
0x01 X-Position
0x02 Y-Position
0x03 Object Type

Every object requires these 4 bytes to fill one “slot”. Each slot can contain an object, an enemy, or the player. The game stops reading when the enemy value is FF which is after the last object type. More unfortunate in this game, only 3 enemies are supported on the battlefield at once. The 4th enemy will slow down the custom screen considerably. The game could also freeze when any enemy attacks. The 4th name however, appears fine. 3 Navis on the battlefield also make the game unstable.

0x00 Enemy Value

This value determines which enemy you encounter. This value also acts as the Flag’s HP when it is being used in that slot. The full enemy list is below.

00 = MegaMan
01 = Mettaur
02 = Mettaur EX
03 = Mettaur2
04 = Mettaur2 EX
05 = Mettaur3
06 = Mettaur3 EX
07 = VolGear
08 = VolGear EX
09 = VolGear2
0A = VolGear2 EX
0B = VolGear3
0C = VolGear3 EX
0D = Billy
0E = Billy EX
0F = Silly
10 = Silly EX
11 = Killy
12 = Killy EX
13 = Gaia
14 = Gaia EX
15 = Gaia +
16 = Gaia + EX
17 = GaiaMega
18 = GaiaMega EX
19 = Spikey
1A = Spkiey EX
1B = Spikey2
1C = Spikey2 EX
1D = Spikey3
1E = Spikey3 EX
1F = Shrimpy
20 = Shrimpy EX
21 = Shrimpy2
22 = Shrimpy2 EX
23 = Shrimpy3
24 = Shrimpy3 EX
25 = Boomer
26 = Boomer EX
27 = Gloomer
28 = Gloomer EX
29 = Doomer
2A = Doomer EX
2B = Trumpy
2C = Tuby
2D = Tromby
2E = MuteAnt
2F = Xylos
30 = Trumpy EX
31 = MagTect
32 = MagTect EX
33 = MagTect +
34 = MagTect + EX
35 = MagTectX
36 = MagTectX EX
37 = Melody
38 = Melody EX
39 = Hellody
3A = Hellody EX
3B = Felony
3C = Felony EX
3D = Dharma
3E = Dharma EX
3F = Karma
40 = Karma EX
41 = Dogma
42 = Dogma EX
43 = Kilby
44 = Kilby EX
45 = Kilbur
46 = Kilbur EX
47 = Kilbo
48 = Kilbo EX
49 = Weather
4A = Whomper
4B = Winger
4C = Wonder
4D = Wither
4E = Weather SP
4F = Spidy
50 = Spidy EX
51 = Webby
52 = Webby EX
53 = Arachy
54 = Arachy EX
55 = Lark
56 = Lark EX
57 = Bark
58 = Bark EX
59 = Tark
5A = Takr EX
5B = CirKill
5C = CirKill EX
5D = CirCrush
5E = CirCrush EX
5F = CirSmash
60 = CirSmash EX
61 = Moloko
62 = Moloko EX
63 = Milko
64 = Milko EX
65 = Macko
66 = Macko EX
67 = Walla
68 = Walla EX
69 = Walland
6A = Walland EX
6B = Waldon
6C = Waldon EX
6D = Elemperor1
6E = Elemperor2
6F = Elemperor3
70 = Elemperor4
71 = Elemperor5
72 = Elemperor SP
73 = BombBoy
74 = BombBoy EX
75 = BombWorker
76 = BombWorker EX
77 = BombLaboror
78 = BombLaboror EX
79 = WindBox
7A = VaccuumFan
7B = WindBox2
7C = VaccuumFan2
7D = WindBox3
7E = VaccuumFan3
7F = Nothing
80 = Roll
81 = Roll Alpha
82 = Roll Beta
83 = Roll Omega
84 = GutsMan
85 = GutsMan Alpha
86 = GutsMan Beta
87 = GutsMan Omega
88 = WindMan
89 = WindMan Alpha
8A = WindMan Beta
8B = WindMan Omega
8C = SearchMan
8D = SearchMan Alpha
8E = SearchMan Beta
8F = SearchMan Omega
90 = FireMan
91 = FireMan Alpha
92 = FireMan Beta
93 = FireMan Omega
94 = ThunderMan
95 = ThunderMan Alpha
96 = ThunderMan Beta
97 = ThunderMan Omega
98 = ProtoMan
99 = ProtoMan Alpha
9A = ProtoMan Beta
9B = ProtoMan Omega
9C = NumberMan
9D = NumberMan Alpha
9E = NumberMan Beta
9F = NumberMan Omega
A0 = MetalMan
A1 = MetalMan Alpha
A2 = MetalMan Beta
A3 = MetalMan Omega
A4 = JunkMan
A5 = JunkMan Alpha
A6 = JunkMan Beta
A7 = JunkMan Omega
A8 = AquaMan
A9 = AquaMan Alpha
AA = AquaMan Beta
AB = AquaMan Omega
AC = WoodMan
AD = WoodMan Alpha
AE = WoodMan Beta
AF = WoodMan Omega
B0 = TopMan
B1 = TopMan Alpha
B2 = TopMan Beta
B3 = TopMan Omega
B4 = ShadeMan
B5 = ShadeMan Alpha
B6 = ShadeMan Beta
B7 = ShadeMan Omega
B8 = BurnMan
B9 = BurnMan Alpha
BA = BurnMan Beta
BB = BurnMan Omega
BC = ColdMan
BD = ColdMan Alpha
BE = ColdMan Beta
BF = ColdMan Omega
C0 = SparkMan
C1 = SparkMan Alpha
C2 = SparkMan Beta
C3 = SparkMan Omega
C4 = HeelNavi
C5 = HeelNavi Alpha
C6 = HeelNavi Beta
C7 = HeelNavi Omega
C8 = NormalNavi
C9 = NormalNavi Alpha
CA = NormalNavi Beta
CB = NormalNavi Omega
CC = HeelNavi
CD = HeelNavi Alpha
CE = HeelNavi Beta
CF = HeelNavi Omega
D0 = LaserMan
D1 = LaserMan Alpha
D2 = LaserMan Beta
D3 = LaserMan Omega
D4 = KendoMan
D5 = KendoMan Alpha
D6 = KendoMan Beta
D7 = KendoMan Omega
D8 = VideoMan
D9 = VideoMan Alpha
DA = VideoMan Beta
DB = VideoMan Omega
DC = NaviShadow
DD = NaviShadow Omega
DE = NaviBlack
DF = NaviBlack Omega
E0 = Duo
E1 = Duo Alpha
E2 = Duo Beta
E3 = Duo Omega
E4 = Bass
E5 = Bass Omega
E6 = BassXX
E7 = Nothing
E8 = Nothing
E9 = Nothing
EA = Nothing
EB = Nothing
EC = Nothing
ED = Nothing
EE = Nothing
EF = Nothing
F0 = MegaMan DS
F1 = Roll DS
F2 = GutsMan DS
F3 = WindMan DS
F4 = SearchMan DS
F5 = FireMan DS
F6 = ThunderMan DS
F7 = ProtoMan DS
F8 = NumberMan DS
F9 = MetalMan DS
FA = JunkMan DS
FB = AquaMan DS
FC = WoodMan DS
FD = Nothing
FE = Nothing

Some enemy notes:
MegaMan as an enemy won’t do anything. He also has 4000 HP.
Enemies B4-B6 is ShadeMan from the story encounter. In these version, he cannot take damage. After the second turn, the battle ends.
The DS Navis on the list are merely the names and appear as Mettaurs in battle. You can only fight DS Navis using the Object Type value 04, which is detailed further below.

0x01 X-Position

The second byte specifies the X-position of the object. Values represent whole panels on rows. Use the table below.

[01][02][03][04][05][06]

0x02 Y-Position

This byte determines the object’s Y-position. Values represent whole panels on columns. Use the table below.

[01]
[02]
[03]

0x03 Object Type

This byte determines the kind of enemy or object that fills the slot. Actual objects like Rocks don’t count against the maximum enemy limit. Below is a full list of object types.

00 = Player-Controlled Navi
01 = Enemy
02 = Mystery Data
03 = Rock
04 = GutsMan DS
05 = Metal Gear
06 = Nothing
07 = Flag
08 = Fight on Red Side

Some notes:
Player-Controlled Navi is MegaMan by default, but this means you can control him normally.
For Mystery Data, it only appears when the enemy value is either 08, 10, 20, 40. Its rewards become 2000z, 1 BugFrag, 2 BugFrags, and 3 BugFrags respectively.

There is a maximum of 2 objects allowed, so this means you can only have 2 Rocks on the battlefield.

For 04, this creates GutsMan DS with 100HP by default. If the enemy value is 01, GutsMan DS appears on the enemy side. This can replace the player. Because of the random nature of the game’s memory, it isn’t possible to change the HP, chips, or other abilities of this enemy. You can customize the type of enemy that is used, however. At 0200AB10 in the game’s memory, the following bytes appear: 02 01 00 00 02 01 00 00. This sets the Navi and ability source for the DS Navi on your side and on the enemy’s. 02 in this case means it’s using GutsMan. The 01 means its using a blank ability source. The Navi list is below.

00 = MegaMan
01 = Roll
02 = GutsMan
03 = WindMan
04 = SearchMan
05 = FireMan
06 = ThunderMan
07 = ProtoMan
08 = NumberMan
09 = MetalMan
0A = JunkMan
0B = AquaMan
0C = WoodMan

The second byte is ability  source. Enter 00 to use MegaMan’s current HP and folder. The same format is repeated for the enemy side’s DS Navi.

Metal Gears deal 20 damage to whatever they run into.

For Flag, the same rules from BN3 apply. Flags can either be on the red or blue side. The enemy value determines the HP and which side it belongs to. Values 00-7F specify HP for the red side’s flag. Values 80-FF specify HP for the blue side’s flag. 1016 is the maximum HP allowed for a Flag. When a Flag is deleted, the side it was on loses.

When value 08 is used, the enemy can fight on the red side with MegaMan. Most viruses and Navis play with little problem. The enemy’s HP becomes the player’s HP which is shared, making it easy to lose, fast.

And that concludes the MegaMan Battle Network 4 Custom Battle Guide! Check to see if your battle is loading and make sure you followed every step carefully.

Here is a sample video demonstrating what this guide lets you do!

Discussion topic on the TREZ Forums