Nightmare Module Format Explained

Here’s another wtf-why-ain’t-no-tutorial situation. I mean, it’s relatively easy to pick up just by stumbling through it - for some people that’s fun, and for others it’s a turn-off.

So for all of the latters out there, here goes a simple rundown. Editing a nightmare module is pretty much as simple as opening the damn thing in Notepad. I’ll cover the format for you.

Nightmare Module Title
0xOFFSET //It won't be 0x8OFFSET
dropdownfilename.txt //Use NULL for a blank dropdown

This is your typical header for a nightmare module. Here’s what it looks like in practice:

FireShell Character Editor 
FE7 Character List.txt

Then we get down to the labeling of our structured arrays. Let’s dig through the rest of that character editor. Just follow along.

Character Name //The label
0 //The byte in the structure being modified
2 //Length of the label in bytes
NEHU //Specifies a hex entry

Character Description
2 //As you progress, this will be the previous entry's two numbers added together.

Character Number

NDHU  //This command specifies a hexadecimal dropdown list
Class List.txt //And here's your filename

Sword Level
NDDU //Whereas this one uses regular numbers
Weapon Rank.txt 

Base HP
NEDS //This one uses real numbers with negative values

HP Growth
NEDU //This one allows real numbers up to 255 for one byte

Supports Data Pointer //A typical pointer setup

Like I said, pretty simple to pick up. With the power to modify your modules by hand, you open the door to personalization to suit your project’s needs and improve the modules.

The only other thing to cover are the dropdown list files themselves.

0x00 None
0x01 Eliwood Lord
0x02 Lyn Lord
0x03 Hector Lord
0x04 Eliwood Lord Knight (only by class name)
0x05 Lyn Blade Lord (only by class name)
0x06 Hector Great Lord (only by class name)
0x07 Eliwood Lord Knight
0x08 Lyn Blade Lord
0x09 Hector Great Lord
0x0A Mercenary
0x0B Mercenary
0x0C Hero
0x0D Hero
0x0E Myrmidon
0x0F Myrmidon
0x10 Swordmaster
0x11 Swordmaster
0x12 Fighter
0x13 Warrior
0x14 Knight
0x15 Knight
0x16 General
0x17 General
0x18 Archer
0x19 Archer
0x1A Sniper
0x1B Sniper
0x1C Monk
0x1D Cleric
0x1E Bishop
0x1F Bishop
0x20 Mage
0x21 Mage
0x22 Sage
0x23 Sage
0x24 Shaman
0x25 Shaman
0x26 Druid
0x27 Druid
0x28 Cavalier
0x29 Cavalier
0x2A Paladin
0x2B Paladin
0x2C Troubadour
0x2D Valkyrie
0x2E Nomad
0x2F Nomad
0x30 Nomad Trooper
0x31 Nomad Trooper
0x32 Pegasus Knight
0x33 Falcon Knight
0x34 Wyvern Knight
0x35 Wyvern Knight
0x36 Wyvern Lord
0x37 Wyvern Lord
0x38 Soldier
0x39 Brigand
0x3A Pirate
0x3B Berserker
0x3C Thief
0x3D Thief
0x3E Assassin
0x3F Civilian
0x40 Dancer
0x41 Bard
0x42 Archsage
0x43 Magic Seal
0x44 Transporter
0x45 Transporter
0x46 Fire Dragon
0x47 Civilian
0x48 Civilian (F)
0x49 Child
0x4A Brammimond
0x4B Peer
0x4C Peer (F)
0x4D Prince
0x4E Queen
0x4F Hung Leila
0x50 Corsair
0x51 Prince (Tactician)
0x52 Fallen Prince
0x53 Prince facing upward
0x54 Fallen Ninian
0x55 Fallen Ice Dragon
0x56 Fallen Warrior
0x57 Child
0x58 Child (F)
0x59 Transporter w/ Horse
0x5A Uber Sage
0x5B Archer in Ballista
0x5C Archer in Iron Ballista
0x5D Archer in Killer Ballista
0x5E Empty Ballista
0x5F Empty Iron Ballista
0x60 Empty Killer Ballista
0x61 Dismounted
0x62 Dismounted (F)
0x63 Empty (Make a custom class!)

And this is the Class List.txt file, referenced by the Character Editor.nmm. The number on the first line indicates the number of entries. You can skip entries and write them out-of-order. Lists using real numbers just use the number instead of 0x??.

Lists referenced by the header block of the module don’t have that number, nor do they need any of the 0x??s (it’ll just show that twice).


The type of entry
NDDU: Decimal dropdown (uses file)
NDHU: Hexadecimal dropdown (uses file)
NEDU: unsigned decimal input (uses NULL)
NEDS: signed decimal input (uses NULL)
NEHU: hexadecimal value input (uses NULL)
HEXA: hexadecimal sequence (uses NULL, may exceed 4 byte)

For the format of the text file (e.g. Class List.txt), begin your line with the number of value (no more than the number of your data).

Is there a way to use a dropdown file for like “suggestions” but then if what the user wants isn’t there, then they can type in their own value?

The dropdown boxes do let you type in your own values, even if it does look weird when you do so.

if you use nightmare 2.0 (ha?) you can also use STRUCT which will bring up a new window with a relevant creator nightmare module