Tactics Ogre: The Knight of Lodis/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
No edit summary
m (Xkeeper moved page Tactics Ogre: The Knight of Lodis:ROM map to Tactics Ogre: The Knight of Lodis/ROM map: normalize subpages and titles)
 
(6 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{rommap|game=Tactics Ogre: The Knight of Lodis}}
{{rommap|game=Tactics Ogre: The Knight of Lodis}}


==Data Structures==
=Overall ROM Map=
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
|- style="background: #ccccff;"
!Name
!Start
!End
!Number of Entries
!Size Per Entry
!Total Size
|-
| Prizes/Random Treasures || 0x61D8A0 || 0x61D99F || 256 || 1 || 256
|-
| Hire Shop || 0x622494 || 0x6224E3|| 10 || 8 || 80
|-
| Item Shop || 0x6224E4 || 0x622583|| 40 || 4 || 160
|-
| Secret Shop || 0x622584 || 0x62258B || 8 || 1 || 8
|-
| Magic Shop || 0x62258C || 0x622617 || 35 || 4 || 140
|-
| Unit List || 0x769130 || 0x76F66F || 35 || 32 || 810
|-
|}
 
 
 
 
 
=Data Structures=
*Information on classes is available on the page [[Tactics Ogre: The Knight of Lodis:Jobs]].
*Information on classes is available on the page [[Tactics Ogre: The Knight of Lodis:Jobs]].
*Information on items and equipment is available on the page [[Tactics Ogre: The Knight of Lodis:Items]].
*Information on items and equipment is available on the page [[Tactics Ogre: The Knight of Lodis:Items]].
*Information on abilities is available on the page [[Tactics Ogre: The Knight of Lodis:Abilities]].
*Information on abilities is available on the page [[Tactics Ogre: The Knight of Lodis:Abilities]].


*Some tables have unknown data bytes at the beginning/end, its possible these tables are offset from there true position.
*Many tables have an empty entry at the beginning for 'None'. Not all tables have this taken into account yet. If a table has an odd number of entries, this is likely the case.
==Prizes/Random Treasures Table==
*Data starts at 0x0061D8A0 and ends at 0x0061D99F in the ROM.
*There are 256 entries, 1 bytes in length each.
*The first 108 bytes are random treasures (picked up when moving onto a map square).
**Divided into 3 groups. Higher groups have better treasures.
**The groups contain 10,13, and 13 entries respectively.(This needs to be confirmed)
**When an item is picked up, a random entry is selected.
**Each entry has 3 items, one for each of low, medium and high biorythm.
*Next are Quest rewards, starting at 0x0061D90C
**Divided into 10 groups of 8 items each
**Lower groups are better. Group is improved by beating harder quests, faster.
**Items are randomly selected among the group
*Next are VS. Mode rewards, starting at 0x0061D94C
**64 Items total
**Unknown how this functions.
==Hire Shop Data Structure==
*Data starts at 0x00622494 and ends at 0x006224E3 in the ROM.
*There are 10 entries, 8 bytes in length each.
*It's unknown how the game decides which entry to use. (e.g. Mermaids only in Rana, Giants only later in the game, random class every time, etc...)
*There is no termination data at the end of the table. The length must be hardcoded somewhere else.


==Shop Item Data Structure==
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
*Shop Item Data data starts at 0x006224E4 and ends at 0x0062257F in the ROM.
|- style="background: #ccccff;"
*There are 39 entries, 4 bytes in length each.
!Name
*Because there are unknown data bytes at the beginning/end, its possible the table is offset from it's true position.
!Length
!Offset
!Type
!Max Value
!Description
|-
| Class ID || 1 || 0x00 || uint8 || 0x54 || Class to hire
|-
| Unknown || 1 || 0x01 || uint8 || Unknown || Unknown entry. Always 0
|-
| Cost || 2 || 0x02 || uint16 || ?? || Base cost to hire the unit
|-
| Per Level Cost|| 2 || 0x04 || uint16 || ?? || Adds this much gold to the cost per extra level bought
|-
| Unknown || 1 || 0x06 || uint8 || Unknown || Unknown entry. Always 0
|-
| Unknown || 1 || 0x07 || uint8 || Unknown || Unknown entry. Always 0
|-
|}
 
 
==Item Shop Data Structure==
*Data starts at 0x006224E4 and ends at 0x00622583 in the ROM.
*There are 40 entries, 4 bytes in length each.
*Prices are not stored in this table. They are stored in the item table.
*Prices are not stored in this table. They are stored in the item table.
*The last entry is a termination of (0xff,0xff,0x00,0x00) starting at 0x622580


