<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://disgaea.rustedlogic.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FireFly</id>
		<title>Netherworld Research - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://disgaea.rustedlogic.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FireFly"/>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/Special:Contributions/FireFly"/>
		<updated>2026-04-14T05:49:01Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=112</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=112"/>
				<updated>2018-09-30T13:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Add &amp;quot;main NIS games&amp;quot; (fsvo &amp;#039;main&amp;#039;) + their ports; specifically, add D2 and D5 as they already have pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wiki in which we reverse engineer NIS&amp;#039;s shit&lt;br /&gt;
&lt;br /&gt;
Spoiler: it often &amp;#039;&amp;#039;is&amp;#039;&amp;#039; shit&lt;br /&gt;
&lt;br /&gt;
We mainly hang out on IRC, in &amp;#039;&amp;#039;&amp;#039;#disgaea&amp;#039;&amp;#039;&amp;#039; on Badnik (&amp;#039;&amp;#039;irc.badnik.zone&amp;#039;&amp;#039;).  Currently (FSVO &amp;#039;currently&amp;#039;) focusing on understanding Disgaea 1 better.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Rhapsody: A Musical Adventure]] (PS1, DS)&lt;br /&gt;
* [[La Pucelle: Tactics]] (PS2, PSP)&lt;br /&gt;
* [[Disgaea 1]] (PS2, PSP, [[Disgaea 1/DS|DS]], PC, Switch, PS4, TTHM)&lt;br /&gt;
* [[Phantom Brave]] (PS2, Wii, PSP, PC)&lt;br /&gt;
* [[Makai Kingdom]] (PS2, PSP)&lt;br /&gt;
* [[Disgaea 2]] (PS2, PSP, PC)&lt;br /&gt;
* [[Disgaea 3]] (PS3, Vita)&lt;br /&gt;
* [[Disgaea 4]] (PS3, Vita)&lt;br /&gt;
* [[Disgaea D2]] (PS3)&lt;br /&gt;
* [[Disgaea 5]] (PS4, Switch, PC)&lt;br /&gt;
&lt;br /&gt;
== I want to edit ==&lt;br /&gt;
PM xkeeper on IRC then.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Project:Resources|Links and resources]] - more information about Disgaea and other NIS titles&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS&amp;diff=111</id>
		<title>Disgaea 1/DS</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS&amp;diff=111"/>
				<updated>2018-09-30T12:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Expand on the &amp;#039;why&amp;#039; of D1DS&amp;#039;s differences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Disgaea 1 got ported to the Nintendo DS, aptly named &amp;#039;&amp;#039;&amp;#039;Disgaea DS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
As far as game engine internals go, DS probably has the most differences compared to the other ports. This is most noticeable in the low-resolution sprites, lack of voice acting, etc. Presumably the main reason for these changes is to save space, since the DS game fits on a 16 MiB cartridge (compared to the full CD-rom of the original game).&lt;br /&gt;
&lt;br /&gt;
* [[/File tree]] shows an overview of the romfs.&lt;br /&gt;
* The [[MPDS format]] is used for maps in this port (compressed [[MPD format|MPD files]])&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=109</id>
		<title>Table files (D1DS)</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=109"/>
				<updated>2018-01-20T21:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Document mitem.dat structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Table files&amp;#039;&amp;#039;&amp;#039; are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters.  Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.&lt;br /&gt;
&lt;br /&gt;
This page documents the structs for the various table files inside [[D1DS]].&lt;br /&gt;
&lt;br /&gt;
Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason.  (One ugly way to deal with this is to start by reading two u32&amp;#039;s, and then seek back 4 bytes if they&amp;#039;re equal.)&lt;br /&gt;
&lt;br /&gt;
== char.dat ==&lt;br /&gt;
Holds character/class data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[19];&lt;br /&gt;
  char title[19];&lt;br /&gt;
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 pad1;&lt;br /&gt;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 tier;         // &amp;quot;Tier&amp;quot; into class/colour palette index&lt;br /&gt;
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html&lt;br /&gt;
  u8 jump;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 fist, sword, spear, bow, gun, axe, staff;&lt;br /&gt;
  } wpn_mastery;&lt;br /&gt;
  u8 pad2;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } aptitude;&lt;br /&gt;
&lt;br /&gt;
  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 family;       // Seemingly corresponds to row in &amp;quot;create character&amp;quot; screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.&lt;br /&gt;
  u16 unk3;         // (always 100)&lt;br /&gt;
  u16 unk4;         // (always 20)&lt;br /&gt;
  u16 throw;&lt;br /&gt;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  u16 unk5;         // (always 5)&lt;br /&gt;
  u16 move_range;&lt;br /&gt;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping&lt;br /&gt;
  u16 unk6;         // (always 1)&lt;br /&gt;
  u16 unk7;&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 unk9;         // (always 10)&lt;br /&gt;
  u8 pad3[4];&lt;br /&gt;
  u16 unk10;&lt;br /&gt;
  u16 counter;&lt;br /&gt;
&lt;br /&gt;
  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.&lt;br /&gt;
  u16 magic_lvl[32]; // Level at which character learns the corresponding special&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== charhelp.dat ==&lt;br /&gt;
Class help descriptions.  These are shown in the &amp;quot;create character&amp;quot; screen, and so the table file includes strings that aren&amp;#039;t ever shown in-game (e.g. for story characters or enemies).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  char description[62];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dungeon.dat ==&lt;br /&gt;
Gatekeeper warp data, powering the warp menu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[18];&lt;br /&gt;
  u8 pad;&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 talk;        // talk.dat entry to execute when map is selected from warp menu&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ge.dat ==&lt;br /&gt;
Geo effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 id;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== geocube.dat ==&lt;br /&gt;
Geocube effects (multiplayer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 unk3;&lt;br /&gt;
  u16 unk4;&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[65];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habit.dat ==&lt;br /&gt;
Item inhabitants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 unk1;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u8[20] item_chance;  // Chance to appear in an item, by item class. Which element corresponds to which item class isn&amp;#039;t known exactly.&lt;br /&gt;
  // My best guess: ? Fist Sword Spear Bow Gun Axe Staff Monster ? Armor Belt Shoes Orb Glasses Muscle ? ? EX ?&lt;br /&gt;
  u8 pad2[1];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hospital.dat ==&lt;br /&gt;
Hospital rewards, with minimum requirements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 req_deceased;&lt;br /&gt;
  u32 item;    // (Key into mitem.dat) Item to obtain&lt;br /&gt;
  u32 req_hp;&lt;br /&gt;
  u32 req_sp;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== magic.dat ==&lt;br /&gt;
Specials/spells.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 wpn_level;       // Min. weapon skill level to unlock, if unlocked by weapon&lt;br /&gt;
  u16 power;           // Determines damage (TBD: how?)&lt;br /&gt;
  u16 sp;              // Base SP cost (TBD: determine growth curve)&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 unk1;            // ??&lt;br /&gt;
  u8 effect_param[5];  // Parameter to skill effect (see below)&lt;br /&gt;
  u8 wpn_type;         // 0 = not weapon tied; 1 = fist; 2 = sword; 3 = spear; 4 = bow; 5 = gun; 6 = axe&lt;br /&gt;
  u8 element;          // 0 = none; 1 = fire; 2 = wind; 3 = ice; 4 = star&lt;br /&gt;
  u8 spell_class;      // 2 = melee; 3 = magic; 4 = heal; 5 = buff; 6 = debuff&lt;br /&gt;
  u8 wpn_type_2;       // (copy of wpn_type)&lt;br /&gt;
  u8 range;&lt;br /&gt;
  u8 pattern;          // Attack pattern, complex, see below&lt;br /&gt;
  u8 range_up;         // Attack range vertically, constraints on height difference between tiles&lt;br /&gt;
  u8 range_down;&lt;br /&gt;
  u8 effect[5];        // Attack effects (see below), or 0 for no effect&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of these fields warrant additional explanation.  The &amp;#039;&amp;#039;effect&amp;#039;&amp;#039; and &amp;#039;&amp;#039;effect_param&amp;#039;&amp;#039; fields allow up to 5 effects to be associated with a spell.  Known effect numbers are listed below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! # !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Atk +n%&lt;br /&gt;
|-&lt;br /&gt;
| 12 || Def +n%&lt;br /&gt;
|-&lt;br /&gt;
| 13 || Res +n%&lt;br /&gt;
|-&lt;br /&gt;
| 14 || Int +n%&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Poison (n = % chance to inflict)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || Sleep&lt;br /&gt;
|-&lt;br /&gt;
| 23 || Paralyze&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Amnesia&lt;br /&gt;
|-&lt;br /&gt;
| 25 || Deprave&lt;br /&gt;
|-&lt;br /&gt;
| 101 || Cure ailments (n=?)&lt;br /&gt;
|-&lt;br /&gt;
| 102 || HP Drain&lt;br /&gt;
|-&lt;br /&gt;
| 104 || Self-destruct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;pattern&amp;#039;&amp;#039; field describes the attack pattern (which tiles are targeted relative to the user, etc). (TBD: document these.)&lt;br /&gt;
&lt;br /&gt;
== mitem.dat ==&lt;br /&gt;
Item table.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 price;&lt;br /&gt;
  u16 id;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[81];&lt;br /&gt;
  u8 rank;&lt;br /&gt;
  u8 range;&lt;br /&gt;
  u8 jump;&lt;br /&gt;
  u8 icon;&lt;br /&gt;
  u8 type;     // (see below)&lt;br /&gt;
  u8 movement;&lt;br /&gt;
  u8 ailment;  // 21 = poison; 22 = sleep; 23 = paralyze; 24 = amnesia; 25 = deprave&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following item types are known.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! # !! Name&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Wpn/Fist&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Wpn/Sword&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Wpn/Spear&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Wpn/Bow&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Wpn/Gun&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Wpn/Axe&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Wpn/Staff&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Wpn/Monster&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Armor/Armor&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Armor/Belt&lt;br /&gt;
|-&lt;br /&gt;
| 12 || Armor/Shoes&lt;br /&gt;
|-&lt;br /&gt;
| 13 || Armor/Orb&lt;br /&gt;
|-&lt;br /&gt;
| 14 || Armor/Glasses&lt;br /&gt;
|-&lt;br /&gt;
| 15 || Armor/Muscle&lt;br /&gt;
|-&lt;br /&gt;
| 18 || Etc/EX&lt;br /&gt;
|-&lt;br /&gt;
| 19 || Etc/Symbol&lt;br /&gt;
|-&lt;br /&gt;
| 20 || Etc/Use&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Etc/Special (Hand)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || Etc/Special (Gency)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== musicshop.dat ==&lt;br /&gt;
Song list for the music shop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 price;&lt;br /&gt;
  u8 pad1[4];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 song_id;  // Uncertain&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char title[65];&lt;br /&gt;
  u16 options; // 0 = locked; 1 = starts unlocked; 3 = starts unlocked &amp;amp; default selected&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== thief.dat ==&lt;br /&gt;
Stat stealing entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u16 type;  // 0 = steal HP; 1 = SP; 2 = Atk; 3 = Def; 4 = Int; 5 = Spd; 6 = Hit; 7 = Res; 10 = Exp; 11 = HL?&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u32 unk1;  // (always 1)&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== wish.dat ==&lt;br /&gt;
Dark Assembly bills.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 mana;&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u16 rank;  // Min. rank required to reveal bill&lt;br /&gt;
  i8 skew;   // Skews senators&amp;#039; general opinion on the bill, -100 to +100 (higher is more favourable)&lt;br /&gt;
  char name[31];&lt;br /&gt;
  char description[53];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zukan.dat ==&lt;br /&gt;
Bestiary entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 class_id;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char line1[45];&lt;br /&gt;
  char line2[45];&lt;br /&gt;
  char line3[45];&lt;br /&gt;
  char line4[45];&lt;br /&gt;
  char line5[45];&lt;br /&gt;
  char line6[45];&lt;br /&gt;
  char line7[45];&lt;br /&gt;
  char line8[45];&lt;br /&gt;
  u8 pad1[3];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links == &lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1QuShaZsuQe1cRybufzAFD97f6xQ0JlLXDIvsynusxZc/edit?usp=sharing D1DS table files in spreadsheet form]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=108</id>
		<title>Table files (D1DS)</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=108"/>
				<updated>2018-01-20T21:19:06Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Document magic.dat structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Table files&amp;#039;&amp;#039;&amp;#039; are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters.  Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.&lt;br /&gt;
&lt;br /&gt;
This page documents the structs for the various table files inside [[D1DS]].&lt;br /&gt;
&lt;br /&gt;
Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason.  (One ugly way to deal with this is to start by reading two u32&amp;#039;s, and then seek back 4 bytes if they&amp;#039;re equal.)&lt;br /&gt;
&lt;br /&gt;
== char.dat ==&lt;br /&gt;
Holds character/class data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[19];&lt;br /&gt;
  char title[19];&lt;br /&gt;
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 pad1;&lt;br /&gt;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 tier;         // &amp;quot;Tier&amp;quot; into class/colour palette index&lt;br /&gt;
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html&lt;br /&gt;
  u8 jump;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 fist, sword, spear, bow, gun, axe, staff;&lt;br /&gt;
  } wpn_mastery;&lt;br /&gt;
  u8 pad2;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } aptitude;&lt;br /&gt;
&lt;br /&gt;
  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 family;       // Seemingly corresponds to row in &amp;quot;create character&amp;quot; screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.&lt;br /&gt;
  u16 unk3;         // (always 100)&lt;br /&gt;
  u16 unk4;         // (always 20)&lt;br /&gt;
  u16 throw;&lt;br /&gt;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  u16 unk5;         // (always 5)&lt;br /&gt;
  u16 move_range;&lt;br /&gt;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping&lt;br /&gt;
  u16 unk6;         // (always 1)&lt;br /&gt;
  u16 unk7;&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 unk9;         // (always 10)&lt;br /&gt;
  u8 pad3[4];&lt;br /&gt;
  u16 unk10;&lt;br /&gt;
  u16 counter;&lt;br /&gt;
&lt;br /&gt;
  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.&lt;br /&gt;
  u16 magic_lvl[32]; // Level at which character learns the corresponding special&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== charhelp.dat ==&lt;br /&gt;
Class help descriptions.  These are shown in the &amp;quot;create character&amp;quot; screen, and so the table file includes strings that aren&amp;#039;t ever shown in-game (e.g. for story characters or enemies).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  char description[62];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dungeon.dat ==&lt;br /&gt;
Gatekeeper warp data, powering the warp menu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[18];&lt;br /&gt;
  u8 pad;&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 talk;        // talk.dat entry to execute when map is selected from warp menu&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ge.dat ==&lt;br /&gt;
