Graal: The Adventure/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Replacing page with 'Moved to Notes, brb.')
Line 1: Line 1:
==Warp Data==
Moved to Notes, brb.
 
Before the NPC data is the warp data, with coordinates that seem to make weird a combination.
 
  0B1F0A01FF010300
 
0B1F0A01FF01 seems to be all coordinates data.
 
It might mimick PC Graal's warp data, so I compare both
 
  0B1F0A01FF01
  XXYYWWHHNXNY
 
  (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.
  01AB5002AF50
 
===Level 6's Exit and NPC Data Analysis (Hostile, Can Hurt)===
  0B000A01FF1F04000B1F0A01FF010000 ; Warping, etc.
  100503010301FF020C150122A1030000 ; Half-way, Hostile NPC Data.
  101202040301FF010C15012281030000 ; Hostile NPC data
  A858000002A86000000002B860
 
===Comparing the first two together===
So in thoery, full NPC data looks like this:
 
  030100'''0000'''21012280030000'''190B0003'''
  (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.
<strike>* The last 4 digits, listed above are 0003, they are different for all NPC, not sure what it does.</strike>
 
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:
 
  0301FF'''010021'''0122'''80'''03000009130304
  0301FF'''020C15'''0122'''A1'''03000010120204
  (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.
 
  59486E509B58D860DF696948CF50
 
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.)
 
    5
  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:
 
  0A0000000000000000000000000000494848490000000000000000000000000A
  0800000102000000000000000000004948484900000000000000000000000008
  0A0000000000000000000000000000494848490000000000000000000000000A
  0800000000000000000000000000004948484900000001020000000000000008
  0A0000000000000000000000000000494848490000000000005B5B000000000A
  080000000000000000000000010200494848490000000000005C5C0001020008
  0A0000000000000000000000000000494848490000005558585858550000000A
  08000000000000000000010200000049484849005B5B56595959595600000008
  0A000000005558585858550000000049484849005C5C5659595959560000000A
  08000000005659595959560000000049484849000000575A5A5A5A5700000008
  0A00005B5B565959595956000000004948484900000000005B5B00000000000A
  0800005C5C565959595956000000004948484900000000005C5C000000000008
  0A0000000056595959595600000000494848490000000000000000000000000A
  0800000000575A5A5A5A57000000004948484900000000000000000000000008
  0A00000000005B5B00000000000000494848490000000000000000000000000A
  0800000000005C5C000000000000004948484900000000000000000000000008
  0A0000000000000000000000000000494848490000000000010200191A00000A
  0800191A00000000000000000000004948484900000000000000001B1C000008
  0A001B1C000000000000000000000049484849000000000000191A000000000A
  080000000000000000010200000000494848490000000000001B1C0000000008
  0A0000191A000000000000000000004948484900000000000000191A0000000A
  0800001B1C00010200000000003F4245454545423F00000000001B1C00000008
  0A00000000000000000000003F40434646464643403F0000000000000000000A
  083F3F3F3F3F3F3F3F3F3F3F404044494848494440403F3F3F3F3F3F3F3F3F08
  0A4040404040404040404040404000494848490040404040404040404040400A
  0840404040404040404040404040004948484900404040404040404040404008
  0A4040404040404040404040404000494848490040404040404040404040400A
  08404040404040404040404040414C4C4C4C4C4C414040404040404040404008
  0941414141414141414141414100004948484900004141414141414141414109
  88898A8A898888898A8A898800000049484849000088898A8A898888898A8A89
  8586878786858586878786858400004948484900848586878786858586878786
  8182838382818182838382818000004948484900808182838382818182838382
 
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:
 
  191A
  1B1C
That will produce a
[[image: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.

Revision as of 19:23, 26 February 2009

Moved to Notes, brb.