*''The Shop Item Data Structure is 39 Entries long. ''
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
  |- style="background: #ccccff;"
  |- style="background: #ccccff;"
Line 30: Line 106:
  |-
  |-
  | Unknown || 1 || 0x03 || uint8 || Unknown || Unknown entry. Always 0
  | Unknown || 1 || 0x03 || uint8 || Unknown || Unknown entry. Always 0
|-
|}
==Secret Item Shop Data Structure==
*The secret shop becomes available in Scabellum after recruiting Deneb
*Data starts at 0x00622584 and ends at 0x0062258C in the ROM.
*There are 7 entries, 1 bytes in length each.
*Prices are not stored in this table. They are stored in the item table.
*The last entry is a termination of (0xff) at 0x0062258C
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
|- style="background: #ccccff;"
!Name
!Length
!Offset
!Type
!Max Value
!Description
|-
| Item ID || 1 || 0x01 || uint8 || 0xBF || Item to be sold
|-
|}
==Magic Shop Data Structure==
*Magic Shop Data data starts at 0x0062258C and ends at 0x622617 in the ROM.
*There are 35 entries, 4 bytes in length each.
*Prices are not stored in this table. They are stored in the abilities table.
*If the spell is set to the index of an ability, it will not appear.
*The last entry is a termination of (0xff,0xff,0x00,0x00) starting at 0x622614
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
|- style="background: #ccccff;"
!Name
!Length
!Offset
!Type
!Max Value
!Description
|-
| Availabilty || 1 || 0x00 || uint8 || ?? || How far into the story the spell first appears in the shop
|-
| Spell ID || 1 || 0x01 || uint8 || 0x7E || Spell to be sold
|-
| Unknown || 1 || 0x02 || uint8 || Unknown || Unknown entry. Always 0
|-
| Unknown || 1 || 0x03 || uint8 || Unknown || Unknown entry. Always 0
|-
|}
==Unit List Data Structure==
*Data starts at 0x00769130 and ends at 0x0076F66F in the ROM.
*There are 810 entries, 32 bytes in length each.
*This table contains the information on each unit that appears in the game
*It is not yet known how each map determines which units appear, however the units are listed in order.
{| style="border: 1px solid #aaaaaa; margin: auto; border-collapse: collapse;" cellspacing="0" cellpadding="3" border="1"
|- style="background: #ccccff;"
!Name
!Length
!Offset
!Type
!Max Value
!Description
|-
| Character || 1 || 0x00 || uint8 || ?? || If the unit is a special character. 0x01 if they are not. See the character table for more info.
|-
| Level || 1 || 0x01 || uint8 || 50 || Character level
|-
| Level Scaling || 1 || 0x02 || uint8 || 0x04 || Causes level to scale based on party level (needs confirmation)
|-
| Unknown || 1 || 0x03 || uint8 || 0xff || Unknown entry. Always 0xff
|-
| Item 1 || 1 || 0x04 || uint8 || 0xBF || Item in 1st slot
|-
| Item 2 || 1 || 0x05 || uint8 || 0xBF || Item in 2nd slot
|-
| Item 3 || 1 || 0x06 || uint8 || 0xBF || Item in 3rd slot
|-
| Item 4 || 1 || 0x07 || uint8 || 0xBF || Item in 4th slot
|-
| Spell 1 || 1 || 0x08 || uint8 || 0x7F || Spell/ability in 1st slot
|-
| Spell 2 || 1 || 0x09 || uint8 || 0x7F || Spell/ability in 2nd slot
|-
| Spell 3 || 1 || 0x0A || uint8 || 0x7F || Spell/ability in 3rd slot
|-
| Spell 4 || 1 || 0x0B || uint8 || 0x7F || Spell/ability in 4th slot
|-
| Emblems 1 || 1 || 0x0C || uint8 || 0xff || Bitfield of emblems in 1st row
|-
| Emblems 2 || 1 || 0x0D || uint8 || 0xff || Bitfield of emblems in 2nd row
|-
| Emblems 3 || 1 || 0x0E || uint8 || 0xff || Bitfield of emblems in 3rd row
|-
| Emblems 4 || 1 || 0x0F || uint8 || 0xff || Bitfield of emblems in 4th row
|-
| Class || 1 || 0x10 || uint8 || 0x54 || class.
|-
| Element || 1 || 0x11 || uint8 || 0x06 || Element.
|-
| Alignment || 1 || 0x12 || uint8 || 0x03 || Alignment.
|-
| Gender || 1 || 0x13 || uint8 || 0x03 || Gender.
|-
| Unknown || 1 || 0x14 || uint8 || Unknown || Unknown (Value Varies).
|-
| Drop || 1 || 0x15 || uint8 || 0xBF/0x7F || Spell or item to drop on defeat.
|-
| Drop Type || 1 || 0x16 || uint8 || 0x03 || 0=None, 2=Item, 3=Spell.
|-
| Unknown || 1 || 0x17 || uint8 || Unknown || Unknown (Value Varies).
|-
| Unknown || 1 || 0x18 || uint8 || Unknown || Unknown (Value Varies).
|-
| X Position || 1 || 0x19 || uint8 || Depends on map || X0,Y0 is top corner square. 
|-
| Y Position || 1 || 0x1A || uint8 || Depends on map || X increases to bottom right, Y increases to bottom left
|-
| Unknown || 1 || 0x1B || uint8 || Unknown || Unknown (Value Varies 0-3).
|-
| Team/Role || 1 || 0x1C || uint8 || Unknown || 0=Ally, 1=Leader, 2=Guest 0x80=Enemy, 0x81=Enemy Leader
|-
| Unknown || 1 || 0x1D || uint8 || Unknown || Unknown (Value Varies 0-3).
|-
| Unknown || 1 || 0x1E || uint8 || Unknown || Unknown (Value Varies 0-3).
|-
| Unknown || 1 || 0x1F || uint8 || 0xff || Unknown (always 0xff).
  |-
  |-
|}
|}

