JeffLudwig.com
GOG.com

Items

The Item List, by ID

Here is the exhaustive list of all usable items in FF1-DoS. There are a total of 43 items, denoted as 0×01 through 0×2b.

0×01 Potion Hi-Potion X-Potion Ether
0×05 Turbo Ether Dry Ether Elixir Megalixir
0×09 Phoenix Down Remedy Antidote Gold Needle
0×0d Eye Drops Echo Grass Emergency Exit Sleeping Bag
0×11 Tent Cottage Spider’s Silk White Fang
0×15 Red Fang Blue Fang Light Curtain Red Curtain
0×19 White Curtain Blue Curtain Lunar Curtain Herme’s Shoes
0×1d Vampire Fang Cockatrice Claw Giant’s Tonic Faerie Tonic
0×21 Strength Tonic Protect Drink Speed Drink Golden Apple
0×25 Silver Apple Soma Drop Power Plus Stamina Plus
0×29 Mind Plus Speed Plus Luck Plus  

Item Data

Table location: 0×19f08c0×19f33b.

Data structure size: 16 bytes

Example: Potion

00 00 0d 10 04 01 32 00 28 00 00 00 14 00 00 00
Item # Effect Target When Used Graphic Power Purchase cost Selling cost

Decoding various bytes of information

Effect (1 byte)

For the potion, this byte is 0d. This byte controls the effect that the item has when used:

  • 00- References Sleeping Bag/Tent/Cottage. The Power byte references which one of those three the item acts as.
  • 01- Maximum HP increases by 1st Power byte * 10.
  • 02- Maximum MP increases by 1st Power byte.
  • 03- Strength increases by a random number from 1 to a number specified by the 1st Power Byte.
  • 04- Stamina increases by a random number from 1 to a number specified by the 1st Power Byte.
  • 05- Intellect increases by a random number from 1 to a number specified by the 1st Power Byte.
  • 06- Agility increases by a random number from 1 to a number specified by the 1st Power Byte.
  • 07- Luck increases by a random number from 1 to a number specified by the 1st Power Byte.
  • 08- Giant Tonic
  • 09- Faerie Tonic
  • 0a- Strength Tonic
  • 0b- Protect Drink
  • 0c- Speed Drink
  • 0d- HP increase (up to maximum)
  • 0e- MP increase (up to maximum)
  • 0f- HP/MP maximum. The first Power byte is the target; if 00, it only heals one character, but if 01, it cures all characters.
  • 10- Raise character from death (Phoenix Down)
  • 11- Cure multiple conditions (Remedy)
  • 12- Same effect as Spell ID. The 1st Power byte becomes the Spell ID to reference.

Target (1 byte)

How the spell is targeted in game. It will be one of these five values:

  • 01- All enemies
  • 02- One enemy
  • 04- Caster
  • 08- All allies
  • 10- One ally

When Used (1 byte)

Determines when the item can be used.

  • 01- While traveling only
  • 02- In battle only
  • 04- Anytime

Graphic (1 byte)

Determines the graphic displayed when the item is used.

Pointer mayhem

Beginning at 0×07e954 and ending at 0×07e9c7, there is a list of 0×1d, or 29 pointers that pertain to spells that are bound to items of the same ID. Spell 01‘s (Cure) pointer is found at 0×07e954, spell 02‘s (Dia) pointer is found at 0×7e958, etc.

If an item’s pointer is c8e90708, this spell cannot be used in the status screen. If the pointer is 08ea0708, it can.

0×07e9d2— Check for Exit spell: 2816: cmp r0, #0×16

0×07e9d6— Check for Teleport spell: 2833: cmp r0, #0×33

Other information that may not be obvious

It is important to note that I have not figured out all the information that there is to know about armor. So there’s an avenue for intrepid hackers to possibly learn something new.

ludmeister

Date published: 2011-12-01

Leave a comment ->

  1. Under ‘Other Information’, there appears to be a typo. You mentioned you haven’t figured out all the info that there is to know about “ARMOR”. This page is after all, items. Also, n00b question while I’m typing.

    Is there a way to move all the item data to free space in the ROM, and replace the old data with whatever for additional space from the previous coding in the ROM? Like values and/or aspects of code right before 19F80C?

    — Sting_Chameleon · May 4, 07:25 PM · #

  2. Yes, absolutely. You can place your data tables anywhere in the ROM that you wish, and the Mod of Balance does this often. As you said, you just need to take care that you find all the pointer references to the data table that you moved and “re-route” them, so to speak.

    ludmeister · May 8, 09:49 AM · #