Geo effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 id;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== geocube.dat ==&lt;br /&gt;
Geocube effects (multiplayer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 unk3;&lt;br /&gt;
  u16 unk4;&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[65];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habit.dat ==&lt;br /&gt;
Item inhabitants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 unk1;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u8[20] item_chance;  // Chance to appear in an item, by item class. Which element corresponds to which item class isn&amp;#039;t known exactly.&lt;br /&gt;
  // My best guess: ? Fist Sword Spear Bow Gun Axe Staff Monster ? Armor Belt Shoes Orb Glasses Muscle ? ? EX ?&lt;br /&gt;
  u8 pad2[1];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hospital.dat ==&lt;br /&gt;
Hospital rewards, with minimum requirements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 req_deceased;&lt;br /&gt;
  u32 item;    // (Key into mitem.dat) Item to obtain&lt;br /&gt;
  u32 req_hp;&lt;br /&gt;
  u32 req_sp;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== magic.dat ==&lt;br /&gt;
Specials/spells.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 wpn_level;       // Min. weapon skill level to unlock, if unlocked by weapon&lt;br /&gt;
  u16 power;           // Determines damage (TBD: how?)&lt;br /&gt;
  u16 sp;              // Base SP cost (TBD: determine growth curve)&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 unk1;            // ??&lt;br /&gt;
  u8 effect_param[5];  // Parameter to skill effect (see below)&lt;br /&gt;
  u8 wpn_type;         // 0 = not weapon tied; 1 = fist; 2 = sword; 3 = spear; 4 = bow; 5 = gun; 6 = axe&lt;br /&gt;
  u8 element;          // 0 = none; 1 = fire; 2 = wind; 3 = ice; 4 = star&lt;br /&gt;
  u8 spell_class;      // 2 = melee; 3 = magic; 4 = heal; 5 = buff; 6 = debuff&lt;br /&gt;
  u8 wpn_type_2;       // (copy of wpn_type)&lt;br /&gt;
  u8 range;&lt;br /&gt;
  u8 pattern;          // Attack pattern, complex, see below&lt;br /&gt;
  u8 range_up;         // Attack range vertically, constraints on height difference between tiles&lt;br /&gt;
  u8 range_down;&lt;br /&gt;
  u8 effect[5];        // Attack effects (see below), or 0 for no effect&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of these fields warrant additional explanation.  The &amp;#039;&amp;#039;effect&amp;#039;&amp;#039; and &amp;#039;&amp;#039;effect_param&amp;#039;&amp;#039; fields allow up to 5 effects to be associated with a spell.  Known effect numbers are listed below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! # !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 2 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Atk +n%&lt;br /&gt;
|-&lt;br /&gt;
| 12 || Def +n%&lt;br /&gt;
|-&lt;br /&gt;
| 13 || Res +n%&lt;br /&gt;
|-&lt;br /&gt;
| 14 || Int +n%&lt;br /&gt;
|-&lt;br /&gt;
| 21 || Poison (n = % chance to inflict)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || Sleep&lt;br /&gt;
|-&lt;br /&gt;
| 23 || Paralyze&lt;br /&gt;
|-&lt;br /&gt;
| 24 || Amnesia&lt;br /&gt;
|-&lt;br /&gt;
| 25 || Deprave&lt;br /&gt;
|-&lt;br /&gt;
| 101 || Cure ailments (n=?)&lt;br /&gt;
|-&lt;br /&gt;
| 102 || HP Drain&lt;br /&gt;
|-&lt;br /&gt;
| 104 || Self-destruct&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;pattern&amp;#039;&amp;#039; field describes the attack pattern (which tiles are targeted relative to the user, etc). (TBD: document these.)&lt;br /&gt;
&lt;br /&gt;
== mitem.dat ==&lt;br /&gt;
Item table.&lt;br /&gt;
&lt;br /&gt;
== musicshop.dat ==&lt;br /&gt;
Song list for the music shop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 price;&lt;br /&gt;
  u8 pad1[4];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 song_id;  // Uncertain&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char title[65];&lt;br /&gt;
  u16 options; // 0 = locked; 1 = starts unlocked; 3 = starts unlocked &amp;amp; default selected&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== thief.dat ==&lt;br /&gt;
Stat stealing entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u16 type;  // 0 = steal HP; 1 = SP; 2 = Atk; 3 = Def; 4 = Int; 5 = Spd; 6 = Hit; 7 = Res; 10 = Exp; 11 = HL?&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u32 unk1;  // (always 1)&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== wish.dat ==&lt;br /&gt;
Dark Assembly bills.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 mana;&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u16 rank;  // Min. rank required to reveal bill&lt;br /&gt;
  i8 skew;   // Skews senators&amp;#039; general opinion on the bill, -100 to +100 (higher is more favourable)&lt;br /&gt;
  char name[31];&lt;br /&gt;
  char description[53];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zukan.dat ==&lt;br /&gt;
Bestiary entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 class_id;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char line1[45];&lt;br /&gt;
  char line2[45];&lt;br /&gt;
  char line3[45];&lt;br /&gt;
  char line4[45];&lt;br /&gt;
  char line5[45];&lt;br /&gt;
  char line6[45];&lt;br /&gt;
  char line7[45];&lt;br /&gt;
  char line8[45];&lt;br /&gt;
  u8 pad1[3];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links == &lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1QuShaZsuQe1cRybufzAFD97f6xQ0JlLXDIvsynusxZc/edit?usp=sharing D1DS table files in spreadsheet form]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=107</id>
		<title>Table files (D1DS)</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=107"/>
				<updated>2018-01-20T20:56:58Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Fix formatting &amp;amp; add link to spreadsheet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Table files&amp;#039;&amp;#039;&amp;#039; are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters.  Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.&lt;br /&gt;
&lt;br /&gt;
This page documents the structs for the various table files inside [[D1DS]].&lt;br /&gt;
&lt;br /&gt;
Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason.  (One ugly way to deal with this is to start by reading two u32&amp;#039;s, and then seek back 4 bytes if they&amp;#039;re equal.)&lt;br /&gt;
&lt;br /&gt;
== char.dat ==&lt;br /&gt;
Holds character/class data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[19];&lt;br /&gt;
  char title[19];&lt;br /&gt;
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 pad1;&lt;br /&gt;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 tier;         // &amp;quot;Tier&amp;quot; into class/colour palette index&lt;br /&gt;
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html&lt;br /&gt;
  u8 jump;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 fist, sword, spear, bow, gun, axe, staff;&lt;br /&gt;
  } wpn_mastery;&lt;br /&gt;
  u8 pad2;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } aptitude;&lt;br /&gt;
&lt;br /&gt;
  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 family;       // Seemingly corresponds to row in &amp;quot;create character&amp;quot; screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.&lt;br /&gt;
  u16 unk3;         // (always 100)&lt;br /&gt;
  u16 unk4;         // (always 20)&lt;br /&gt;
  u16 throw;&lt;br /&gt;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  u16 unk5;         // (always 5)&lt;br /&gt;
  u16 move_range;&lt;br /&gt;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping&lt;br /&gt;
  u16 unk6;         // (always 1)&lt;br /&gt;
  u16 unk7;&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 unk9;         // (always 10)&lt;br /&gt;
  u8 pad3[4];&lt;br /&gt;
  u16 unk10;&lt;br /&gt;
  u16 counter;&lt;br /&gt;
&lt;br /&gt;
  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.&lt;br /&gt;
  u16 magic_lvl[32]; // Level at which character learns the corresponding special&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== charhelp.dat ==&lt;br /&gt;
Class help descriptions.  These are shown in the &amp;quot;create character&amp;quot; screen, and so the table file includes strings that aren&amp;#039;t ever shown in-game (e.g. for story characters or enemies).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  char description[62];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dungeon.dat ==&lt;br /&gt;
Gatekeeper warp data, powering the warp menu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[18];&lt;br /&gt;
  u8 pad;&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 talk;        // talk.dat entry to execute when map is selected from warp menu&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ge.dat ==&lt;br /&gt;
Geo effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 id;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== geocube.dat ==&lt;br /&gt;
Geocube effects (multiplayer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 unk3;&lt;br /&gt;
  u16 unk4;&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[65];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habit.dat ==&lt;br /&gt;
Item inhabitants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 unk1;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u8[20] item_chance;  // Chance to appear in an item, by item class. Which element corresponds to which item class isn&amp;#039;t known exactly.&lt;br /&gt;
  // My best guess: ? Fist Sword Spear Bow Gun Axe Staff Monster ? Armor Belt Shoes Orb Glasses Muscle ? ? EX ?&lt;br /&gt;
  u8 pad2[1];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hospital.dat ==&lt;br /&gt;
Hospital rewards, with minimum requirements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 req_deceased;&lt;br /&gt;
  u32 item;    // (Key into mitem.dat) Item to obtain&lt;br /&gt;
  u32 req_hp;&lt;br /&gt;
  u32 req_sp;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== magic.dat ==&lt;br /&gt;
Specials/spells.&lt;br /&gt;
&lt;br /&gt;
== mitem.dat ==&lt;br /&gt;
Item table.&lt;br /&gt;
&lt;br /&gt;
== musicshop.dat ==&lt;br /&gt;
Song list for the music shop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 price;&lt;br /&gt;
  u8 pad1[4];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 song_id;  // Uncertain&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char title[65];&lt;br /&gt;
  u16 options; // 0 = locked; 1 = starts unlocked; 3 = starts unlocked &amp;amp; default selected&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== thief.dat ==&lt;br /&gt;
Stat stealing entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u16 type;  // 0 = steal HP; 1 = SP; 2 = Atk; 3 = Def; 4 = Int; 5 = Spd; 6 = Hit; 7 = Res; 10 = Exp; 11 = HL?&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u32 unk1;  // (always 1)&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== wish.dat ==&lt;br /&gt;
Dark Assembly bills.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 mana;&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u16 rank;  // Min. rank required to reveal bill&lt;br /&gt;
  i8 skew;   // Skews senators&amp;#039; general opinion on the bill, -100 to +100 (higher is more favourable)&lt;br /&gt;
  char name[31];&lt;br /&gt;
  char description[53];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zukan.dat ==&lt;br /&gt;
Bestiary entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 class_id;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char line1[45];&lt;br /&gt;
  char line2[45];&lt;br /&gt;
  char line3[45];&lt;br /&gt;
  char line4[45];&lt;br /&gt;
  char line5[45];&lt;br /&gt;
  char line6[45];&lt;br /&gt;
  char line7[45];&lt;br /&gt;
  char line8[45];&lt;br /&gt;
  u8 pad1[3];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links == &lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1QuShaZsuQe1cRybufzAFD97f6xQ0JlLXDIvsynusxZc/edit?usp=sharing D1DS table files in spreadsheet form]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=106</id>
		<title>Table files (D1DS)</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=106"/>
				<updated>2018-01-20T20:55:01Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Add structs for most other table files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Table files&amp;#039;&amp;#039;&amp;#039; are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters.  Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.&lt;br /&gt;
&lt;br /&gt;
This page documents the structs for the various table files inside [[D1DS]].&lt;br /&gt;
&lt;br /&gt;
Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason.  (One ugly way to deal with this is to start by reading two u32&amp;#039;s, and then seek back 4 bytes if they&amp;#039;re equal.)&lt;br /&gt;
&lt;br /&gt;
== char.dat ==&lt;br /&gt;
Holds character/class data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[19];&lt;br /&gt;
  char title[19];&lt;br /&gt;
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 pad1;&lt;br /&gt;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 tier;         // &amp;quot;Tier&amp;quot; into class/colour palette index&lt;br /&gt;
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html&lt;br /&gt;
  u8 jump;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 fist, sword, spear, bow, gun, axe, staff;&lt;br /&gt;
  } wpn_mastery;&lt;br /&gt;
  u8 pad2;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } aptitude;&lt;br /&gt;
&lt;br /&gt;
  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 family;       // Seemingly corresponds to row in &amp;quot;create character&amp;quot; screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.&lt;br /&gt;
  u16 unk3;         // (always 100)&lt;br /&gt;
  u16 unk4;         // (always 20)&lt;br /&gt;
  u16 throw;&lt;br /&gt;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  u16 unk5;         // (always 5)&lt;br /&gt;
  u16 move_range;&lt;br /&gt;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping&lt;br /&gt;
  u16 unk6;         // (always 1)&lt;br /&gt;
  u16 unk7;&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 unk9;         // (always 10)&lt;br /&gt;
  u8 pad3[4];&lt;br /&gt;
  u16 unk10;&lt;br /&gt;
  u16 counter;&lt;br /&gt;
&lt;br /&gt;
  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.&lt;br /&gt;
  u16 magic_lvl[32]; // Level at which character learns the corresponding special&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== charhelp.dat ==&lt;br /&gt;
Class help descriptions.  These are shown in the &amp;quot;create character&amp;quot; screen, and so the table file includes strings that aren&amp;#039;t ever shown in-game (e.g. for story characters or enemies).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  char description[62];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== dungeon.dat ==&lt;br /&gt;
Gatekeeper warp data, powering the warp menu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[18];&lt;br /&gt;
  u8 pad;&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 talk;        // talk.dat entry to execute when map is selected from warp menu&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ge.dat ==&lt;br /&gt;
Geo effects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char description[57];&lt;br /&gt;
  u16 id;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== geocube.dat ==&lt;br /&gt;
Geocube effects (multiplayer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 unk3;&lt;br /&gt;
  u16 unk4;&lt;br /&gt;
  char name[17];&lt;br /&gt;
  char description[65];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== habit.dat ==&lt;br /&gt;
Item inhabitants.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 unk1;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u8[20] item_chance;  // Chance to appear in an item, by item class. Which element corresponds to which item class isn&amp;#039;t known exactly.&lt;br /&gt;
  // My best guess: ? Fist Sword Spear Bow Gun Axe Staff Monster ? Armor Belt Shoes Orb Glasses Muscle ? ? EX ?&lt;br /&gt;
  u8 pad2[1];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hospital.dat ==&lt;br /&gt;
Hospital rewards, with minimum requirements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 req_deceased;&lt;br /&gt;
  u32 item;    // (Key into mitem.dat) Item to obtain&lt;br /&gt;
  u32 req_hp;&lt;br /&gt;
  u32 req_sp;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== magic.dat ==&lt;br /&gt;
Specials/spells.&lt;br /&gt;
&lt;br /&gt;
== mitem.dat ==&lt;br /&gt;
Item table.&lt;br /&gt;
&lt;br /&gt;
== musicshop.dat ==&lt;br /&gt;
Song list for the music shop.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 price;&lt;br /&gt;
  u8 pad1[4];&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 song_id;  // Uncertain&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char title[65];&lt;br /&gt;
  u16 options; // 0 = locked; 1 = starts unlocked; 3 = starts unlocked &amp;amp; default selected&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== thief.dat ==&lt;br /&gt;
Stat stealing entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[21];&lt;br /&gt;
  u16 type;  // 0 = steal HP; 1 = SP; 2 = Atk; 3 = Def; 4 = Int; 5 = Spd; 6 = Hit; 7 = Res; 10 = Exp; 11 = HL?&lt;br /&gt;
  u8 pad1[1];&lt;br /&gt;
  u32 unk1;  // (always 1)&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== wish.dat ==&lt;br /&gt;
Dark Assembly bills.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u32 mana;&lt;br /&gt;
  u8 id;&lt;br /&gt;
  u16 rank;  // Min. rank required to reveal bill&lt;br /&gt;
  i8 skew;   // Skews senators&amp;#039; general opinion on the bill, -100 to +100 (higher is more favourable)&lt;br /&gt;
  char name[31];&lt;br /&gt;
  char description[53];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zukan.dat&lt;br /&gt;
Bestiary entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 class_id;&lt;br /&gt;
  char name[21];&lt;br /&gt;
  char line1[45];&lt;br /&gt;
  char line2[45];&lt;br /&gt;
  char line3[45];&lt;br /&gt;
  char line4[45];&lt;br /&gt;
  char line5[45];&lt;br /&gt;
  char line6[45];&lt;br /&gt;
  char line7[45];&lt;br /&gt;
  char line8[45];&lt;br /&gt;
  u8 pad1[3];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=105</id>
		<title>Table files (D1DS)</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Table_files_(D1DS)&amp;diff=105"/>
				<updated>2018-01-20T19:59:06Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Start by documenting char.dat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Table files&amp;#039;&amp;#039;&amp;#039; are files describing properties and statistics of various entities inside the game, e.g. items, classes or characters.  Each file essentially corresponds to a database table, with rows and columns, or (probably more true to the actual implementation) a row count followed by an array of some struct, with that many elements.&lt;br /&gt;
&lt;br /&gt;
This page documents the structs for the various table files inside [[D1DS]].&lt;br /&gt;
&lt;br /&gt;
Each table starts with the number of rows, as a u32, sometimes repeated twice for seemingly no good reason.  (One ugly way to deal with this is to start by reading two u32&amp;#039;s, and then seek back 4 bytes if they&amp;#039;re equal.)&lt;br /&gt;
&lt;br /&gt;
== char.dat ==&lt;br /&gt;
Holds character/class data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  char name[19];&lt;br /&gt;
  char title[19];&lt;br /&gt;
  u8 type;         // 0 = Static? (cutscene/geo); 3 = Usable in-battle; 4 = Prinny; 6 = Prism Red (Doll)&lt;br /&gt;
  u8 unk1;&lt;br /&gt;
  u8 pad1;&lt;br /&gt;
  u8 gender;       // 1 = Male; 2 = Female; 11 = Male (generic); 12 = Female (generic); 13 = Other (generic)&lt;br /&gt;
  u8 unk2;&lt;br /&gt;
  u8 tier;         // &amp;quot;Tier&amp;quot; into class/colour palette index&lt;br /&gt;
  u8 magic_rate;   // Rate of specials acquisition, judging by http://ningyokan.nisfan.net/game/disgaea/usa/usa-units3.html&lt;br /&gt;
  u8 jump;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 fist, sword, spear, bow, gun, axe, staff;&lt;br /&gt;
  } wpn_mastery;&lt;br /&gt;
  u8 pad2;&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u8 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } aptitude;&lt;br /&gt;