Latest revision as of 02:42, 24 January 2024

Chip tiny.png The following article is a ROM map for Tactics Ogre: The Knight of Lodis.

Overall ROM Map

Name Start End Number of Entries Size Per Entry Total Size
Prizes/Random Treasures 0x61D8A0 0x61D99F 256 1 256
Hire Shop 0x622494 0x6224E3 10 8 80
Item Shop 0x6224E4 0x622583 40 4 160
Secret Shop 0x622584 0x62258B 8 1 8
Magic Shop 0x62258C 0x622617 35 4 140
Unit List 0x769130 0x76F66F 35 32 810



Data Structures

  • Some tables have unknown data bytes at the beginning/end, its possible these tables are offset from there true position.
  • Many tables have an empty entry at the beginning for 'None'. Not all tables have this taken into account yet. If a table has an odd number of entries, this is likely the case.


Prizes/Random Treasures Table

  • Data starts at 0x0061D8A0 and ends at 0x0061D99F in the ROM.
  • There are 256 entries, 1 bytes in length each.
  • The first 108 bytes are random treasures (picked up when moving onto a map square).
    • Divided into 3 groups. Higher groups have better treasures.
    • The groups contain 10,13, and 13 entries respectively.(This needs to be confirmed)
    • When an item is picked up, a random entry is selected.
    • Each entry has 3 items, one for each of low, medium and high biorythm.
  • Next are Quest rewards, starting at 0x0061D90C
    • Divided into 10 groups of 8 items each
    • Lower groups are better. Group is improved by beating harder quests, faster.
    • Items are randomly selected among the group
  • Next are VS. Mode rewards, starting at 0x0061D94C
    • 64 Items total
    • Unknown how this functions.

Hire Shop Data Structure

  • Data starts at 0x00622494 and ends at 0x006224E3 in the ROM.
  • There are 10 entries, 8 bytes in length each.
  • It's unknown how the game decides which entry to use. (e.g. Mermaids only in Rana, Giants only later in the game, random class every time, etc...)
  • There is no termination data at the end of the table. The length must be hardcoded somewhere else.
Name Length Offset Type Max Value Description
Class ID 1 0x00 uint8 0x54 Class to hire
Unknown 1 0x01 uint8 Unknown Unknown entry. Always 0
Cost 2 0x02 uint16 ?? Base cost to hire the unit
Per Level Cost 2 0x04 uint16 ?? Adds this much gold to the cost per extra level bought
Unknown 1 0x06 uint8 Unknown Unknown entry. Always 0
Unknown 1 0x07 uint8 Unknown Unknown entry. Always 0


Item Shop Data Structure

  • Data starts at 0x006224E4 and ends at 0x00622583 in the ROM.
  • There are 40 entries, 4 bytes in length each.
  • Prices are not stored in this table. They are stored in the item table.
  • The last entry is a termination of (0xff,0xff,0x00,0x00) starting at 0x622580
