Settings - ConConner/LAMP GitHub Wiki

Program Settings

The Program Settings are universal to LAMP. The Program Settings are applied in every Project that you load.

Program Settings are saved under C:\Users\User\AppData\Local\LAMP.

Opening the Program Settings will show this window

ROM Path

LAMP does not do any modifications to your Metroid 2 ROM, it will compile all the changes from the project files into a new ROM. Because of this, it is only required to have one copy of a Metroid 2 ROM, rather than making a dedicated copy for each hack. ROM Path is the Path where LAMP will look for the Metroid 2: Return of Samus ROM.

It is reccommended that you choose a path to an unmodified ROM. While the editor should be able to load most of the current ROMHacks available for Metroid 2, it is uncertain if that will change with future releases. If a particular ROMHack moves any location of data, then the hack will not be loadeable. An unmodified Metroid 2: Return of Samus ROM should have the following Checksum: SHA1: 74A2FAD86B9A4C013149B1E214BC4600EFB1066D!

HEX Indicator

As with a lot of ROM Hacking tools, LAMP will display most of it's numbers in Hexadecimal. It is common to denote a Hexadecimal (HEX) number with a pre- or suffix. With the HEX Indicator setting LAMP allows you to choose one of the three most common HEX indicators or none at all if preferred. Having no HEX indicator allows for more visual space for numbers but may lead to confusion between HEX and DEC numbers.

Offset Style

Because of the Game Boy's hardware design, all ROM data must have addresses between 0x0000 and 0x7FFF. To allow for more data being reached, Metroid 2 uses a Memory Bank Controller, which hardcodes bank 0 to the address range of 0x0000 to 0x3FFF (so it is always loaded), and allows another bank to be swapped into the address range of 0x4000 to 0x7FFF. A bank can be thought of as a big bundle of data that can be swapped in and out.

When adressing specific memory locations the Editor allows you to choose which display style you prefer:

  • "Split Banks and Offsets" will show the Bank number first and then the internal Bank offset. Example: 0x8, 0x69BC.
  • "Use direct Offsets" will show a direct offset as if the banks are all laid out after each other. Example 229BC.

IMPORTANT: Both the HEX Indicator and the Offset Style are purely for the visual representation from the Editor. It does not matter what indicator you use for HEX numbers. Every number will be interpreted as hexadecimal. If two numbers get seperated by a comma it will be interpreted as Bank, Offset (Note: Not every input field allows for Banks. Usually this happens when you input something like a damage value and not a memory location!). After applying the change or reloading the window the values will automatically be formatted to the chosen preference.

Project Settings

Unlike the Program Settings, the Project Settings are individual to each project and get saved in the ProjectName.m2 file.

Opening the Project Settings will show this window


Metroid 2 stores objects in sets per screen. Due to the way it loads objects the game expects each empty screen to point to a unique empty set. Checking this option optimises the used memory space by only storing one empty set and pointing to that set for each empty screen. Overall this allows for a lot more objects than in the original game and better memory usage. Unfortunately, however, the game will not load the objects correctly unless a HEX Tweak is applied that changes the way objects get loaded a bit.

Tileset Usage

LAMP allows the user to define Tilesets. If "Use direct graphical Offsets if possible" is checked, the game will ignore the defined Tilesets and use a direct offsets to graphics instead. Given the circumstance you might also need to manually select the correct metatile table, collision table and solidity indices. Checking "Use Tilesets if possible" will make the editor try and replace all these direct offsets with a Tileset reference. Due to the program still being in development some memory offsets may not get replaced with a Tileset selector. Some windows need to be reopened to update the interface.