&lt;br /&gt;
  u16 immunity;     // Bitfield of immunities (0 for most, 255 for Divine Majin)&lt;br /&gt;
  u16 id;&lt;br /&gt;
  u16 family;       // Seemingly corresponds to row in &amp;quot;create character&amp;quot; screen, e.g. Male/Female Brawler kept separate, but mages are grouped, as are skulls.&lt;br /&gt;
  u16 unk3;         // (always 100)&lt;br /&gt;
  u16 unk4;         // (always 20)&lt;br /&gt;
  u16 throw;&lt;br /&gt;
  u16 help;         // (Key into charhelp.dat) Help entry text for this character, or 0.&lt;br /&gt;
&lt;br /&gt;
  struct {&lt;br /&gt;
    u16 hp, sp, atk, def, int, spd, hit, res;&lt;br /&gt;
  } base_stats;&lt;br /&gt;
&lt;br /&gt;
  u16 unk5;         // (always 5)&lt;br /&gt;
  u16 move_range;&lt;br /&gt;
  u16 move_class;   // 0 = normal; 1 = flying; 2 = warping&lt;br /&gt;
  u16 unk6;         // (always 1)&lt;br /&gt;
  u16 unk7;&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 unk9;         // (always 10)&lt;br /&gt;
  u8 pad3[4];&lt;br /&gt;
  u16 unk10;&lt;br /&gt;
  u16 counter;&lt;br /&gt;
&lt;br /&gt;
  u16 magic[32];    // (Key into magic.dat) Special index, for specials learned by this char/class, or 0 for unused.&lt;br /&gt;
  u16 magic_lvl[32]; // Level at which character learns the corresponding special&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== charhelp.dat ==&lt;br /&gt;
Class help descriptions.&lt;br /&gt;
&lt;br /&gt;
== dungeon.dat ==&lt;br /&gt;
Gatekeeper warp data.&lt;br /&gt;
&lt;br /&gt;
== ge.dat ==&lt;br /&gt;
Geo effects.&lt;br /&gt;
&lt;br /&gt;
== geocube.dat ==&lt;br /&gt;
Geocube effects (multiplayer).&lt;br /&gt;
&lt;br /&gt;
== habit.dat ==&lt;br /&gt;
Item inhabitants.&lt;br /&gt;
&lt;br /&gt;
== hospital.dat ==&lt;br /&gt;
Hospital rewards.&lt;br /&gt;
&lt;br /&gt;
== magic.dat ==&lt;br /&gt;
Specials/spells.&lt;br /&gt;
&lt;br /&gt;
== mitem.dat ==&lt;br /&gt;
Item table.&lt;br /&gt;
&lt;br /&gt;
== musicshop.dat ==&lt;br /&gt;
Song list.&lt;br /&gt;
&lt;br /&gt;
== thief.dat ==&lt;br /&gt;
Stat stealing entries.&lt;br /&gt;
&lt;br /&gt;
== wish.dat ==&lt;br /&gt;
Dark Assembly bills.&lt;br /&gt;
&lt;br /&gt;
== zukan.dat&lt;br /&gt;
Bestiary entries.&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=DSARCIDX_format&amp;diff=104</id>
		<title>DSARCIDX format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=DSARCIDX_format&amp;diff=104"/>
				<updated>2018-01-20T19:04:16Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;DSARCIDX format&amp;#039;&amp;#039;&amp;#039; is a run-of-the-mill archive format.  No built-in compression, has filenames but only &amp;quot;flat&amp;quot;--no directory tree.  == Header == &amp;lt;pre&amp;gt; struct header {...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;DSARCIDX format&amp;#039;&amp;#039;&amp;#039; is a run-of-the-mill archive format.  No built-in compression, has filenames but only &amp;quot;flat&amp;quot;--no directory tree.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  char magic[8];   // &amp;quot;DSARCIDX&amp;quot;&lt;br /&gt;
  u32 count;&lt;br /&gt;
  u32 unk1;        // always 00&lt;br /&gt;
  u16 ids[count];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is seemingly padded to a 4-byte boundary by 0xFF bytes.&lt;br /&gt;
The meaning of the file IDs is uncertain, but in e.g. bg.dat the file bgXXX.mpb corresponds to the entry with ID X (with gaps in the numbering being present).&lt;br /&gt;
&lt;br /&gt;
== File directory ==&lt;br /&gt;
The header is followed by the file directory, with one entry per file in the archive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct file_entry {&lt;br /&gt;
  char filename[40];&lt;br /&gt;
  u32 size;&lt;br /&gt;
  u32 offset;      // relative to start of archive&lt;br /&gt;
} entries[count];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File data ==&lt;br /&gt;
This is followed by the file data.  The data for each file is aligned to an 8-byte boundary, padded with null bytes between files if necessary.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Project:Resources&amp;diff=103</id>
		<title>Project:Resources</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Project:Resources&amp;diff=103"/>
				<updated>2018-01-12T20:44:58Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Single hyphens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Links and other resources with handy information or details about the Disgaea series, its internals, etc.&lt;br /&gt;