Name Length Offset Type Max Value Description
Availabilty 1 0x00 uint8 ?? How far into the story the item first appears in the shop
Item ID 1 0x01 uint8 0xBF Item to be sold
Unknown 1 0x02 uint8 Unknown Unknown entry. Always 0
Unknown 1 0x03 uint8 Unknown Unknown entry. Always 0


Secret Item Shop Data Structure

  • The secret shop becomes available in Scabellum after recruiting Deneb
  • Data starts at 0x00622584 and ends at 0x0062258C in the ROM.
  • There are 7 entries, 1 bytes in length each.
  • Prices are not stored in this table. They are stored in the item table.
  • The last entry is a termination of (0xff) at 0x0062258C
Name Length Offset Type Max Value Description
Item ID 1 0x01 uint8 0xBF Item to be sold


Magic Shop Data Structure

  • Magic Shop Data data starts at 0x0062258C and ends at 0x622617 in the ROM.
  • There are 35 entries, 4 bytes in length each.
  • Prices are not stored in this table. They are stored in the abilities table.
  • If the spell is set to the index of an ability, it will not appear.
  • The last entry is a termination of (0xff,0xff,0x00,0x00) starting at 0x622614
Name Length Offset Type Max Value Description
Availabilty 1 0x00 uint8 ?? How far into the story the spell first appears in the shop
Spell ID 1 0x01 uint8 0x7E Spell to be sold
Unknown 1 0x02 uint8 Unknown Unknown entry. Always 0
Unknown 1 0x03 uint8 Unknown Unknown entry. Always 0


Unit List Data Structure

  • Data starts at 0x00769130 and ends at 0x0076F66F in the ROM.
  • There are 810 entries, 32 bytes in length each.
  • This table contains the information on each unit that appears in the game
  • It is not yet known how each map determines which units appear, however the units are listed in order.
Name Length Offset Type Max Value Description
Character 1 0x00 uint8 ?? If the unit is a special character. 0x01 if they are not. See the character table for more info.
Level 1 0x01 uint8 50 Character level
Level Scaling 1 0x02 uint8 0x04 Causes level to scale based on party level (needs confirmation)
Unknown 1 0x03 uint8 0xff Unknown entry. Always 0xff
Item 1 1 0x04 uint8 0xBF Item in 1st slot
Item 2 1 0x05 uint8 0xBF Item in 2nd slot
Item 3 1 0x06 uint8 0xBF Item in 3rd slot
Item 4 1 0x07 uint8 0xBF Item in 4th slot
Spell 1 1 0x08 uint8 0x7F Spell/ability in 1st slot
Spell 2 1 0x09 uint8 0x7F Spell/ability in 2nd slot
Spell 3 1 0x0A uint8 0x7F Spell/ability in 3rd slot
Spell 4 1 0x0B uint8 0x7F Spell/ability in 4th slot
Emblems 1 1 0x0C uint8 0xff Bitfield of emblems in 1st row
Emblems 2 1 0x0D uint8 0xff Bitfield of emblems in 2nd row
Emblems 3 1 0x0E uint8 0xff Bitfield of emblems in 3rd row
Emblems 4 1 0x0F uint8 0xff Bitfield of emblems in 4th row
Class 1 0x10 uint8 0x54 class.
Element 1 0x11 uint8 0x06 Element.
Alignment 1 0x12 uint8 0x03 Alignment.
Gender 1 0x13 uint8 0x03 Gender.
Unknown 1 0x14 uint8 Unknown Unknown (Value Varies).
Drop 1 0x15 uint8 0xBF/0x7F Spell or item to drop on defeat.
Drop Type 1 0x16 uint8 0x03 0=None, 2=Item, 3=Spell.
Unknown 1 0x17 uint8 Unknown Unknown (Value Varies).
Unknown 1 0x18 uint8 Unknown Unknown (Value Varies).
X Position 1 0x19 uint8 Depends on map X0,Y0 is top corner square.
Y Position 1 0x1A uint8 Depends on map X increases to bottom right, Y increases to bottom left
Unknown 1 0x1B uint8 Unknown Unknown (Value Varies 0-3).
Team/Role 1 0x1C uint8 Unknown 0=Ally, 1=Leader, 2=Guest 0x80=Enemy, 0x81=Enemy Leader
Unknown 1 0x1D uint8 Unknown Unknown (Value Varies 0-3).
Unknown 1 0x1E uint8 Unknown Unknown (Value Varies 0-3).
Unknown 1 0x1F uint8 0xff Unknown (always 0xff).