Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Graal: The Adventure/ROM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Graal: The Adventure.

Warp Data

Before the NPC data is the warp data, with coordinates that seem to make weird a combination.


0B1F0A01FF01 seems to be all coordinates data.

It might mimick PC Graal's warp data, so I compare both

 (NX & NY means New X and New Y when the new map is loaded, aka, where you end up.)

Which seems to be it. FF for NX may mean the old X.

03 is the Map # where you warp. Change it to change where the map warps.

00 seems to make the map corrupt when set to 01... Map Bank, perhaps?

NPC Data

Usually comes directly after Palette and Exit Data. I am still trying to find a pattern so we can edit and find NPCs easily.

Level 2 - Crystal Tree Thing:

  • 1188D = NPC #1 Direction
  • 1188E = NPC #1 Appearance
  • 11892 = NPC #1 Walk or not (0/1)

Level 3 - Waterfall doesn't Belong here:

  • 1483F = Sign # (Which Sign do they say when they are touched. It's somewhat based on PC version's way of NPC talking.)

Level 6 - Two Baddies:

  • 120BB = Top NPC's Appearance

Level 3's Exit and NPC Data Analysis (Non Moving, Can't Hurt, triggers sign when touched)

 0C1F0901FF01020006001901FF1F0600 ; This all seems to affect warp zones. The last 00 might be the sign's index number.
 20202020202020202020202020202020 ; Sign Spaces, used to make it centered
 20202020202020283F4646495F202020 ; "Hello!"
 2020202000000010481A050206030100 ; Spaces, ends with 00s... 
 000021012280030000190B0003030100 ; This slab must be the NPCs
 000021012280030000040B0306030100 ; as they all are nearly identical "030100" seems to start a new NPC.
 00002101228003000000400000020048 ; other than a few digits.
 013548033948                     ; Unknown

Level 4's Exit and NPC Data Analysis (Moving, Can Hurt)

 061F1901FF0105000B1002010C1C0100 ; Again, this is Warping, The 00 is still at the end.
 20202020202020202020202020202020 ; Spaces for the sign, again
 202034423B4E674D2053494F4C204249 ; Sign stuff, again
 4F4D3F5F0006168650171A01050301FF ; Unknown... "0301FF" at the end must be part of the NPC data.
 010021012280030000091303040301FF ; Noticeably similar to above's NPC data
 01002101228003000076480000027650 ; With differences.

Level 6's Exit and NPC Data Analysis (Hostile, Can Hurt)

 0B000A01FF1F04000B1F0A01FF010000 ; Warping, etc.
 100503010301FF020C150122A1030000 ; Half-way, Hostile NPC Data.
 101202040301FF010C15012281030000 ; Hostile NPC data

Comparing the first two together

So in thoery, full NPC data looks like this:

 (In bold is changed values)
  • 030100 or 0301FF are always before an npc. Probably to define that it is an NPC.
    • 00 and FF are unknown switches At the Moment.
  • 01 means walk, while 00 means to stand in place.
  • 00 is nothing? it doesn't affect anything when it's 01. Probably needs another value to be 01.
  • 190B, listed above, is Coordinates when the level is loaded.

* The last 4 digits, listed above are 0003, they are different for all NPC, not sure what it does.

The last four digits:

  • The first two digits are the direction they are facing.
  • The last two digits seem to be a appearance modifier.

Comparing Hostile VS. Nice NPC

We learned in Comparing the first two nice NPCs, nothing was a whole lot of different. 0301XX starts the NPC. So, let's compare an NPC that attacks you to one that just walks:

 (Walking on top, Hostile on bottom)

I now note the values that are bolded. From left to right.

  • Right off the bat, I noticed the "walk" value is now 02, which probably means, walk and kill.
  • The Previously unknown value 00 is now 0C, probably contributes to the Hostility.
  • Unknown 21 is now 15
  • Unknown 80 is now A1

After testing, I came up with the following answers:

  • Changing 02 to 01 did nothing, he walks anyway.
  • Changing 0C back to 00 and 15 back to 21 seemed to make him unhostile. ; SUCCESS!
  • Changing A1 back to 80 seemed to make him take off his shield. ; Extra Bonus

So, now the NPC Data should be as follows.

  • 0301** = Some type of Header, ** can be 00 or FF.
  • ** = 00 stands, 01 walks, 02 walks?
  • **** = 0021 is normal, 0C15 is Hostile
  • 0122 = Unknown, all NPC have it.
  • ** = 80 No Shield, A1 Shield
  • 030000 = Unknown, all NPC have it.
  • **** = XXYY initial Coordinates on map load.
  • ** = Initial Direction on map load.
  • ** = NPC Appearance

Level Data

  • 10000 = Level data officially starts, with 0E unknown bytes.
  • It's confirmed that it's not a header, Level 3 doesn't have any 0xE before.

Every Level is a total of 0x400 bytes starting at the starting point for tiles and palettes/properties.

Level 1 - Starting Point:

  • 1000E = Start of Tiles GFX
  • 1040E = Start of Palette

Level 2 - Crystal Tree Thing:

Level 3 - Waterfall shouldn't be there:

  • 14000 = Start of Tiles GFX
  • 14400 = Start of Palette

Level 4 - Two NPCs and a house

  • 14876 = Start of Tiles GFX
  • 14C76 = Start of Palette

Level 6 - Two Baddies

  • 118A8 = Start of Tiles GFX
  • 11CA8 = Start of Palette

How it's numbered

 LEVELS ARE NUMBERED AS FOLLOWS (Location to number, etc.)
 7 4
 6 3
 1 2
 Level 2 is the Crystal, etc.

How levels are made

Each level is 0x400 bytes for both tiles and palette/properties.

Each level should look like this:


1F Hex Values wide, 1.00 KB in size. Each Hex Value is a new 8x8 tile. To make a bush, in the map, put in the following:


That will produce a File:Graalbush.png

How Palettes and Properties work

Much like the Tileset of a map, Palettes are also 0x400 bytes. However, they define Horozonal Flip and color in a byte and basically correspond to the tile map. So 1,1 in the tile map would be 1,1 in the palette map, etc..

To make a simple green tile: In the tile of choice, put in 00

To make a simple flipped green tile: In the tile of choice, put in 20

Meaning, the first digit is the property, the second digit is the palette.