&lt;br /&gt;
== Community websites ==&lt;br /&gt;
* [http://makaisenki.shoutwiki.com/wiki/Main_Page Makai Senki Wiki] - Disgaea series &amp;amp; NIS lore, story and media wiki&lt;br /&gt;
* [http://akurasu.net/wiki/Makai_Senki_Disgaea Akurasu Wiki] - Contains lots of game-mechanical details and formulas for things such as exp yield or steal %&lt;br /&gt;
&lt;br /&gt;
== Game internals ==&lt;br /&gt;
* [http://tcrf.net TCRF] - Duh, unused material found in all sorts of video games, Disgaea series included&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=102</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=102"/>
				<updated>2018-01-12T20:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Add &amp;#039;See also&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wiki in which we reverse engineer NIS&amp;#039;s shit&lt;br /&gt;
&lt;br /&gt;
Spoiler: it often &amp;#039;&amp;#039;is&amp;#039;&amp;#039; shit&lt;br /&gt;
&lt;br /&gt;
We mainly hang out on IRC, in &amp;#039;&amp;#039;&amp;#039;#disgaea&amp;#039;&amp;#039;&amp;#039; on Badnik (&amp;#039;&amp;#039;irc.badnik.zone&amp;#039;&amp;#039;).  Currently (FSVO &amp;#039;currently&amp;#039;) focusing on understanding Disgaea 1 better.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Disgaea 1]] (PS2, PSP, [[Disgaea 1/DS|DS]], PC, TTHM)&lt;br /&gt;
&lt;br /&gt;
== I want to edit ==&lt;br /&gt;
PM xkeeper on IRC then.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Project:Resources|Links and resources]] - more information about Disgaea and other NIS titles&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Project:Resources&amp;diff=101</id>
		<title>Project:Resources</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Project:Resources&amp;diff=101"/>
				<updated>2018-01-12T20:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Could be fleshed out more, of course, but it&amp;#039;s a start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Links and other resources with handy information or details about the Disgaea series, its internals, etc.&lt;br /&gt;
&lt;br /&gt;
== Community websites ==&lt;br /&gt;
* [http://makaisenki.shoutwiki.com/wiki/Main_Page Makai Senki Wiki] -- Disgaea series &amp;amp; NIS lore, story and media wiki&lt;br /&gt;
* [http://akurasu.net/wiki/Makai_Senki_Disgaea Akurasu Wiki] -- Contains lots of game-mechanical details and formulas for things such as exp yield or steal %&lt;br /&gt;
&lt;br /&gt;
== Game internals ==&lt;br /&gt;
* [http://tcrf.net TCRF] -- Duh, unused material found in all sorts of video games, Disgaea series included&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=100</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=100"/>
				<updated>2018-01-12T20:30:01Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wiki in which we reverse engineer NIS&amp;#039;s shit&lt;br /&gt;
&lt;br /&gt;
Spoiler: it often &amp;#039;&amp;#039;is&amp;#039;&amp;#039; shit&lt;br /&gt;
&lt;br /&gt;
We mainly hang out on IRC, in &amp;#039;&amp;#039;&amp;#039;#disgaea&amp;#039;&amp;#039;&amp;#039; on Badnik (&amp;#039;&amp;#039;irc.badnik.zone&amp;#039;&amp;#039;).  Currently (FSVO &amp;#039;currently&amp;#039;) focusing on understanding Disgaea 1 better.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Disgaea 1]] (PS2, PSP, [[Disgaea 1/DS|DS]], PC, TTHM)&lt;br /&gt;
&lt;br /&gt;
== I want to edit ==&lt;br /&gt;
PM xkeeper on IRC then.&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=99</id>
		<title>LZS format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=99"/>
				<updated>2017-02-26T17:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: This is not markdown&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;LZS format&amp;#039;&amp;#039;&amp;#039; appears to be a compression format used for compressed archives. Here, both the compression and the underlying archive format are described.&lt;br /&gt;
&lt;br /&gt;
Somewhat confusingly, it appears to not use either of [https://en.wikipedia.org/wiki/Lempel–Ziv–Stac LZS] or [https://en.wikipedia.org/wiki/Lempel–Ziv–Storer–Szymanski LZSS] compression, despite the name.&lt;br /&gt;
&lt;br /&gt;
It appears in at least &amp;#039;&amp;#039;Disgaea 2 PC&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Magic ==&lt;br /&gt;
The file starts with a &amp;lt;code&amp;gt;char magic[4]&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;quot;dat\0&amp;quot;&amp;#039;&amp;#039;, not part of the compressed data.&lt;br /&gt;
&lt;br /&gt;
== Compression ==&lt;br /&gt;
LZ77-based compression (that is, has literal data and backreferences, the latter referring back to a portion of data that has already been output but occurs again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 compressed_size;    // including this 12-byte header&lt;br /&gt;
  u32 decompressed_size;&lt;br /&gt;
  u32 marker;             // marker used to denote backrefs in the compressed data. 0x00-0xFF.&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This header is followed by the compressed data, which consists of literal bytes (copied straight to output) or backrefs. Backrefs are encoded as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct backref { u8 marker, dist, count; };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
representing that &amp;#039;&amp;#039;count&amp;#039;&amp;#039; bytes should be copied from &amp;#039;&amp;#039;dist&amp;#039;&amp;#039; back into the output history.  If &amp;#039;&amp;#039;dist &amp;gt; marker&amp;#039;&amp;#039;, then 1 should be subtracted from it.&lt;br /&gt;
&lt;br /&gt;
Why this extra complication? Because two &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; bytes in a row denote an escaped literal &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; byte.  Thus, a decompression loop looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
while (read_ctr &amp;lt; header.compressed_size - sizeof(struct header)) {&lt;br /&gt;
  u8 v = READ();&lt;br /&gt;
  if (v == header.marker) {&lt;br /&gt;
    u8 dist = READ();&lt;br /&gt;
    if (dist == header.marker) {&lt;br /&gt;
      WRITE(header.marker);  // marker repeated twice = an escaped marker byte&lt;br /&gt;
    } else {&lt;br /&gt;
      u8 count = READ();&lt;br /&gt;
      if (dist &amp;gt; header.marker) dist--;&lt;br /&gt;
      for (size_t i = 0; i &amp;lt; count; i++) WRITE(HISTORY(dist));&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    WRITE(v);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this step, &amp;#039;&amp;#039;header.decompressed_size&amp;#039;&amp;#039; bytes should have been written.&lt;br /&gt;
&lt;br /&gt;
== Archive format ==&lt;br /&gt;
The underlying archive consists of a header with the number of files, a table of offsets and filenames, and file data; nothing weird here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 count;  // #files in the archive&lt;br /&gt;
  u32 unk1;   // 0&lt;br /&gt;
  u32 unk2;   // 0&lt;br /&gt;
  u32 unk3;   // 0&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;header.count&amp;#039;&amp;#039; file entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct file_entry {&lt;br /&gt;
  u32 end_offset;&lt;br /&gt;
  char filename[0x1C];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this comes the file data. The first file runs from this point for &amp;#039;&amp;#039;entries[0].end_offset&amp;#039;&amp;#039; bytes.  That is, all of the &amp;#039;&amp;#039;end_offset&amp;#039;&amp;#039;s are counted starting from after the file metadata table.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=98</id>
		<title>LZS format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=98"/>
				<updated>2017-02-26T17:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Point out lack of relation to LZS/LZSS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;LZS format&amp;#039;&amp;#039;&amp;#039; appears to be a compression format used for compressed archives. Here, both the compression and the underlying archive format are described.&lt;br /&gt;
&lt;br /&gt;
Somewhat confusingly, it appears to not use either of [https://en.wikipedia.org/wiki/Lempel–Ziv–Stac LZS] or [https://en.wikipedia.org/wiki/Lempel–Ziv–Storer–Szymanski LZSS] compression, despite the name.&lt;br /&gt;
&lt;br /&gt;
It appears in at least &amp;#039;&amp;#039;Disgaea 2 PC&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Magic ==&lt;br /&gt;
The file starts with a &amp;lt;code&amp;gt;char magic[4]&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;quot;dat\0&amp;quot;&amp;#039;&amp;#039;, not part of the compressed data.&lt;br /&gt;
&lt;br /&gt;
== Compression ==&lt;br /&gt;
LZ77-based compression (that is, has literal data and backreferences, the latter referring back to a portion of data that has already been output but occurs again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 compressed_size;    // including this 12-byte header&lt;br /&gt;
  u32 decompressed_size;&lt;br /&gt;
  u32 marker;             // marker used to denote backrefs in the compressed data. 0x00-0xFF.&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This header is followed by the compressed data, which consists of literal bytes (copied straight to output) or backrefs. Backrefs are encoded as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct backref { u8 marker, dist, count; };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
representing that &amp;#039;&amp;#039;count&amp;#039;&amp;#039; bytes should be copied from &amp;#039;&amp;#039;dist&amp;#039;&amp;#039; back into the output history.  If &amp;#039;&amp;#039;dist &amp;gt; marker&amp;#039;&amp;#039;, then 1 should be subtracted from it.&lt;br /&gt;
&lt;br /&gt;
Why this extra complication? Because two &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; bytes in a row denote an escaped literal &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; byte.  Thus, a decompression loop looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
while (read_ctr &amp;lt; header.compressed_size - sizeof(struct header)) {&lt;br /&gt;
  u8 v = READ();&lt;br /&gt;
  if (v == header.marker) {&lt;br /&gt;
    u8 dist = READ();&lt;br /&gt;
    if (dist == header.marker) {&lt;br /&gt;
      WRITE(header.marker);  // marker repeated twice = an escaped marker byte&lt;br /&gt;
    } else {&lt;br /&gt;
      u8 count = READ();&lt;br /&gt;
      if (dist &amp;gt; header.marker) dist--;&lt;br /&gt;
      for (size_t i = 0; i &amp;lt; count; i++) WRITE(HISTORY(dist));&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    WRITE(v);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this step, &amp;#039;&amp;#039;header.decompressed_size&amp;#039;&amp;#039; bytes should have been written.&lt;br /&gt;
&lt;br /&gt;
== Archive format ==&lt;br /&gt;
The underlying archive consists of a header with the number of files, a table of offsets and filenames, and file data; nothing weird here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 count;  // #files in the archive&lt;br /&gt;
  u32 unk1;   // 0&lt;br /&gt;
  u32 unk2;   // 0&lt;br /&gt;
  u32 unk3;   // 0&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The header is followed by `header.count` file entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct file_entry {&lt;br /&gt;
  u32 end_offset;&lt;br /&gt;
  char filename[0x1C];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this comes the file data. The first file runs from this point for `entries[0].end_offset` bytes.  That is, all of the &amp;#039;&amp;#039;end_offset&amp;#039;&amp;#039;s are counted starting from after the file metadata table.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=97</id>
		<title>LZS format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=LZS_format&amp;diff=97"/>
				<updated>2017-02-26T17:45:26Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Document LZS archives as found in D2PC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;LZS format&amp;#039;&amp;#039;&amp;#039; appears to be a compression format used for compressed archives. Here, both the compression and the underlying archive format are described.&lt;br /&gt;
&lt;br /&gt;
It appears in at least Disgaea 2 PC.&lt;br /&gt;
&lt;br /&gt;
== Magic ==&lt;br /&gt;
The file starts with a &amp;lt;code&amp;gt;char magic[4]&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;quot;dat\0&amp;quot;&amp;#039;&amp;#039;, not part of the compressed data.&lt;br /&gt;
&lt;br /&gt;
== Compression ==&lt;br /&gt;
LZ77-based compression (that is, has literal data and backreferences, the latter referring back to a portion of data that has already been output but occurs again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 compressed_size;    // including this 12-byte header&lt;br /&gt;
  u32 decompressed_size;&lt;br /&gt;
  u32 marker;             // marker used to denote backrefs in the compressed data. 0x00-0xFF.&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This header is followed by the compressed data, which consists of literal bytes (copied straight to output) or backrefs. Backrefs are encoded as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct backref { u8 marker, dist, count; };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
representing that &amp;#039;&amp;#039;count&amp;#039;&amp;#039; bytes should be copied from &amp;#039;&amp;#039;dist&amp;#039;&amp;#039; back into the output history.  If &amp;#039;&amp;#039;dist &amp;gt; marker&amp;#039;&amp;#039;, then 1 should be subtracted from it.&lt;br /&gt;
&lt;br /&gt;
Why this extra complication? Because two &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; bytes in a row denote an escaped literal &amp;#039;&amp;#039;marker&amp;#039;&amp;#039; byte.  Thus, a decompression loop looks something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
while (read_ctr &amp;lt; header.compressed_size - sizeof(struct header)) {&lt;br /&gt;
  u8 v = READ();&lt;br /&gt;
  if (v == header.marker) {&lt;br /&gt;
    u8 dist = READ();&lt;br /&gt;
    if (dist == header.marker) {&lt;br /&gt;
      WRITE(header.marker);  // marker repeated twice = an escaped marker byte&lt;br /&gt;
    } else {&lt;br /&gt;
      u8 count = READ();&lt;br /&gt;
      if (dist &amp;gt; header.marker) dist--;&lt;br /&gt;
      for (size_t i = 0; i &amp;lt; count; i++) WRITE(HISTORY(dist));&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    WRITE(v);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this step, &amp;#039;&amp;#039;header.decompressed_size&amp;#039;&amp;#039; bytes should have been written.&lt;br /&gt;
&lt;br /&gt;
== Archive format ==&lt;br /&gt;
The underlying archive consists of a header with the number of files, a table of offsets and filenames, and file data; nothing weird here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u32 count;  // #files in the archive&lt;br /&gt;
  u32 unk1;   // 0&lt;br /&gt;
  u32 unk2;   // 0&lt;br /&gt;
  u32 unk3;   // 0&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The header is followed by `header.count` file entries.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct file_entry {&lt;br /&gt;
  u32 end_offset;&lt;br /&gt;
  char filename[0x1C];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this comes the file data. The first file runs from this point for `entries[0].end_offset` bytes.  That is, all of the &amp;#039;&amp;#039;end_offset&amp;#039;&amp;#039;s are counted starting from after the file metadata table.&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=96</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=96"/>
				<updated>2017-02-26T17:31:25Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: +cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also TCRF for details/unused content:&lt;br /&gt;
* [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
* [[tcrf:Disgaea DS|Disgaea DS]]&lt;br /&gt;
&lt;br /&gt;
=== Ports ===&lt;br /&gt;
* [[/DS]]: Disgaea DS&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
Take a look at the following&lt;br /&gt;
&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
* [[IMY format]] for how the IMY compression works&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Unsorted notes ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_2&amp;diff=95</id>
		<title>Disgaea 2</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_2&amp;diff=95"/>
				<updated>2017-02-26T17:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Whee&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The sequel to the horse wiener game, etc etc.&lt;br /&gt;
&lt;br /&gt;
== Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[LZS format]] (compressed archive format, used at least in the PC port)&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=91</id>
		<title>Disgaea 1/Map editor</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=91"/>
				<updated>2016-09-09T02:53:45Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: PCSX2 info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents how to use the built-in &amp;#039;&amp;#039;&amp;#039;map editor&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
== Emulator settings ==&lt;br /&gt;
To enable the map-editor, you need to activate debug mode.  If you use the PCSX2 emulator, you could accomplish this by creating a file called &amp;#039;&amp;#039;4D2CAC9D.pnach&amp;#039;&amp;#039; with the following content:&lt;br /&gt;
&lt;br /&gt;
 patch=1,EE,20147078,word,00000000&lt;br /&gt;
 patch=1,EE,20100440,word,8F8485AC&lt;br /&gt;
 patch=1,EE,20100444,word,34840002&lt;br /&gt;
 patch=1,EE,20100448,word,1000000B&lt;br /&gt;
 patch=1,EE,2010044C,word,AF8485AC&lt;br /&gt;
&lt;br /&gt;
Put the file in the &amp;#039;&amp;#039;PCSX2/cheats/&amp;#039;&amp;#039; directory, and make sure to start the game with the &amp;#039;Boot CDVD (fast)&amp;#039; option.&lt;br /&gt;
&lt;br /&gt;
=== Import/export maps ===&lt;br /&gt;
In order to export maps from the game, you need to enable Host File System in PCSX2.  You then need to make sure that the directory &amp;#039;&amp;#039;PCSX2/host/map/mpXXX&amp;#039;&amp;#039; exists, where &amp;#039;&amp;#039;XXX&amp;#039;&amp;#039; is the first three digits of the map you want to save.  After that, exporting to HDD should work, and write the map file to your actual host filesystem.&lt;br /&gt;
&lt;br /&gt;
== Camera controls ==&lt;br /&gt;
* {{ps/l1}}/{{ps/r1}} on P1&amp;#039;s controller rotates the camera.&lt;br /&gt;
* All other camera controls require a second controller plugged in&lt;br /&gt;
** {{ps/l1}}/{{ps/r1}} on P2&amp;#039;s controller zooms the camera; {{ps/l2}}/{{ps/r2}} does the same at a different speed.&lt;br /&gt;
** {{ps/dpad}} or Left Stick pans the camera.&lt;br /&gt;
&lt;br /&gt;
== Editor modes ==&lt;br /&gt;
The editor could be put into several different modes, adjusted via {{ps/left}}/{{ps/right}} in the topmost menu entry.  Each mode is documented separately.&lt;br /&gt;
&lt;br /&gt;
=== Cursor ===&lt;br /&gt;
* Default selection. Allows you to casually browse the map.&lt;br /&gt;
** If you hold down {{ps/x}} and push a direction on {{ps/dpad}}, you can shift the entire map in that direction, one tile at a time.&lt;br /&gt;
&lt;br /&gt;
=== Vertex ===&lt;br /&gt;
* This option allows you to manipulate the existing terrain of the map.&lt;br /&gt;
** If you wish to create new Vertex tiles, see the &amp;quot;Texture&amp;quot; section later for more details.&lt;br /&gt;
* {{ps/square}} brings up the Vertex Tools menu.&lt;br /&gt;
** Highlight &amp;quot;Y Inc. and Dec.&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** This will set the amount of incremental force that will be applied when using the vertex editor tool.&lt;br /&gt;
* The &amp;quot;Precinct Vertex&amp;quot; option determines whether your modifications impact the surrounding tiles or not.&lt;br /&gt;
** If set to &amp;quot;Off&amp;quot; you will only modify the positioning of the current vertex only. However if set to &amp;quot;On&amp;quot; any changes you make to the current vertex will adjust surrounding tiles as well. This can be particularly useful to toggle between when attempting to create realistic slopes, or when attempting to make very precise edits without altering the surrounding environment.&lt;br /&gt;
* There is an &amp;quot;Invisible&amp;quot; third option also present in this menu. &lt;br /&gt;
** It acts the same as the &amp;quot;Area&amp;quot; option in the main editor window, and allows you to toggle between individual chunks.&lt;br /&gt;
* To modify a vertex, simply hover your cursor over the desired tile, hold {{ps/circle}}, and press {{ps/up}} or {{ps/down}}.&lt;br /&gt;
** You can toggle between vertex face selection with {{ps/l2}} and {{ps/r2}}. This allows for precise modification of the terrain from every angle.&lt;br /&gt;
&lt;br /&gt;
=== Texture ===&lt;br /&gt;
The Texture mode allows you to change the textures of the five faces of a map tile.&lt;br /&gt;
&lt;br /&gt;
* {{ps/l2}}/{{ps/r2}} switches between the faces S, E, N, W, Top.&lt;br /&gt;
* {{ps/circle}} draws the currently selected texture to the selected face of the selected tile.&lt;br /&gt;
* {{ps/square}} brings up the &amp;#039;&amp;#039;texture slice picker&amp;#039;&amp;#039;.&lt;br /&gt;
** {{ps/r2}} moves between the settings on the right-hand side, and the texture slice picker in the tileset to the left.&lt;br /&gt;
** {{ps/l1}}/{{ps/r1}} switches between the different textures currently loaded.&lt;br /&gt;
** Option #1 controls rotation of the texture slice (0, 90, 180, 270)&lt;br /&gt;
** Option #2 controls mirroring of the texture slice(?) (None, X, Y, XY)&lt;br /&gt;
** Option #3 sets the blending mode of the texture (Normal, Translucent, Addition, Subtraction)&lt;br /&gt;
** Option #4 (??? TBD) (Right-Up Vertex, Left-Down Vertex, Right-Down Vertex)&lt;br /&gt;
** Option #5 is used for drawing several textures (Mono Face, Sequence Face)&lt;br /&gt;
** Option #6 controls what operation to perform (Put Face, Delete Face, Delete Box)&lt;br /&gt;
** Option #7 (??? TBD) (Ground, Put Shadow)&lt;br /&gt;
&lt;br /&gt;
=== Put Character ===&lt;br /&gt;
* This option allows you to place actors on the map, and adjust their settings accordingly.&lt;br /&gt;
* To setup an actor, simply hover your cursor over the desired tile and press {{ps/x}}.&lt;br /&gt;
** A large list of options will present itself as follows.&lt;br /&gt;
** The first option determines the actor type. Press {{ps/left}} or {{ps/right}} to toggle between options, of additional note the Actor ID of the selected actor will be displayed to the left of this option (when applicable). Alternatively you can press {{ps/x}} instead, this will present you with a sub-menu that allows you to easily scroll through all available units and their classes.&lt;br /&gt;
** The &amp;quot;Lv0001&amp;quot; option should be fairly self explanatory in nature. Simply press {{ps/left}} or {{ps/right}} to increase or decrease the level of your actor.&lt;br /&gt;
** The &amp;quot;Enemy1&amp;quot; option determines enemy behavior in battle. &amp;quot;Enemy1&amp;quot; behaves as normal, the unit will be hostile to you and other threats. &amp;quot;Enemy2&amp;quot; however will set the unit to &amp;quot;Neutral&amp;quot; status, here they will not attack the player unprovoked, and instead will focus on the &amp;quot;Enemy1&amp;quot; type actors. &amp;quot;Enemy3&amp;quot; will only attack the player, ignoring all other threats on the map in favor of eliminating the player character.&lt;br /&gt;
** The &amp;quot;Direction&amp;quot; option allows you to set the direction the actor is facing at the start of battle. Simply press {{ps/left}} or {{ps/right}} until you find the desired position, then press {{ps/x}} to apply your changes.&lt;br /&gt;
** The next option allows you to modify enemy AI behavior. Press {{ps/left}} or {{ps/right}} to toggle between options. &amp;quot;Rush&amp;quot; seems to be default enemy behavior, where they will recklessly rush in with all their bravado. &amp;quot;Fixed Cannon&amp;quot; will force the actor to remain stationary, but it will attack if an appropriate target is in its immediate range. &amp;quot;Do nothing&amp;quot; is pretty self explanatory, the actor will not do anything under any circumstance. &amp;quot;Intercept&amp;quot; prioritizes the protection of its allied units above all else, acting to stop the player or other hostile actor that may pose a threat.&lt;br /&gt;
** The &amp;quot;Equip&amp;quot; option will open open a small sub-menu if selected with {{ps/x}}. Here you can use {{ps/left}} or {{ps/right}} to set the desired item to an equipment slot, or press {{ps/up}} and {{ps/down}} to toggle between the slots themselves. If you wish to clear an item from a slot, simply highlight it and press {{ps/triangle}}.&lt;br /&gt;
** The following option is a Stats modifier for the current actor. Press {{ps/left}} or {{ps/right}} to toggle between the eight available options. &amp;quot;Common&amp;quot; uses stats derived from the actor database in CHAR.DAT, whereas &amp;quot;BossLv.1&amp;quot; and higher adds some kind of modifier to all stats - increasing their power considerably with each increment.&lt;br /&gt;
** The &amp;quot;Move&amp;quot; option is self explanatory. Simply press {{ps/x}} and then move your cursor to the new desired location of the unit, where again you press {{ps/x}} to place it.&lt;br /&gt;
** The &amp;quot;Delete&amp;quot; option will delete the actor from the map forever. Beware, for this no way to undo this!&lt;br /&gt;
** The &amp;quot;Appear&amp;quot; option determines if an actor is always present on a map or not. &amp;quot;Appear Normal&amp;quot; ensures they are always present. &amp;quot;Absent 2nd&amp;quot; ensures that the actor will not appear if the map is replayed a second time, useful for maps with one-time boss encounters. &amp;quot;Appear 2nd&amp;quot; ensures the actor is not there the first time you visit the map, but will be present every revisit afterward!&lt;br /&gt;
** The &amp;quot;Geo&amp;quot; option allows you to modify what kind of Geo Effect property the current actor has. Press {{ps/left}} or {{ps/right}} to toggle between options, and press {{ps/l1}} and {{ps/l2}} to switch between Geo Symbol colors for the effect. While normally this is only ever used on Geo Symbols, this property can be set on any actor!&lt;br /&gt;
&lt;br /&gt;
=== Put Object ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} brings up the Object Select menu.&lt;br /&gt;
** Highlight &amp;quot;N000&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** Press {{ps/x}} to select and place the desired object. A series of additional options will now display.&lt;br /&gt;
* Y modifies the Y Axis of the object. Negative values are higher in height, positive are lower.&lt;br /&gt;
* RX, RY, and RZ modify the rotation of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* SX, SY, and SZ modify the scale of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* FlowU and FlowV control horizontal and vertical movement of animated textures. (Where applicable.)&lt;br /&gt;
&lt;br /&gt;
=== Put Event ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} button brings up the Event Select menu.&lt;br /&gt;
** Two options should be visible from this menu, both seemingly identical looking, but serving an individual purpose.&lt;br /&gt;
** The first &amp;quot;No0000&amp;quot; option is the event tile you&amp;#039;re modifying, whereas the second &amp;quot;No0000&amp;quot; option is the actual event you&amp;#039;re setting it to.&lt;br /&gt;
** As such, you may only have up to 16 event tiles per map, including the base panel event, effectively leaving you with 15 additional event tiles.&lt;br /&gt;
** The editor is unfortunately not very descriptive regarding which event you have currently selected, so it may be a good idea to keep notes while editing!&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Currently Known Events:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** 0000 - Null (Clears Event Tile)&lt;br /&gt;
** 0001 - Base Panel&lt;br /&gt;
** 0002 - Victory Tile (map is won when a unit walks onto it)&lt;br /&gt;
&lt;br /&gt;
=== Limit Moving ===&lt;br /&gt;
* This option allows you to create or remove certain types of collision on the map.&lt;br /&gt;
* You can toggle between Collision options with {{ps/square}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
* The top option represents your current selection, whereas the bottom option represents the collision type on the current tile.&lt;br /&gt;
** Unlimited - No Restriction.&lt;br /&gt;
** Flying Only - Only units capable of Flight may pass.&lt;br /&gt;
** All Disable - Impassable by any means.&lt;br /&gt;
&lt;br /&gt;
=== Item Realm Only ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Geo Effect ===&lt;br /&gt;
* This option allows you to place Geo Effect panels on the map.&lt;br /&gt;
* You can toggle between Geo Panel colors with {{ps/l2}} and {{ps/r2}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
** To remove a Geo Effect tile, simply toggle through the colors until your selection is &amp;quot;Null&amp;quot; and then overwrite the existing tile with &amp;quot;Null&amp;quot; to clear it.&lt;br /&gt;
&lt;br /&gt;
=== Unite MAP ===&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=90</id>
		<title>Disgaea 1/Map editor</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=90"/>
				<updated>2016-09-09T01:16:28Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Texture */ Add some notes about the Texture mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Camera controls ==&lt;br /&gt;
* {{ps/l1}}/{{ps/r1}} on P1&amp;#039;s controller rotates the camera.&lt;br /&gt;
* All other camera controls require a second controller plugged in&lt;br /&gt;
** {{ps/l1}}/{{ps/r1}} on P2&amp;#039;s controller zooms the camera; {{ps/l2}}/{{ps/r2}} does the same at a different speed.&lt;br /&gt;
** {{ps/dpad}} or Left Stick pans the camera.&lt;br /&gt;
&lt;br /&gt;
== Editor modes ==&lt;br /&gt;
The editor could be put into several different modes, adjusted via {{ps/left}}/{{ps/right}} in the topmost menu entry.  Each mode is documented separately.&lt;br /&gt;
&lt;br /&gt;
=== Cursor ===&lt;br /&gt;
* Default selection. Allows you to casually browse the map.&lt;br /&gt;
** If you hold down {{ps/x}} and push a direction on {{ps/dpad}}, you can shift the entire map in that direction, one tile at a time.&lt;br /&gt;
&lt;br /&gt;
=== Vertex ===&lt;br /&gt;
* This option allows you to manipulate the existing terrain of the map.&lt;br /&gt;
** If you wish to create new Vertex tiles, see the &amp;quot;Texture&amp;quot; section later for more details.&lt;br /&gt;
* {{ps/square}} brings up the Vertex Tools menu.&lt;br /&gt;
** Highlight &amp;quot;Y Inc. and Dec.&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** This will set the amount of incremental force that will be applied when using the vertex editor tool.&lt;br /&gt;
* The &amp;quot;Precinct Vertex&amp;quot; option determines whether your modifications impact the surrounding tiles or not.&lt;br /&gt;
** If set to &amp;quot;Off&amp;quot; you will only modify the positioning of the current vertex only. However if set to &amp;quot;On&amp;quot; any changes you make to the current vertex will adjust surrounding tiles as well. This can be particularly useful to toggle between when attempting to create realistic slopes, or when attempting to make very precise edits without altering the surrounding environment.&lt;br /&gt;
* There is an &amp;quot;Invisible&amp;quot; third option also present in this menu. &lt;br /&gt;
** It acts the same as the &amp;quot;Area&amp;quot; option in the main editor window, and allows you to toggle between individual chunks.&lt;br /&gt;
* To modify a vertex, simply hover your cursor over the desired tile, hold {{ps/circle}}, and press {{ps/up}} or {{ps/down}}.&lt;br /&gt;
** You can toggle between vertex face selection with {{ps/l2}} and {{ps/r2}}. This allows for precise modification of the terrain from every angle.&lt;br /&gt;
&lt;br /&gt;
=== Texture ===&lt;br /&gt;
The Texture mode allows you to change the textures of the five faces of a map tile.&lt;br /&gt;
&lt;br /&gt;
* {{ps/l2}}/{{ps/r2}} switches between the faces S, E, N, W, Top.&lt;br /&gt;
* {{ps/circle}} draws the currently selected texture to the selected face of the selected tile.&lt;br /&gt;
* {{ps/square}} brings up the &amp;#039;&amp;#039;texture slice picker&amp;#039;&amp;#039;.&lt;br /&gt;
** {{ps/r2}} moves between the settings on the right-hand side, and the texture slice picker in the tileset to the left.&lt;br /&gt;
** {{ps/l1}}/{{ps/r1}} switches between the different textures currently loaded.&lt;br /&gt;
** Option #1 controls rotation of the texture slice (0, 90, 180, 270)&lt;br /&gt;
** Option #2 controls mirroring of the texture slice(?) (None, X, Y, XY)&lt;br /&gt;
** Option #3 sets the blending mode of the texture (Normal, Translucent, Addition, Subtraction)&lt;br /&gt;
** Option #4 (??? TBD) (Right-Up Vertex, Left-Down Vertex, Right-Down Vertex)&lt;br /&gt;
** Option #5 is used for drawing several textures (Mono Face, Sequence Face)&lt;br /&gt;
** Option #6 controls what operation to perform (Put Face, Delete Face, Delete Box)&lt;br /&gt;
** Option #7 (??? TBD) (Ground, Put Shadow)&lt;br /&gt;
&lt;br /&gt;
=== Put Character ===&lt;br /&gt;
* This option allows you to place actors on the map, and adjust their settings accordingly.&lt;br /&gt;
* To setup an actor, simply hover your cursor over the desired tile and press {{ps/x}}.&lt;br /&gt;
** A large list of options will present itself as follows.&lt;br /&gt;
** The first option determines the actor type. Press {{ps/left}} or {{ps/right}} to toggle between options, of additional note the Actor ID of the selected actor will be displayed to the left of this option (when applicable). Alternatively you can press {{ps/x}} instead, this will present you with a sub-menu that allows you to easily scroll through all available units and their classes.&lt;br /&gt;
** The &amp;quot;Lv0001&amp;quot; option should be fairly self explanatory in nature. Simply press {{ps/left}} or {{ps/right}} to increase or decrease the level of your actor.&lt;br /&gt;
** The &amp;quot;Enemy1&amp;quot; option determines enemy behavior in battle. &amp;quot;Enemy1&amp;quot; behaves as normal, the unit will be hostile to you and other threats. &amp;quot;Enemy2&amp;quot; however will set the unit to &amp;quot;Neutral&amp;quot; status, here they will not attack the player unprovoked, and instead will focus on the &amp;quot;Enemy1&amp;quot; type actors. &amp;quot;Enemy3&amp;quot; will only attack the player, ignoring all other threats on the map in favor of eliminating the player character.&lt;br /&gt;
** The &amp;quot;Direction&amp;quot; option allows you to set the direction the actor is facing at the start of battle. Simply press {{ps/left}} or {{ps/right}} until you find the desired position, then press {{ps/x}} to apply your changes.&lt;br /&gt;
** The next option allows you to modify enemy AI behavior. Press {{ps/left}} or {{ps/right}} to toggle between options. &amp;quot;Rush&amp;quot; seems to be default enemy behavior, where they will recklessly rush in with all their bravado. &amp;quot;Fixed Cannon&amp;quot; will force the actor to remain stationary, but it will attack if an appropriate target is in its immediate range. &amp;quot;Do nothing&amp;quot; is pretty self explanatory, the actor will not do anything under any circumstance. &amp;quot;Intercept&amp;quot; prioritizes the protection of its allied units above all else, acting to stop the player or other hostile actor that may pose a threat.&lt;br /&gt;
** The &amp;quot;Equip&amp;quot; option will open open a small sub-menu if selected with {{ps/x}}. Here you can use {{ps/left}} or {{ps/right}} to set the desired item to an equipment slot, or press {{ps/up}} and {{ps/down}} to toggle between the slots themselves. If you wish to clear an item from a slot, simply highlight it and press {{ps/triangle}}.&lt;br /&gt;
** The following option is a Stats modifier for the current actor. Press {{ps/left}} or {{ps/right}} to toggle between the eight available options. &amp;quot;Common&amp;quot; uses stats derived from the actor database in CHAR.DAT, whereas &amp;quot;BossLv.1&amp;quot; and higher adds some kind of modifier to all stats - increasing their power considerably with each increment.&lt;br /&gt;
** The &amp;quot;Move&amp;quot; option is self explanatory. Simply press {{ps/x}} and then move your cursor to the new desired location of the unit, where again you press {{ps/x}} to place it.&lt;br /&gt;
** The &amp;quot;Delete&amp;quot; option will delete the actor from the map forever. Beware, for this no way to undo this!&lt;br /&gt;
** The &amp;quot;Appear&amp;quot; option determines if an actor is always present on a map or not. &amp;quot;Appear Normal&amp;quot; ensures they are always present. &amp;quot;Absent 2nd&amp;quot; ensures that the actor will not appear if the map is replayed a second time, useful for maps with one-time boss encounters. &amp;quot;Appear 2nd&amp;quot; ensures the actor is not there the first time you visit the map, but will be present every revisit afterward!&lt;br /&gt;
** The &amp;quot;Geo&amp;quot; option allows you to modify what kind of Geo Effect property the current actor has. Press {{ps/left}} or {{ps/right}} to toggle between options, and press {{ps/l1}} and {{ps/l2}} to switch between Geo Symbol colors for the effect. While normally this is only ever used on Geo Symbols, this property can be set on any actor!&lt;br /&gt;
&lt;br /&gt;
=== Put Object ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} brings up the Object Select menu.&lt;br /&gt;
** Highlight &amp;quot;N000&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** Press {{ps/x}} to select and place the desired object. A series of additional options will now display.&lt;br /&gt;
* Y modifies the Y Axis of the object. Negative values are higher in height, positive are lower.&lt;br /&gt;
* RX, RY, and RZ modify the rotation of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* SX, SY, and SZ modify the scale of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* FlowU and FlowV control horizontal and vertical movement of animated textures. (Where applicable.)&lt;br /&gt;
&lt;br /&gt;
=== Put Event ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} button brings up the Event Select menu.&lt;br /&gt;
** Two options should be visible from this menu, both seemingly identical looking, but serving an individual purpose.&lt;br /&gt;
** The first &amp;quot;No0000&amp;quot; option is the event tile you&amp;#039;re modifying, whereas the second &amp;quot;No0000&amp;quot; option is the actual event you&amp;#039;re setting it to.&lt;br /&gt;
** As such, you may only have up to 16 event tiles per map, including the base panel event, effectively leaving you with 15 additional event tiles.&lt;br /&gt;
** The editor is unfortunately not very descriptive regarding which event you have currently selected, so it may be a good idea to keep notes while editing!&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Currently Known Events:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** 0000 - Null (Clears Event Tile)&lt;br /&gt;
** 0001 - Base Panel&lt;br /&gt;
** 0002 - Victory Tile (map is won when a unit walks onto it)&lt;br /&gt;
&lt;br /&gt;
=== Limit Moving ===&lt;br /&gt;
* This option allows you to create or remove certain types of collision on the map.&lt;br /&gt;
* You can toggle between Collision options with {{ps/square}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
* The top option represents your current selection, whereas the bottom option represents the collision type on the current tile.&lt;br /&gt;
** Unlimited - No Restriction.&lt;br /&gt;
** Flying Only - Only units capable of Flight may pass.&lt;br /&gt;
** All Disable - Impassable by any means.&lt;br /&gt;
&lt;br /&gt;
=== Item Realm Only ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Geo Effect ===&lt;br /&gt;
* This option allows you to place Geo Effect panels on the map.&lt;br /&gt;
* You can toggle between Geo Panel colors with {{ps/l2}} and {{ps/r2}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
** To remove a Geo Effect tile, simply toggle through the colors until your selection is &amp;quot;Null&amp;quot; and then overwrite the existing tile with &amp;quot;Null&amp;quot; to clear it.&lt;br /&gt;
&lt;br /&gt;
=== Unite MAP ===&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=89</id>
		<title>Disgaea 1/Map editor</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_editor&amp;diff=89"/>
				<updated>2016-09-08T23:56:21Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Add some camera options, add missing modes (to be documented)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Camera controls ==&lt;br /&gt;
* {{ps/l1}}/{{ps/r1}} on P1&amp;#039;s controller rotates the camera.&lt;br /&gt;
* All other camera controls require a second controller plugged in&lt;br /&gt;
** {{ps/l1}}/{{ps/r1}} on P2&amp;#039;s controller zooms the camera; {{ps/l2}}/{{ps/r2}} does the same at a different speed.&lt;br /&gt;
** {{ps/dpad}} or Left Stick pans the camera.&lt;br /&gt;
&lt;br /&gt;
== Editor modes ==&lt;br /&gt;
The editor could be put into several different modes, adjusted via {{ps/left}}/{{ps/right}} in the topmost menu entry.  Each mode is documented separately.&lt;br /&gt;
&lt;br /&gt;
=== Cursor ===&lt;br /&gt;
* Default selection. Allows you to casually browse the map.&lt;br /&gt;
** If you hold down {{ps/x}} and push a direction on {{ps/dpad}}, you can shift the entire map in that direction, one tile at a time.&lt;br /&gt;
&lt;br /&gt;
=== Vertex ===&lt;br /&gt;
* This option allows you to manipulate the existing terrain of the map.&lt;br /&gt;
** If you wish to create new Vertex tiles, see the &amp;quot;Texture&amp;quot; section later for more details.&lt;br /&gt;
* {{ps/square}} brings up the Vertex Tools menu.&lt;br /&gt;
** Highlight &amp;quot;Y Inc. and Dec.&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** This will set the amount of incremental force that will be applied when using the vertex editor tool.&lt;br /&gt;
* The &amp;quot;Precinct Vertex&amp;quot; option determines whether your modifications impact the surrounding tiles or not.&lt;br /&gt;
** If set to &amp;quot;Off&amp;quot; you will only modify the positioning of the current vertex only. However if set to &amp;quot;On&amp;quot; any changes you make to the current vertex will adjust surrounding tiles as well. This can be particularly useful to toggle between when attempting to create realistic slopes, or when attempting to make very precise edits without altering the surrounding environment.&lt;br /&gt;
* There is an &amp;quot;Invisible&amp;quot; third option also present in this menu. &lt;br /&gt;
** It acts the same as the &amp;quot;Area&amp;quot; option in the main editor window, and allows you to toggle between individual chunks.&lt;br /&gt;
* To modify a vertex, simply hover your cursor over the desired tile, hold {{ps/circle}}, and press {{ps/up}} or {{ps/down}}.&lt;br /&gt;
** You can toggle between vertex face selection with {{ps/l2}} and {{ps/r2}}. This allows for precise modification of the terrain from every angle.&lt;br /&gt;
&lt;br /&gt;
=== Texture ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Put Character ===&lt;br /&gt;
* This option allows you to place actors on the map, and adjust their settings accordingly.&lt;br /&gt;
* To setup an actor, simply hover your cursor over the desired tile and press {{ps/x}}.&lt;br /&gt;
** A large list of options will present itself as follows.&lt;br /&gt;
** The first option determines the actor type. Press {{ps/left}} or {{ps/right}} to toggle between options, of additional note the Actor ID of the selected actor will be displayed to the left of this option (when applicable). Alternatively you can press {{ps/x}} instead, this will present you with a sub-menu that allows you to easily scroll through all available units and their classes.&lt;br /&gt;
** The &amp;quot;Lv0001&amp;quot; option should be fairly self explanatory in nature. Simply press {{ps/left}} or {{ps/right}} to increase or decrease the level of your actor.&lt;br /&gt;
** The &amp;quot;Enemy1&amp;quot; option determines enemy behavior in battle. &amp;quot;Enemy1&amp;quot; behaves as normal, the unit will be hostile to you and other threats. &amp;quot;Enemy2&amp;quot; however will set the unit to &amp;quot;Neutral&amp;quot; status, here they will not attack the player unprovoked, and instead will focus on the &amp;quot;Enemy1&amp;quot; type actors. &amp;quot;Enemy3&amp;quot; will only attack the player, ignoring all other threats on the map in favor of eliminating the player character.&lt;br /&gt;
** The &amp;quot;Direction&amp;quot; option allows you to set the direction the actor is facing at the start of battle. Simply press {{ps/left}} or {{ps/right}} until you find the desired position, then press {{ps/x}} to apply your changes.&lt;br /&gt;
** The next option allows you to modify enemy AI behavior. Press {{ps/left}} or {{ps/right}} to toggle between options. &amp;quot;Rush&amp;quot; seems to be default enemy behavior, where they will recklessly rush in with all their bravado. &amp;quot;Fixed Cannon&amp;quot; will force the actor to remain stationary, but it will attack if an appropriate target is in its immediate range. &amp;quot;Do nothing&amp;quot; is pretty self explanatory, the actor will not do anything under any circumstance. &amp;quot;Intercept&amp;quot; prioritizes the protection of its allied units above all else, acting to stop the player or other hostile actor that may pose a threat.&lt;br /&gt;
** The &amp;quot;Equip&amp;quot; option will open open a small sub-menu if selected with {{ps/x}}. Here you can use {{ps/left}} or {{ps/right}} to set the desired item to an equipment slot, or press {{ps/up}} and {{ps/down}} to toggle between the slots themselves. If you wish to clear an item from a slot, simply highlight it and press {{ps/triangle}}.&lt;br /&gt;
** The following option is a Stats modifier for the current actor. Press {{ps/left}} or {{ps/right}} to toggle between the eight available options. &amp;quot;Common&amp;quot; uses stats derived from the actor database in CHAR.DAT, whereas &amp;quot;BossLv.1&amp;quot; and higher adds some kind of modifier to all stats - increasing their power considerably with each increment.&lt;br /&gt;
** The &amp;quot;Move&amp;quot; option is self explanatory. Simply press {{ps/x}} and then move your cursor to the new desired location of the unit, where again you press {{ps/x}} to place it.&lt;br /&gt;
** The &amp;quot;Delete&amp;quot; option will delete the actor from the map forever. Beware, for this no way to undo this!&lt;br /&gt;
** The &amp;quot;Appear&amp;quot; option determines if an actor is always present on a map or not. &amp;quot;Appear Normal&amp;quot; ensures they are always present. &amp;quot;Absent 2nd&amp;quot; ensures that the actor will not appear if the map is replayed a second time, useful for maps with one-time boss encounters. &amp;quot;Appear 2nd&amp;quot; ensures the actor is not there the first time you visit the map, but will be present every revisit afterward!&lt;br /&gt;
** The &amp;quot;Geo&amp;quot; option allows you to modify what kind of Geo Effect property the current actor has. Press {{ps/left}} or {{ps/right}} to toggle between options, and press {{ps/l1}} and {{ps/l2}} to switch between Geo Symbol colors for the effect. While normally this is only ever used on Geo Symbols, this property can be set on any actor!&lt;br /&gt;
&lt;br /&gt;
=== Put Object ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} brings up the Object Select menu.&lt;br /&gt;
** Highlight &amp;quot;N000&amp;quot; and toggle through your desired selection with {{ps/left}} and {{ps/right}}.&lt;br /&gt;
** Press {{ps/x}} to select and place the desired object. A series of additional options will now display.&lt;br /&gt;
* Y modifies the Y Axis of the object. Negative values are higher in height, positive are lower.&lt;br /&gt;
* RX, RY, and RZ modify the rotation of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* SX, SY, and SZ modify the scale of the object on the X, Y, and Z axis respectively.&lt;br /&gt;
* FlowU and FlowV control horizontal and vertical movement of animated textures. (Where applicable.)&lt;br /&gt;
&lt;br /&gt;
=== Put Event ===&lt;br /&gt;
* This option only works when an individual area is selected for the current map.&lt;br /&gt;
** If your map view is set to &amp;quot;All Area&amp;quot; the controls for this function will be disabled.&lt;br /&gt;
* {{ps/square}} button brings up the Event Select menu.&lt;br /&gt;
** Two options should be visible from this menu, both seemingly identical looking, but serving an individual purpose.&lt;br /&gt;
** The first &amp;quot;No0000&amp;quot; option is the event tile you&amp;#039;re modifying, whereas the second &amp;quot;No0000&amp;quot; option is the actual event you&amp;#039;re setting it to.&lt;br /&gt;
** As such, you may only have up to 16 event tiles per map, including the base panel event, effectively leaving you with 15 additional event tiles.&lt;br /&gt;
** The editor is unfortunately not very descriptive regarding which event you have currently selected, so it may be a good idea to keep notes while editing!&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Currently Known Events:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** 0000 - Null (Clears Event Tile)&lt;br /&gt;
** 0001 - Base Panel&lt;br /&gt;
** 0002 - Victory Tile (map is won when a unit walks onto it)&lt;br /&gt;
&lt;br /&gt;
=== Limit Moving ===&lt;br /&gt;
* This option allows you to create or remove certain types of collision on the map.&lt;br /&gt;
* You can toggle between Collision options with {{ps/square}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
* The top option represents your current selection, whereas the bottom option represents the collision type on the current tile.&lt;br /&gt;
** Unlimited - No Restriction.&lt;br /&gt;
** Flying Only - Only units capable of Flight may pass.&lt;br /&gt;
** All Disable - Impassable by any means.&lt;br /&gt;
&lt;br /&gt;
=== Item Realm Only ===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Geo Effect ===&lt;br /&gt;
* This option allows you to place Geo Effect panels on the map.&lt;br /&gt;
* You can toggle between Geo Panel colors with {{ps/l2}} and {{ps/r2}}.&lt;br /&gt;
** Once your selection is made, simply hover over the tile of your choice and press {{ps/x}}.&lt;br /&gt;
** To remove a Geo Effect tile, simply toggle through the colors until your selection is &amp;quot;Null&amp;quot; and then overwrite the existing tile with &amp;quot;Null&amp;quot; to clear it.&lt;br /&gt;
&lt;br /&gt;
=== Unite MAP ===&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=88</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=88"/>
				<updated>2016-09-08T23:24:10Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Tile data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  f32 map_offset_x; // (val - 6)/12&lt;br /&gt;
  f32 unk1_1;&lt;br /&gt;
  f32 map_offset_z; // (val - 6)/12&lt;br /&gt;
  f32 unk1_2;&lt;br /&gt;
  f32 unk1[7];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;map_offset_x&amp;#039;&amp;#039; and &amp;#039;&amp;#039;map_offset_z&amp;#039;&amp;#039; fields warrant some explanation: the map editor allows you to shift the whole map around, and instead of updating all tiles individually, these chunk-wide settings get changed.  Actors&amp;#039; coordinates are updated, and are not affected by this offset. Whenever tiles get read, a tile that has stored location &amp;#039;&amp;#039;(x, z)&amp;#039;&amp;#039; effectively ends up at &amp;#039;&amp;#039;(x + map_offset_x, z + map_offset_z)&amp;#039;&amp;#039; instead.  Why are they floats, you say?  No idea.&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; tiles belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[12];  // N, W, S, E, Top; same repeated with unknown meaning (repeated texture?); 2 unknown textures&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  i8  corners2[4];  // \ Related to bottom corners of tile, somehow. All zero except for &amp;quot;floating platforms&amp;quot; (e.g. mp1302)&lt;br /&gt;
  i8  corners3[4];  // /&lt;br /&gt;
  u8  unk2[4];      // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=87</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=87"/>
				<updated>2016-09-08T23:23:51Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Tile data */ Update struct map_tile&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  f32 map_offset_x; // (val - 6)/12&lt;br /&gt;
  f32 unk1_1;&lt;br /&gt;
  f32 map_offset_z; // (val - 6)/12&lt;br /&gt;
  f32 unk1_2;&lt;br /&gt;
  f32 unk1[7];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;map_offset_x&amp;#039;&amp;#039; and &amp;#039;&amp;#039;map_offset_z&amp;#039;&amp;#039; fields warrant some explanation: the map editor allows you to shift the whole map around, and instead of updating all tiles individually, these chunk-wide settings get changed.  Actors&amp;#039; coordinates are updated, and are not affected by this offset. Whenever tiles get read, a tile that has stored location &amp;#039;&amp;#039;(x, z)&amp;#039;&amp;#039; effectively ends up at &amp;#039;&amp;#039;(x + map_offset_x, z + map_offset_z)&amp;#039;&amp;#039; instead.  Why are they floats, you say?  No idea.&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; tiles belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[12];  1// N, W, S, E, Top; same repeated with unknown meaning (repeated texture?); 2 unknown textures&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  i8  corners2[4];  // \ Related to bottom corners of tile, somehow. All zero except for &amp;quot;floating platforms&amp;quot; (e.g. mp1302)&lt;br /&gt;
  i8  corners3[4];  // /&lt;br /&gt;
  u8  unk2[4];      // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=86</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=86"/>
				<updated>2016-09-08T22:33:40Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  f32 map_offset_x; // (val - 6)/12&lt;br /&gt;
  f32 unk1_1;&lt;br /&gt;
  f32 map_offset_z; // (val - 6)/12&lt;br /&gt;
  f32 unk1_2;&lt;br /&gt;
  f32 unk1[7];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;map_offset_x&amp;#039;&amp;#039; and &amp;#039;&amp;#039;map_offset_z&amp;#039;&amp;#039; fields warrant some explanation: the map editor allows you to shift the whole map around, and instead of updating all tiles individually, these chunk-wide settings get changed.  Actors&amp;#039; coordinates are updated, and are not affected by this offset. Whenever tiles get read, a tile that has stored location &amp;#039;&amp;#039;(x, z)&amp;#039;&amp;#039; effectively ends up at &amp;#039;&amp;#039;(x + map_offset_x, z + map_offset_z)&amp;#039;&amp;#039; instead.  Why are they floats, you say?  No idea.&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; tiles belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=85</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=85"/>
				<updated>2016-09-08T22:31:47Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Header */ NIS why&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  f32 map_offset_x; // (val - 6)/12&lt;br /&gt;
  f32 unk1_1;&lt;br /&gt;
  f32 map_offset_z; // (val - 6)/12&lt;br /&gt;
  f32 unk1_2;&lt;br /&gt;
  f32 unk1[7];&lt;br /&gt;
  u16 n_tiles;       // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;         // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;map_offset_x&amp;#039;&amp;#039; and &amp;#039;&amp;#039;map_offset_z&amp;#039;&amp;#039; fields warrant some explanation: the map editor allows you to shift the whole map around, and instead of updating all tiles individually, these chunk-wide settings get changed.  Actors&amp;#039; coordinates are updated, and are not affected by this offset. Whenever tiles get read, a tile that has stored location &amp;#039;&amp;#039;(x, z)&amp;#039;&amp;#039; effectively ends up at &amp;#039;&amp;#039;(x + map_offset_x, z + map_offset_z)&amp;#039;&amp;#039; instead.  Why are they floats, you say?  No idea.&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; tiles belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=84</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=84"/>
				<updated>2016-09-08T14:48:50Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Might as well link directly to the DS subpage, too.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wiki in which we reverse engineer NIS&amp;#039;s shit&lt;br /&gt;
&lt;br /&gt;
Spoiler: it often &amp;#039;&amp;#039;is&amp;#039;&amp;#039; shit&lt;br /&gt;
&lt;br /&gt;
We mainly hang out on IRC, in &amp;#039;&amp;#039;&amp;#039;#disgaea&amp;#039;&amp;#039;&amp;#039; on Badnik (&amp;#039;&amp;#039;irc.badnik.zone&amp;#039;&amp;#039;).  Currently focusing on understanding Disgaea 1 better.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Disgaea 1]] (PS2, PSP, [[Disgaea 1/DS|DS]], PC, TTHM)&lt;br /&gt;
&lt;br /&gt;
== I want to edit ==&lt;br /&gt;
PM xkeeper on IRC then.&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=83</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=83"/>
				<updated>2016-09-08T14:47:56Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also TCRF for details/unused content:&lt;br /&gt;
* [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
* [[tcrf:Disgaea DS|Disgaea DS]]&lt;br /&gt;
&lt;br /&gt;
=== Ports ===&lt;br /&gt;
* [[/DS]]: Disgaea DS&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
Take a look at the following&lt;br /&gt;
&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
* [[IMY format]] for how the IMY compression works&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Unsorted notes ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=82</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=82"/>
				<updated>2016-09-08T14:47:40Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also TCRF for details/unused content:&lt;br /&gt;
* [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
* [[tcrf:Disgaea DS|Disgaea DS]]&lt;br /&gt;
&lt;br /&gt;
== Ports ==&lt;br /&gt;
* [[/DS]]: Disgaea DS&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
Take a look at the following&lt;br /&gt;
&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
* [[IMY format]] for how the IMY compression works&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Unsorted notes ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=D1DS&amp;diff=81</id>
		<title>D1DS</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=D1DS&amp;diff=81"/>
				<updated>2016-09-08T14:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Redirected page to Disgaea 1/DS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Disgaea 1/DS]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=D1PS2&amp;diff=80</id>
		<title>D1PS2</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=D1PS2&amp;diff=80"/>
				<updated>2016-09-08T14:46:33Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Redirected page to Disgaea 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Disgaea 1]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS&amp;diff=79</id>
		<title>Disgaea 1/DS</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS&amp;diff=79"/>
				<updated>2016-09-08T14:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Let&amp;#039;s have a hub page for D1DS too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Disgaea 1 got ported to the Nintendo DS, aptly named &amp;#039;&amp;#039;&amp;#039;Disgaea DS&amp;#039;&amp;#039;&amp;#039;.  As far as internals go, DS probably has the most differences compared to the other ports.&lt;br /&gt;
&lt;br /&gt;
* [[/File tree]] shows an overview of the romfs.&lt;br /&gt;
* The [[MPDS format]] is used for maps in this port (compressed [[MPD format|MPD files]])&lt;br /&gt;
&lt;br /&gt;
[[Category:Games]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=78</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=78"/>
				<updated>2016-09-08T14:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: See also D1DS&amp;#039;s TCRF page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also TCRF for details/unused content:&lt;br /&gt;
* [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
* [[tcrf:Disgaea DS|Disgaea DS]]&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
Take a look at the following&lt;br /&gt;
&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
* [[IMY format]] for how the IMY compression works&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Unsorted notes ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS/File_tree&amp;diff=77</id>
		<title>Disgaea 1/DS/File tree</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/DS/File_tree&amp;diff=77"/>
				<updated>2016-09-08T14:37:23Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Created page with &amp;quot;High-level overview of the contents of Disgaea DS&amp;#039;s ROM filesystem.    &amp;#039;&amp;#039;&amp;#039;File tree                      #Files        Type              Description/notes&amp;#039;&amp;#039;&amp;#039;   .   ├── T...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;High-level overview of the contents of Disgaea DS&amp;#039;s ROM filesystem.&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;#039;&amp;#039;File tree                      #Files        Type              Description/notes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  .&lt;br /&gt;
  ├── ThumbBg.dat                              [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···Thubg*.imy            ( 19 files)    [[IMY format|IMY]]               Savefile thumbnails&lt;br /&gt;
  ├── bg.dat                                   [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···bg*.mpb               (117 files)    [[MPB format|MPB]] (MAP, IMY)&lt;br /&gt;
  ├── bgm.dat{,.tbl}                           [[DSARCFL format|DSARCFL]]&lt;br /&gt;
  │   └···bgm_*.msnd            ( 33 files)    [[DSEQ format|DSEQ]]&lt;br /&gt;
  ├── bu.dat                                   [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···bu*.mpb               (101 files)    [[MPB format|MPB]] (MAP, IMY)&lt;br /&gt;
  ├── ch_*.amd                  (234 files)    AMD               Char/class animation data?&lt;br /&gt;
  ├── ch_*.amt                  (234 files)    AMT               Char/class animation ???&lt;br /&gt;
  ├── chclut.bin                                                 Sprite color LUTs (for sprts.bin)&lt;br /&gt;
  ├── chtex.bin                                12BYTES-ARMS      Sprite metadata (for sprts.bin)&lt;br /&gt;
  ├── demoDbg.dat                              [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···file*                 (280 files)    ASCII text        (Debug text files, TBD)&lt;br /&gt;
  ├── dspack.dat                               [[DSARCIDX format|DSARCIDX]]          (Essentially start.dat for DS)&lt;br /&gt;
  │   ├···back.imy                             [[IMY format|IMY]]&lt;br /&gt;
  │   ├···base.dso                             [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···base.dsm                         [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···baseoe_*.imy      (  5 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···cursor.dso                           [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···cursor.dsm                       [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···cursoroe_*.imy    (  2 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···enn.dso                              [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···enn.dsm                          [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···ennoe_*.imy       (  2 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···enn.imy                              [[IMY format|IMY]]&lt;br /&gt;
  │   ├···establish*.imy        ( 23 files)    [[IMY format|IMY]]               Top screen in Settings&lt;br /&gt;
  │   ├···helpbg*.imy           (  7 files)    [[IMY format|IMY]]               Top screen in in-game Help&lt;br /&gt;
  │   ├···loading*.imy          (  6 files)    [[IMY format|IMY]]               Loading screen clock-Prinny&lt;br /&gt;
  │   ├···mgate.dso                            [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···mgate.dsm                        [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···mgateoe_*.imy     (  4 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···pliny01.imy                          [[IMY format|IMY]]               ???&lt;br /&gt;
  │   ├···sys7.imy                             [[IMY format|IMY]]&lt;br /&gt;
  │   ├···taiho.dso                            [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···taiho.dsm                        [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···taihooe_*.imy     (  6 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···taiho2.dso                           [[DSO format|DSO]] (DSARCIDX)&lt;br /&gt;
  │   │   ├···taiho2.dsm                       [[DSM format|DSM]]&lt;br /&gt;
  │   │   └···taiho2oe_*.imy    (  4 files)    [[IMY format|IMY]]&lt;br /&gt;
  │   ├···titdemo{3,4,5}.imy    (  3 files)    [[IMY format|IMY]]               Titlescreen opening animation&lt;br /&gt;
  │   ├···waku3.imy                            [[IMY format|IMY]]&lt;br /&gt;
  │   └···wbg*.imy              ( 17 files)    [[IMY format|IMY]]               Top-screen titlescreen logo&lt;br /&gt;
  ├── efctobj.dat                              [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···effect*.dsm           (133 files)    [[DSM format|DSM]]&lt;br /&gt;
  ├── efcttex.dat                              [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···effect*_*.imy         (270 files)    [[IMY format|IMY]]&lt;br /&gt;
  ├── mapobjs.dat                              [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···mp*o*.dsm             (234 files)    [[DSM format|DSM]]&lt;br /&gt;
  ├── maptex.dat                               [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···mp*{t,prd}*.imy       (785 files)    [[IMY format|IMY]]               Map textures (for heightmapped surface)&lt;br /&gt;
  ├── mpds.dat                                 [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···mp*.mpds              (198 files)    [[MPDS format|MPDS]]              Map files (compressed)&lt;br /&gt;
  ├── mpds.lst                                 ASCII text        (CSV of filename,mapID, weird for PSP_mp25001)&lt;br /&gt;
  ├── msgvo.dat{,.tbl}                         [[DSARCFL format|DSARCFL]]&lt;br /&gt;
  │   └···*.strm                (173 files)    [[STRM format|STRM]]&lt;br /&gt;
  ├── nafnt.fnt&lt;br /&gt;
  ├── objtex.dat                               [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···mp*o*_*.imy           (646 files)    [[IMY format|IMY]]               Map object textures&lt;br /&gt;
  ├── rmaps.dat                                [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   └···20*.rmd               ( 72 files)    RMD?              Item world randomized maps?&lt;br /&gt;
  ├── script.dat                               [[script.dat format|script.dat]]        Scripting&lt;br /&gt;
  ├── se.dat{,.tbl}                            [[DSARCFL format|DSARCFL]]&lt;br /&gt;
  │   ├···*_*.se                (128 files)    [[SWAW format|SWAW]]              Sound effects&lt;br /&gt;
  │   └···yrah*.swav            (  4 files)    (empty)&lt;br /&gt;
  ├── song.dat{,.tbl}                          [[DSARCFL format|DSARCFL]]&lt;br /&gt;
  │   ├···bgm10.msnd                           [[DSEQ format|DSEQ]]&lt;br /&gt;
  │   └···song*.msnd            ( 11 files)    [[DSEQ format|DSEQ]]&lt;br /&gt;
  ├── sprts.bin                                [[sprts.bin format|sprts.bin]]         Raw sprite data (use chtex.bin to parse)&lt;br /&gt;
  ├── sys9.imy                                 [[IMY format|IMY]]               Tileset for topscreen (map)&lt;br /&gt;
  ├── table.dat                                [[DSARCIDX format|DSARCIDX]]&lt;br /&gt;
  │   ├···char.dat                             table             Character/class data&lt;br /&gt;
  │   ├···charhelp.dat                         table             Class help description&lt;br /&gt;
  │   ├···dungeon.dat                          table             Gatekeeper warp data&lt;br /&gt;
  │   ├···ge.dat                               table             Geo effects&lt;br /&gt;
  │   ├···geocube.dat                          table             Geocube effects (multiplayer)&lt;br /&gt;
  │   ├···habit.dat                            table             Item inhabitants&lt;br /&gt;
  │   ├···hospital.dat                         table             Hospital awards&lt;br /&gt;
  │   ├···magic.dat                            table             Specials/spells&lt;br /&gt;
  │   ├···mitem.dat                            table             Items&lt;br /&gt;
  │   ├···musicshop.dat                        table             Song list&lt;br /&gt;
  │   ├···name.dat                             table             Names for randomizer&lt;br /&gt;
  │   ├···thief.dat                            table             Stat stealing entries&lt;br /&gt;
  │   ├···wish.dat                             table             Dark Assembly bills&lt;br /&gt;
  │   └···zukan.dat                            table             Bestiary entries&lt;br /&gt;
  ├── talk.dat                                 [[talk.dat format|talk.dat]]          Dialogue (castle, cutscenes) + some scripting&lt;br /&gt;
  ├── uwbg*.mpb                 ( 12 files)    [[MPB format|MPB]] (MAP, IMY)&lt;br /&gt;
  ├── voice.dat{,.tbl}                         [[DSARCFL format|DSARCFL]]&lt;br /&gt;
  │   ├···*_*.se                (  3 files)    [[SWAW format|SWAW]]&lt;br /&gt;
  │   └···*_*.swav              (185 files)    [[SWAW format|SWAW]]&lt;br /&gt;
  ├── waku{,2,3}.imy            (  3 files)    [[IMY format|IMY]]&lt;br /&gt;
  └── wbg{,2,3}.imy             (  3 files)    [[IMY format|IMY]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=76</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Main_Page&amp;diff=76"/>
				<updated>2016-09-08T13:39:24Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A wiki in which we reverse engineer NIS&amp;#039;s shit&lt;br /&gt;
&lt;br /&gt;
Spoiler: it often &amp;#039;&amp;#039;is&amp;#039;&amp;#039; shit&lt;br /&gt;
&lt;br /&gt;
We mainly hang out on IRC, in &amp;#039;&amp;#039;&amp;#039;#disgaea&amp;#039;&amp;#039;&amp;#039; on Badnik (&amp;#039;&amp;#039;irc.badnik.zone&amp;#039;&amp;#039;).  Currently focusing on understanding Disgaea 1 better.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[Disgaea 1]] (PS2, PSP, DS, PC, TTHM)&lt;br /&gt;
&lt;br /&gt;
== I want to edit ==&lt;br /&gt;
PM xkeeper on IRC then.&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=75</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=75"/>
				<updated>2016-09-08T13:18:48Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some details on the TCRF page here: [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
Take a look at the following&lt;br /&gt;
&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
* [[IMY format]] for how the IMY compression works&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Unsorted notes ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=70</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=70"/>
				<updated>2016-09-07T19:32:41Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Tile data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; tiles belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=69</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=69"/>
				<updated>2016-09-07T17:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Tile data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (SW, SE, NW, NE) (needs verification!)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=68</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=68"/>
				<updated>2016-09-07T17:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Actor data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NE, SE, NW, SW)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only(?) used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=67</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=67"/>
				<updated>2016-09-07T17:07:06Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Fix coordinate system (duh...), add first stab at texture data&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
A note on convention: the coordinate system in this article treats positive x as east, positive y as down (that is, &amp;quot;forward&amp;quot;), and positive z as north, if you&amp;#039;re looking at the map from above.  This makes it a left-hand coordinate system.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct texdata {&lt;br /&gt;
  u8 u, v;&lt;br /&gt;
  u8 unk[6];        // TBD&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  struct texdata textures[5];   // N, W, S, E, Top&lt;br /&gt;
  struct texdata textures2[5];  // Same order, unknown meaning (maybe repeated texture)&lt;br /&gt;
  u8  unk1[0x10];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NE, SE, NW, SW)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  i8  x, z;&lt;br /&gt;
  i8  rotation;    // -1 = W, 0 = N, 1 = E, 2 = S&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30];     // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=66</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=66"/>
				<updated>2016-09-07T13:21:25Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Actor data */ Document some more Actor fields&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  u8  unk1[0x60];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NW, NE, SW, SE)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  u8  y, x;        // Should probably actually be i8&lt;br /&gt;
  i8  rotation;    // -1 = N, 0 = E, 1 = S, 2 = W&lt;br /&gt;
  u8  unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
  u8  unk7;&lt;br /&gt;
  u16 geo_effect;  // Only used for geosymbols, val%10 = color, val/10 = effect&lt;br /&gt;
  u16 unk8;&lt;br /&gt;
  u16 magic[4];&lt;br /&gt;
  i8  unk[30]; // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=65</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=65"/>
				<updated>2016-09-07T10:32:58Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Actor data */ For consistency... it was bugging me.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  u8  unk1[0x60];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NW, NE, SW, SE)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  i8  unk3, unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // 0 = Appear Normal, 1 = Absent 2nd, 2 = Appear 2nd&lt;br /&gt;
&lt;br /&gt;
  i8  unk[43]; // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=64</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=64"/>
				<updated>2016-09-07T10:32:26Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: /* Actor data */ Document some more Actor fields&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  u8  unk1[0x60];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NW, NE, SW, SE)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;          // Class ID&lt;br /&gt;
  u16 level;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  i8  unk3, unk4;&lt;br /&gt;
  u8  ai;          // ? verify&lt;br /&gt;
  u8  unk5, unk6;&lt;br /&gt;
  u16 items[4];&lt;br /&gt;
  u8  appearance;  // (0:Appear Normal, 1:Absent 2nd, 2:Appear 2nd)&lt;br /&gt;
&lt;br /&gt;
  i8  unk[43]; // TBD&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=63</id>
		<title>Disgaea 1</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1&amp;diff=63"/>
				<updated>2016-09-07T06:34:50Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Wikified map list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this agme sucks and is bad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some details on the TCRF page here: [[tcrf:Disgaea: Hour of Darkness|Disgaea: Hour of Darkness]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pages ===&lt;br /&gt;
take a look at the following&lt;br /&gt;
* [[/Map editor|/Map editor]]&lt;br /&gt;
* [[/Debug mode|/Debug mode]]&lt;br /&gt;
&lt;br /&gt;
* [[MPD format]] for how the maps work&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
* [[/Map list]] -- shows which maps are on what platforms&lt;br /&gt;
&lt;br /&gt;
=== Random barfed notes because organization is hard ===&lt;br /&gt;
&lt;br /&gt;
Four different &amp;quot;teams&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[File:D1PC-Teams.png|300px]]&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #27ea58; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Player&amp;lt;/span&amp;gt;: your units&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #ed60a9; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Enemy&amp;lt;/span&amp;gt;: attacks everything else&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #fdea00; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;Neutral&amp;lt;/span&amp;gt;: attacks Enemy&lt;br /&gt;
* &amp;lt;span style=&amp;quot;background: #FF3C10; color: black; width: 7em; display: inline-block; text-align: center;&amp;quot;&amp;gt;&amp;quot;Red&amp;quot;&amp;lt;/span&amp;gt;: attacks Player, normally not used&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_list&amp;diff=62</id>
		<title>Disgaea 1/Map list</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=Disgaea_1/Map_list&amp;diff=62"/>
				<updated>2016-09-07T06:33:20Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Wikify&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;List of maps in Disgaea 1, grouped by map IDs. Handy for identifying what map you&amp;#039;re looking at.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Map                  !! ID       !! Platform&lt;br /&gt;
|-&lt;br /&gt;
| Battle Basics        || 101      || All&lt;br /&gt;
|-&lt;br /&gt;
| Battle Basics        || 102      || All&lt;br /&gt;
|-&lt;br /&gt;
| Geo Effect           || 103      || All&lt;br /&gt;
|-&lt;br /&gt;
| Practice Map         || 104      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Blessed Court        || 201      || All&lt;br /&gt;
|-&lt;br /&gt;
| Corridor of Love     || 202      || All&lt;br /&gt;
|-&lt;br /&gt;
| Hall of Caresses     || 203      || All&lt;br /&gt;
|-&lt;br /&gt;
| Magnificent Gate     || 204      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Road of Flames       || 301      || All&lt;br /&gt;
|-&lt;br /&gt;
| Parched Ground       || 302      || All&lt;br /&gt;
|-&lt;br /&gt;
| Blazing Field        || 303      || All&lt;br /&gt;
|-&lt;br /&gt;
| Molten Labyrinth     || 304      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Golden Courtyard     || 401      || All&lt;br /&gt;
|-&lt;br /&gt;
| Flashy Passage       || 402      || All&lt;br /&gt;
|-&lt;br /&gt;
| Lavish Hall          || 403      || All&lt;br /&gt;
|-&lt;br /&gt;
| Gaudy Entrance       || 404      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Icy Breath           || 501      || All&lt;br /&gt;
|-&lt;br /&gt;
| Eternal Winter       || 502      || All&lt;br /&gt;
|-&lt;br /&gt;
| White Death          || 503      || All&lt;br /&gt;
|-&lt;br /&gt;
| Forsaken Land        || 504      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Calamity Woods       || 601      || All&lt;br /&gt;
|-&lt;br /&gt;
| Ritual Site          || 602      || All&lt;br /&gt;
|-&lt;br /&gt;
| Witches&amp;#039; Den         || 603      || All&lt;br /&gt;
|-&lt;br /&gt;
| Writhing Shadow      || 604      || All&lt;br /&gt;
|-&lt;br /&gt;
| Nightdwellers        || 605      || All&lt;br /&gt;
|-&lt;br /&gt;
| Heart of Evil        || 606      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Valgipus IV          || 701      || All&lt;br /&gt;
|-&lt;br /&gt;
| Thurvean Sector      || 702      || All&lt;br /&gt;
|-&lt;br /&gt;
| Sphere VIII          || 703      || All&lt;br /&gt;
|-&lt;br /&gt;
| Cross-Point          || 704      || All&lt;br /&gt;
|-&lt;br /&gt;
| Primordial Soup      || 705      || All&lt;br /&gt;
|-&lt;br /&gt;
| Primordial Soup      || 706      || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Point Alpha-III      || 801      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Main Corridor 1      || 901      || All&lt;br /&gt;
|-&lt;br /&gt;
| Main Corridor 2      || 902      || All&lt;br /&gt;
|-&lt;br /&gt;
| Main Corridor 3      || 903      || All&lt;br /&gt;
|-&lt;br /&gt;
| Bridge               || 904      || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Central City         || 1001     || All&lt;br /&gt;
|-&lt;br /&gt;
| Neo Eden             || 1002     || All&lt;br /&gt;
|-&lt;br /&gt;
| EDF Headquarters     || 1003     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Prinny Land 1        || 1101     || All&lt;br /&gt;
|-&lt;br /&gt;
| Prinny Land 2        || 1102     || All&lt;br /&gt;
|-&lt;br /&gt;
| Prinny Land 3        || 1103     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Field of Virtue      || 1201     || All&lt;br /&gt;
|-&lt;br /&gt;
| Paradise             || 1202     || All&lt;br /&gt;
|-&lt;br /&gt;
| Angelic Choir        || 1203     || All&lt;br /&gt;
|-&lt;br /&gt;
| Coliseum             || 1204     || All&lt;br /&gt;
|-&lt;br /&gt;
| Divine Prison        || 1205     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Inner Sanctum        || 1301     || All&lt;br /&gt;
|-&lt;br /&gt;
| Hall of Justice      || 1302     || All&lt;br /&gt;
|-&lt;br /&gt;
| Sacred Altar         || 1303     || All&lt;br /&gt;
|-&lt;br /&gt;
| Sacred Altar(D)      || 1304     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Scorching Wind       || 1401     || All&lt;br /&gt;
|-&lt;br /&gt;
| Column of Fire       || 1402     || All&lt;br /&gt;
|-&lt;br /&gt;
| Crimson Plains       || 1403     || All&lt;br /&gt;
|-&lt;br /&gt;
| Ember of Dreams      || 1404     || All&lt;br /&gt;
|-&lt;br /&gt;
| Raging Earth         || 1405     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Fervent Melody       || 1501     || All&lt;br /&gt;
|-&lt;br /&gt;
| Wasteland of Woe     || 1502     || All&lt;br /&gt;
|-&lt;br /&gt;
| Searing Tyranny      || 1503     || All&lt;br /&gt;
|-&lt;br /&gt;
| Inferno              || 1504     || All&lt;br /&gt;
|-&lt;br /&gt;
| River of Lava        || 1505     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Endless White        || 1601     || All&lt;br /&gt;
|-&lt;br /&gt;
| Terrible Cold        || 1602     || All&lt;br /&gt;
|-&lt;br /&gt;
| Ice Queen            || 1603     || All&lt;br /&gt;
|-&lt;br /&gt;
| Absolute Zero        || 1604     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Frigid Garden        || 1701     || All&lt;br /&gt;
|-&lt;br /&gt;
| Freezing Souls       || 1702     || All&lt;br /&gt;
|-&lt;br /&gt;
| Under the Moon       || 1703     || All&lt;br /&gt;
|-&lt;br /&gt;
| Theatre of Death     || 1704     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Ghostly Whisper      || 1801     || All&lt;br /&gt;
|-&lt;br /&gt;
| Rising Fear          || 1802     || All&lt;br /&gt;
|-&lt;br /&gt;
| Crawling Terror      || 1803     || All&lt;br /&gt;
|-&lt;br /&gt;
| Hero&amp;#039;s Tomb          || 1804     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Embryon              || 1901     || All&lt;br /&gt;
|-&lt;br /&gt;
| Core Point No.4      || 1902     || All&lt;br /&gt;
|-&lt;br /&gt;
| Star Cluster         || 1903     || All&lt;br /&gt;
|-&lt;br /&gt;
| Sidereal Rift        || 1904     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Foreboding Seal      || 2001     || All&lt;br /&gt;
|-&lt;br /&gt;
| Beauty of Evil       || 2002     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Alternate World      || 2101     || All&lt;br /&gt;
|-&lt;br /&gt;
| Hall of Sin          || 2102     || All&lt;br /&gt;
|-&lt;br /&gt;
| Hall of Penance      || 2103     || All&lt;br /&gt;
|-&lt;br /&gt;
| Malefic Seal         || 2104     || All&lt;br /&gt;
|-&lt;br /&gt;
| Warrior Maiden       || 2105     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Patriarch&amp;#039;s Seal     || 2201     || All&lt;br /&gt;
|-&lt;br /&gt;
| Lord of Terror       || 2202     || All&lt;br /&gt;
|-&lt;br /&gt;
| Baal (Etna Mode)     || 2203     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Puzzle 1             || 2901     || PS2    (PSP, DS, PC have overwritten these with Test Maps)&lt;br /&gt;
|-&lt;br /&gt;
| Puzzle 2             || 2902     || PS2    (PSP, DS, PC have overwritten these with Test Maps)&lt;br /&gt;
|-&lt;br /&gt;
| Puzzle 3             || 2903     || PS2    (PSP, DS, PC have overwritten these with Test Maps)&lt;br /&gt;
|-&lt;br /&gt;
| Puzzle 4             || 2904     || PS2    (PSP, DS, PC have overwritten these with Test Maps)&lt;br /&gt;
|-&lt;br /&gt;
| Puzzle 5             || 2905     || PS2    (PSP, DS, PC have overwritten these with Test Maps)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Cave of Ordeal 1     || 3001     || All&lt;br /&gt;
|-&lt;br /&gt;
| Cave of Ordeal 2     || 3002     || All&lt;br /&gt;
|-&lt;br /&gt;
| Cave of Ordeal 3     || 3003     || All&lt;br /&gt;
|-&lt;br /&gt;
| Cave of Ordeal 4     || 3004     || All&lt;br /&gt;
|-&lt;br /&gt;
| Cave of Ordeal 5     || 3005     || All&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3006     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3007     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3008     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3009     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3010     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3011     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3012     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Demonhall Mirror     || 3013     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 3101     || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 3102     || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 3103     || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 3104     || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 3105     || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Valgipus IV          || 3201     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Blessed Court        || 3301     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Corridor of Love     || 3302     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Hall of Caresses     || 3303     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Magnificent Gate     || 3304     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Golden Courtyard     || 3401     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Flashy Passage       || 3402     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Lavish Hall          || 3403     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Gaudy Entrance       || 3404     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Fervent Melody       || 3501     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Wasteland of Woe     || 3502     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Searing Tyranny      || 3503     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Inferno              || 3504     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| River of Lava        || 3505     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Endless White        || 3601     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Terrible Cold        || 3602     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Ice Queen            || 3603     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Absolute Zero        || 3604     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Ice Beast Gate       || 3701     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Frost Castle         || 3702     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Millennium Ice       || 3703     || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Dark castle          || 5101&lt;br /&gt;
|-&lt;br /&gt;
| Dark castle          || 5102&lt;br /&gt;
|-&lt;br /&gt;
| Dark castle          || 5103&lt;br /&gt;
|-&lt;br /&gt;
| Dark castle          || 5104&lt;br /&gt;
|-&lt;br /&gt;
| Dark castle          || 5105&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10101    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10102    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10103    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10104    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10105    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10106    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10107    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10108    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10201    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10202    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10203    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10204    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10205    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10206    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10207    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10208    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10301    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10302    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10303    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10304    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10305    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10306    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10307    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10308    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10401    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10402    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10403    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10404    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10405    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10406    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10407    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10408    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10501    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10502    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10503    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10504    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10505    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10506    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10507    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10508    || All&lt;br /&gt;
|-&lt;br /&gt;
|                      || 10509    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Local forum          || 21001    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 1      || 21002    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 2      || 21003    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 3      || 21004    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 4      || 21005    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 5      || 21006    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 6      || 21007    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 7      || 21008    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 8      || 21009    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 9      || 21010    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 10     || 21011    || All&lt;br /&gt;
|-&lt;br /&gt;
| Exam for Rank 11     || 21012    || All&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| Grassy Knoll         || 25001    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Vyers Castle         || 25002    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Frozen River         || 25003    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Dragon Peninsula     || 25004    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Blair Forest         || 25005    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Dinero Palace        || 25006    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Lunar Snowfield      || 25007    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Stellar Graveyard    || 25008    || PSP, DS, PC&lt;br /&gt;
|-&lt;br /&gt;
| Celestia             || 25009    || PSP, DS, PC&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPDS_format&amp;diff=57</id>
		<title>MPDS format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPDS_format&amp;diff=57"/>
				<updated>2016-09-06T20:44:39Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Whee, now we can decompress DS maps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPDS format&amp;#039;&amp;#039;&amp;#039; holds map data in the DS version of Disgaea 1.  It is actually just a compressed [[MPD format|MPD file]], with an extra footer appended to the compressed data.&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s fairly likely that this is a known compression that already has a name, in which case the compression part should probably be moved to a separate article. For now, though, it&amp;#039;ll be described here.&lt;br /&gt;
&lt;br /&gt;
== Compression ==&lt;br /&gt;
There is a very brief header consisting of a 0x10 byte (as &amp;quot;magic number&amp;quot;/to identify compression algorithm), followed by the decompressed size as a 24-bit little-endian integer. Compressed data follows after that.&lt;br /&gt;
&lt;br /&gt;
The compression format is LZ-like, featuring bytes to be copied verbatim as well as backreferences to repeat a string of bytes that has been produced recently.&lt;br /&gt;
&lt;br /&gt;
Before each group of 8 items (verbatim bytes or backrefs) is a byte, its bits acting as flags indicating whether the corresponding item is a verbatim byte (if 0) or a backref (if 1), starting from most down to least significant bit.  Thus, &amp;#039;&amp;#039;0x43&amp;#039;&amp;#039; would mean 1 verbatim byte, 1 backref, 4 verbatim bytes, 2 backrefs.&lt;br /&gt;
&lt;br /&gt;
Backrefs are two bytes wide, its bits forming a pattern &amp;lt;code&amp;gt;xxxxyyyy yyyyyyyy&amp;lt;/code&amp;gt;. Such a backref represents repeating &amp;#039;&amp;#039;x+3&amp;#039;&amp;#039; bytes from &amp;#039;&amp;#039;y + 1&amp;#039;&amp;#039; bytes back in history.&lt;br /&gt;
&lt;br /&gt;
== Compressed footer ==&lt;br /&gt;
At the end of the decompressed data, after the MPD format proper, is a footer consisting of two lists of u32&amp;#039;s, both prefixed by a u32 containing the length of the list.  It is unknown what these are for.&lt;br /&gt;
&lt;br /&gt;
== C decompressor ==&lt;br /&gt;
Here is the source code for a hacky decompressor written in C.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef uint8_t  u8;&lt;br /&gt;
typedef uint16_t u16;&lt;br /&gt;
typedef uint32_t u32;&lt;br /&gt;
&lt;br /&gt;
int decompress(FILE *in, FILE *out, size_t decompressed_size) {&lt;br /&gt;
  #define CONTEXT 0x1000&lt;br /&gt;
  #define BIT(n, b) (((n) &amp;gt;&amp;gt; (b)) &amp;amp; 1)&lt;br /&gt;
&lt;br /&gt;
  u8 history[CONTEXT];&lt;br /&gt;
  size_t i       = 0,&lt;br /&gt;
         read    = 0,&lt;br /&gt;
         written = 0;&lt;br /&gt;
&lt;br /&gt;
  #define READ() (read++, fgetc(in))&lt;br /&gt;
  #define WRITE(x) {             \&lt;br /&gt;
    history[i] = (x);            \&lt;br /&gt;
    fputc(history[i], out);      \&lt;br /&gt;
    written++;                   \&lt;br /&gt;
    i = (i + 1) &amp;amp; (CONTEXT - 1); \&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  while (written &amp;lt; decompressed_size &amp;amp;&amp;amp; !feof(in)) {&lt;br /&gt;
    u8 flags = READ();&lt;br /&gt;
    for (int b = 7; b &amp;gt;= 0 &amp;amp;&amp;amp; written &amp;lt; decompressed_size; b--) {&lt;br /&gt;
      if (BIT(flags, b)) {&lt;br /&gt;
        // Copy from history&lt;br /&gt;
        u8 x = READ();&lt;br /&gt;
        size_t count = (x &amp;gt;&amp;gt; 4) + 3;&lt;br /&gt;
        size_t offset = (((x &amp;amp; 0x0F) &amp;lt;&amp;lt; 8) | READ()) + 1;&lt;br /&gt;
&lt;br /&gt;
        for (int j = 0; j &amp;lt; count; j++) {&lt;br /&gt;
          WRITE(history[(i - offset) &amp;amp; (CONTEXT - 1)]);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
      } else {&lt;br /&gt;
        // Copy input to output&lt;br /&gt;
        WRITE(READ());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (written == decompressed_size) {&lt;br /&gt;
    return written;&lt;br /&gt;
  } else {&lt;br /&gt;
    return -1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #undef CONTEXT&lt;br /&gt;
  #undef BIT&lt;br /&gt;
  #undef READ&lt;br /&gt;
  #undef WRITE&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  if (argc != 2) {&lt;br /&gt;
    fprintf(stderr, &amp;quot;Usage: %s &amp;lt;file.mpds&amp;gt;\n&amp;quot;, argv[0]);&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  FILE *f = fopen(argv[1], &amp;quot;r&amp;quot;);&lt;br /&gt;
  if (f == NULL) {&lt;br /&gt;
    fprintf(stderr, &amp;quot;Couldn&amp;#039;t open &amp;#039;%s&amp;#039; for reading.&amp;quot;, argv[1]);&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Read header&lt;br /&gt;
  u32 header;&lt;br /&gt;
  fread(&amp;amp;header, sizeof(u32), 1, f);&lt;br /&gt;
  u8 magic = header &amp;amp; 0xFF;&lt;br /&gt;
  size_t dec_size = (header &amp;gt;&amp;gt; 8);&lt;br /&gt;
&lt;br /&gt;
  // Decompress&lt;br /&gt;
  int n = decompress(f, stdout, dec_size);&lt;br /&gt;
  if (n &amp;lt; 0) {&lt;br /&gt;
    fprintf(stderr, &amp;quot;Error while decompressing.\n&amp;quot;);&lt;br /&gt;
    return 2;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=55</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=55"/>
				<updated>2016-09-06T17:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: +cat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  u8  unk1[0x60];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NW, NE, SW, SE)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;           // Class ID&lt;br /&gt;
  u16 unk1;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  i8  unk3;&lt;br /&gt;
  u8  unk4, unk5, unk6;&lt;br /&gt;
&lt;br /&gt;
  i8  unk[53];      // TBD, various fields&lt;br /&gt;
  /*&lt;br /&gt;
    unk[9]: (0:Appear Normal, 1:Absent 2nd, 2:Appear 2nd)&lt;br /&gt;
  */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	<entry>
		<id>https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=54</id>
		<title>MPD format</title>
		<link rel="alternate" type="text/html" href="https://disgaea.rustedlogic.net/index.php?title=MPD_format&amp;diff=54"/>
				<updated>2016-09-06T17:03:10Z</updated>
		
		<summary type="html">&lt;p&gt;FireFly: Describe what is currently known about the MPD format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;MPD format&amp;#039;&amp;#039;&amp;#039; is used to describe map data.&lt;br /&gt;
&lt;br /&gt;
== Header ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct header {&lt;br /&gt;
  u16 n_chunks;     // #chunks in map file&lt;br /&gt;
  u16 n_actors;     // #actors in map file&lt;br /&gt;
  u16 unknown;&lt;br /&gt;
  u8  padding[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk ==&lt;br /&gt;
The header is followed by &amp;#039;&amp;#039;n_chunks&amp;#039;&amp;#039; chunks. Each &amp;quot;chunk&amp;quot; is fixed-size, and contains map tiles, objects and event tiles.  All map tile data is stored outside the chunks section, whereas objects and event tiles are stored within it (and thus there&amp;#039;s a limit to the number of objects/events in a chunk).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk {&lt;br /&gt;
  struct chunk_header            header;&lt;br /&gt;
  struct chunk_object_entry      objects[32];&lt;br /&gt;
  struct chunk_event_tile_entry  event_tiles[16];&lt;br /&gt;
  struct map_tile                weird_special_tile;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_header {&lt;br /&gt;
  u8  unk1[24];&lt;br /&gt;
  u16 n_tiles;      // #tiles within chunk&lt;br /&gt;
  u8  unk2, unk3;&lt;br /&gt;
  u16 index;        // index of chunk (starts at 0)&lt;br /&gt;
  u8  unk4[14];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object table ===&lt;br /&gt;
Each chunk fits up to 32 objects (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_object_entry {&lt;br /&gt;
  i16 unk1, unk2, unk3, unk4, unk5;&lt;br /&gt;
  i16 unk6, unk7, unk8, unk9, unk10;&lt;br /&gt;
  u8  unk11, unk12, unk13, unk14, unk15, unk16;&lt;br /&gt;
  u8  pad[10];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event tile table ===&lt;br /&gt;
Each chunk fits up to 16 event tiles (padded with null bytes if there&amp;#039;s fewer).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct chunk_event_tile_entry {&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  index;&lt;br /&gt;
  u8  pad1;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tile data ==&lt;br /&gt;
The number of tiles in the tile data section is the sum of &amp;#039;&amp;#039;n_tiles&amp;#039;&amp;#039; for all chunks. Presumably the tiles are assigned to chunks in the order they appear, so the first &amp;#039;&amp;#039;chunk[0].header.n_tiles&amp;#039;&amp;#039; chunks belong to chunk 0, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_tile {&lt;br /&gt;
  u8  unk1[0x60];   // TBD&lt;br /&gt;
  i8  corners[4];   // Height in each corner of the tile, negative = up; (NW, NE, SW, SE)&lt;br /&gt;
  u8  unk2[0x0C];   // TBD&lt;br /&gt;
  u8  unk3;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  u8  unk4, unk5, unk6, unk7;&lt;br /&gt;
  u8  mobility;     // 0 = Unlimited, 1 = Fly only, 2 = Impassable&lt;br /&gt;
  u8  geo_color;&lt;br /&gt;
  u8  geo_mark;     // 0 = No geopanel, 100 = Has geopanel&lt;br /&gt;
  u8  pad2[6];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actor data ==&lt;br /&gt;
The number of actors is given by &amp;#039;&amp;#039;n_actors&amp;#039;&amp;#039; in the file header.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct map_actor {&lt;br /&gt;
  u16 id;           // Class ID&lt;br /&gt;
  u16 unk1;&lt;br /&gt;
  u8  unk2;&lt;br /&gt;
  u8  y, x;&lt;br /&gt;
  i8  unk3;&lt;br /&gt;
  u8  unk4, unk5, unk6;&lt;br /&gt;
&lt;br /&gt;
  i8  unk[53];      // TBD, various fields&lt;br /&gt;
  /*&lt;br /&gt;
    unk[9]: (0:Appear Normal, 1:Absent 2nd, 2:Appear 2nd)&lt;br /&gt;
  */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>FireFly</name></author>	</entry>

	</feed>