øA slickproductions.org /forum/index.php?PHPSESSID=1a1fn35tn22svp8j2c39ef7t80&action=printpage;topic=1866.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index01ca-2.html layed slickproductions.org /forum/index.php?topic=1866.15 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index01ca-2.html.z x aÊh^ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ 0P. æ OK text/html ISO-8859-1 gzip @øÕ æ ÿÿÿÿÿÿÿÿ ÑH Wed, 11 Mar 2020 11:40:42 GMT 0ó° °® 0® P® €§² ð® aÊh^ ÿÿÿÿÿÿÿÿæ@ æ
World Map row pointers are located at B0200-B067F
- How (and where) are the overworld maps stored?
99 FF FFWhich means:99 FF - tile 99 (ocean with no shore) 255 times
FF - end rowThe 20th row of the overworld (the first that is not all ocean) reads:99 2F 1C 1B 99 CD FFWhich means:99 2F - tile 99 (ocean with no shore) 47 times
1C - tile 1C (ocean with a tiny speck of shore in the lower-right corner, single because bit 7 is 0)
1B - tile 1B (ocean with a tiny speck of shore in the lower-left corner, single because bit 7 is 0)
99 CD - tile 99 (as above) 205 times
FF - end rowI haven't seen documentation of the order of tiles within the tilesets (like an Overworld version of the map editor in Phoenix's FF Tools), but a person with enough time and the proper motivation could do this pretty easily.my thread on world map triggers is here:
- How are the overworld events handled?
- How are the overworld teleporters/entrances handled?
I'm not sure I fully understand the question... I think the answer is yes, with the exceptions of all of the ways the Underworld and Moon typically differ from the Overworld.
- Are the underworld and moon surface indeed handled the same way as the "upper world" overworld?
| BYTE 0 ------ Bit 0: Walkable, ground level Bit 1: Chocobo can walk (Can only dismount if also walkable) :edit: Also, airships can fly over only if event flag 57 is set Bit 2: Black chocobo can fly over Bit 3: Black chocobo can land (shadow will be partially obscured during flight, bottom half of chocobo is always obscured when it lands, does not have to be coupled with "walkable," but you won't be able to do anything upon landing) Bit 4: Hovercraft can travel (Can only land if also walkable) Bit 5: Airship can fly over Bit 6: Walkable, plateau level Bit 7: Lunar Whale can fly over BYTE 1 ------ Bit 0-2: Battle Background 000: Overworld Field 001: Beach 010: Forest 011: Desert 100: Underworld Field 101: Moon Surface 110: Inside moon cave, instant death 111: Forest Bit 3: Obscures lower half of body Bit 4: Airship/Lunar Whale can land (Does not have to be "walkable," but you won't be able to do anything) Bit 5: (?) Unused Bit 6: Encounters possible Bit 7: Trigger tile |
There are a few weird things about the airships that I don't quite understand how they work (yet?).
- The Falcon's Drill, which is really just cosmetic, its "function" is all event driven
- The Highwind's Hovercraft crane
- The first time the Highwind goes underground
- there's an automatic event in which you are caught in a crossfire between the Red Wings and the Dwarves' tanks
- it's unusable until the event in which Cid fixes it
Great work Vehek! That all looks like very malleable parts. It is interesting to see that there are two tops to the Tower of Bab-il which means two of those spaces should be unused.All four tiles are used. The ones with grass behind them are for the tallest tower, the black ones are for the two towers that end "in" the ravine. (The underworld duplicates likely have different blocking properties for the airship, so you can't fly up the tower graphics)
Do you know of a program that is capable of editing world map tiles? Tile Layer doesn't seem to be able to view them properly.I haven't checked Tile Layer yet, but are you using the correct tile encoding, since it's not in 4BPP SNES? The tile format is called 4BPP GBA in YY-CHR.
Obviously there are quite a few unused tiles in the Underworld and Moon tilesets (and one in the Overworld). It would be great to be able to change the graphics of these tiles and actually put them to use.I wouldn't say there are really that many available. Keep in mind that each 16x16 tile is made up of 4 8x8 tiles. There are very few unused 8x8 tiles, if any. Except for the moon, which doesn't have a full set of 256 8x8 tiles. While it's possible to turn those unused 16x16 tiles into new combinations of the 8x8 tiles, there probably aren't enough unused 8x8 tiles to insert many new graphics into.
I wouldn't say there are really that many available. Keep in mind that each 16x16 tile is made up of 4 8x8 tiles. There are very few unused 8x8 tiles, if any. Except for the moon, which doesn't have a full set of 256 8x8 tiles. While it's possible to turn those unused 16x16 tiles into new combinations of the 8x8 tiles, there probably aren't enough unused 8x8 tiles to insert many new graphics into.I was afraid you'd say that :lame:
| Location X, Y, Map, New X, New Y, OVERWORLD Baron Castle(NW) 65,9C Baron Castle(24) 10,1E Baron Castle(NE) 66,9C Baron Castle(24) 10,1E Baron Castle(SW) 65,9D Baron Castle(24) 10,1E Baron Castle(SE) 66,9D Baron Castle(24) 10,1E Baron Town(NW) 64,9D Baron Town(00) 10,1E Baron Town(SW) 64,9E Baron Town(00) 10,1E Baron Town(NE) 67,9D Baron Town(00) 10,1E Baron Town(SE) 67,9E Baron Town(00) 10,1E Mist Cave(S) 4C,84 Mist Cave(6C) 02,1C Mist Cave(N) 54,77 Mist Cave(6C) 9B,03 Mist Village(W) 60,77 Mist Village(01) 43,10 Mist Village(E) 61,77 Mist Village(01) DC,10 Kaipo 7D,68 Kaipo(02) 0F,1E Watery Pass(S) 8A,53 Watery Pass-South(6F) 1A,1D Watery Pass(N) 8A,4D Watery Pass-North(73) 98,09 Waterfalls(N) 86,48 Waterfalls(74) 90,09 Waterfalls(S) 7D,42 Waterfall 2F(76) 90,0B Damcyan Trigger 77,3E Event Call 10(FF) N/A Damcyan Castle(NW) 76,3A Damcyan Castle(25) 10,1E Damcyan Castle(NE) 77,3A Damcyan Castle(25) 10,1E Damcyan Castle(SW) 76,39 Damcyan Castle(25) 10,1E Damcyan Castle(SE) 77,39 Damcyan Castle(25) 10,1E Antlion Cave 88,38 Antlion Cave 1F(77) 8F,04 Mt. Hobs(W) 98,31 Mt. Hobs-West(7E) 0F,1C Mt. Hobs(E) A0,31 Mt. Hobs-East(80) 15,1E Fabul Castle(NW) D6,3A Fabul Castle(26) 0F,1D Fabul Castle(NE) D7,3A Fabul Castle(26) 0F,1D Fabul Castle(SW) D6,39 Fabul Castle(26) 0F,1D Fabul Castle(SE) D7,39 Fabul Castle(26) 0F,1D Fabul Docks DD,38 Event Call 2B(FF) N/A Mysidia(W) 9A,C7 Mysidia(03) 10,1F Mysidia(E) 9B,C7 Mysidia(03) 10,1F Mt. Ordeals DA,C7 Mt. Ordeals 1F(84) 14,1F Troia Castle(NW) 22,52 Troia Castle (27) 10,1D Troia Castle(NE) 23,52 Troia Castle (27) 10,1D Troia Castle(SW) 22,51 Troia Castle (27) 10,1D Troia Castle(SE) 23,51 Troia Castle (27) 10,1D Troia Town(W) 23,53 Troia Town(05) 10,1C Troia Town(E) 23,54 Troia Town(05) 10,1C Troia Town(SE) 24,54 Troia Town(05) 10,1C Cave Magnes 4A,35 Cave Magnes 1F(8C) 85,07 Eblan Castle (NW) 2D,EB Eblan Castle(28) 10,1F Eblan Castle (NE) 2E,EB Eblan Castle(28) 10,1F Eblan Castle (SW) 2D,EC Eblan Castle(28) 10,1F Eblan Castle (SE) 2E,EC Eblan Castle(28) 10,1F Cave Eblan 18,E7 Eblan Cave(C7) 8A,04 Agart(NW) 68,D7 Agart(06) 10,1F Agart(SE) 69,D8 Agart(06) 10,1F Silvera D2,82 Silver(04) 11,1E Adamant Grotto DB,88 Adamant Grotto(A0) 07,14 Giant of Babil 21,DB Giant of Babil Mouth(B5)0C,05 ?Airship? 22,DB Airships with Soldiers(C0)8C,11 Fabul Chocobo Forest E4,2F Chocobo Forest(CF) 08,0B Mt. Ordeals Cho. Frst. D5,D1 Cho. Frst(D1) 08,0B Baron Chocobo Forest 59,A3 Chocobo Forest(D2) 08,0B Troia Chocobo Forest 22,65 Chocobo Forest(D3) 08,0B Island chocobo Forest 56,4F Chocobo Forest(D4) 08,0B Large Troia Forest 29,35 Chocobo Forest(21) 08,1E UNDERWORLD Dwarf Castle(NW) 63,52 Dwarf Castle(07) 0F,1E Dwarf Castle(SW) 63,52 Dwarf Castle(07) 0F,1E Dwarf Castle(NE) 63,51 Dwarf Castle(07) 0F,1E Dwarf Castle(SE) 64,51 Dwarf Castle(07) 0F,1E Dwarf Base 5B,53 Dwarf Base(0F) 03,0E Dwarf Tank Trigger1 30,0F Event Call 58(FF) N/A Dwarf Tank Trigger2 31,0F Event Call 58(FF) N/A Smithy's House 68,7B Smithy's House(00) 06,0B Tomra(W) 3E,79 Tomra(01) 11,1B Tomra(E) 3F,79 Tomra(01) 11,1B Tomra(SE) 3F,7A Tomra(01) 11,1B Sylvan Cave 0D,0E Sylvan Cave 1F(45) 90,02 Sealed Cave 2E,6D Sealed Cave(44) 04,0A Land of Monsters 1B,56 Land of Monsters(36) 91,0A Babil Trigger1 37,14 Event Call 36(FF) N/A Babil Trigger2 36,11 Event Call 36(FF) N/A Babil Trigger3 33,10 Event Call 36(FF) N/A ----------------------------------------------------------- MOON Bahamut's Cave 3D,17 Bahamut's Cave 1F(5A) 88,07 Lunar Palace 1C,19 Lunar Palace Lobby(60) 10,1C First Lunar Path(N) 12,14 Lunar Path(63) 0C,1E First Lunar Path(S) 12,0E Lunar Path(63) 93,05 2nd Lunar Path(S) 29,18 Lunar Path(64) 95,06 2nd Lunar Path(N) 28,1C Lunar Path(64) 09,19 Hummingways 21,27 Hummingways(65) 0A,10 |
$15/B3EA AD 01 17 LDA $1701 [$15:1701]; load current map
$15/B3ED D0 06 BNE $06 [$B3F5] ; if not 00, skip the following three ops
$15/B3EF A5 AD LDA $AD [$00:06AD]
$15/B3F1 C9 10 CMP #$10 ; (don't know, but it's irrelevant for this discussion)
$15/B3F3 F0 03 BEQ $03 [$B3F8] ; jump to sprite loading code (note that this is one of the ops skipped if current map is not 00)
$15/B3F8 AD 04 17 LDA $1704 [$15:1704]; load current mode of transport
$15/B3FB C9 01 CMP #$01 ; is is chocobo?
$15/B3FD F0 27 BEQ $27 [$B426] ; if so, skip to chocobo sprite loading routine
$15/B3EA AD 01 17 LDA $1701 [$15:1701]; load current map
$15/B3ED D0 06 BNE $06 [$B3F5] ; if not 00, skip to 15b3f5
$15/B3F5 4C B5 B4 JMP $B4B5 [$15:B4B5]; jump to 15b4b5
$15/B4B5 AB PLB
$15/B4B6 6B RTL ; end
vehicle index travelability byte default value
-------------- -- ---- --
Yellow Chocobo 01 2AE7 02
Black Chocobo 02 2AE8 04
Hovercraft 03 2AE9 10
Enterprise 04 2AEA 20
Falcon 05 2AEB 20
Big Whale 06 2AEC 80
Ship 07 2AED FF
$00/AA05 AD 04 17 LDA $1704 [$00:1704]; load current method of transportation
$00/AA08 C9 05 CMP #$05 ; is it Falcon?
$00/AA0A D0 0C BNE $0C [$AA18] ; if not, skip to next check
$00/AA18 C9 04 CMP #$04 ; is it Enterprise?
$00/AA1A D0 0C BNE $0C [$AA28] ; if not skip to travelability check
$00/AA1C AD 81 12 LDA $1281 [$00:1281]
$00/AA1F 29 04 AND #$04 ; check if "Yang Destroyed Cannon" flag is set (I guess after this point, the Enterprise is ready to fly underground)
$00/AA21 F0 05 BEQ $05 [$AA28] ; if not, skip to travelability check
$00/AA23 A9 01 LDA #$01 ; if so, then for the sake of travelability check, pretend we're on a yellow chocobo
$00/AA25 4C 2D AA JMP $AA2D [$00:AA2D]; jump to travelability check
$00/AA05 AD 04 17 LDA $1704 [$00:1704]; Load current method of transportation
$00/AA08 C9 05 CMP #$05 ; is it Falcon?
$00/AA0A D0 0C BNE $0C [$AA18] ; if not, skip to next check
$00/AA0C AD 87 12 LDA $1287 [$00:1287]
$00/AA0F 29 02 AND #$02 ; check if "Heat Shielding the Falcon" flag is set
$00/AA11 F0 15 BEQ $15 [$AA28] ; if not, skip to travelability check
$00/AA13 A9 01 LDA #$01 ; if so, then for the sake of travelability check, pretend we're on a yellow chocobo
$00/AA15 4C 2D AA JMP $AA2D [$00:AA2D]; jump to travelability check
I haven't checked Tile Layer yet, but are you using the correct tile encoding, since it's not in 4BPP SNES? The tile format is called 4BPP GBA in YY-CHR.
Or if you meant the assembled tiles, I don't have a good method for viewing them. The tileset images were made by having a program use the tile assembly data to write out the tile graphics to a file, which I then viewed in a tile viewer.
These are unheadered offsets.
0A0000: Overworld tile assembly data
0A0200: Underworld tile assembly data
0A0400: Lunar tile assembly data
0A0600: Palette assignment data (overworld)
0A0700: Palette assignment data (underworld)
0A0800: Palette assignment data (lunar)
0A0900: Palette Data (Overworld)
0A0980: Palette Data (Underworld)
0A0A00: Palette Data (Lunar)
0E8000: Overworld subtile graphics
0EA000: Underworld subtile graphics
0EC000: Lunar subtile graphics
(4bpp linear reversed, combined with palette assignment data to make 8bpp subtiles)
(4bpp linear reversed, combined with palette assignment data to make 8bpp subtiles)
Is this read differently from the graphics for, say, the ship/airship tileset?Very different. Those are planar graphics, where the bits are spread across bytes. Here, the bits are consecutive in one byte. Each nybble (4 bits) is one pixel.
Then two bytes per tile for the palette assignment table?It's one palette byte for each 8x8 tile. You can't palette-swap mode7 tiles with map data. By the time they're sent to VRAM, they've already been assigned colors on the pixel level.
This probably deserves a longer tech post, but the crux is that each 8x8 graphics tile is stored in the special 4 bpp format and has 1 byte in this "palette pointers" section that you just add (or 'or', either way) to each pixel's value. That's the final color index for each pixel, which happens to be effectively only 6-bit color index because those bytes only have certain values. And that matches with the fact that the palettes for each world have 64 entries in them.
34 34 34 34
43 44 43 43
34 34 44 44
43 43 43 43
34 34 34 44
43 43 43 34
34 34 34 44
44 43 43 43
3 4 3 4 3 4 3 4
4 3 4 4 4 3 4 3
3 4 3 4 4 4 4 4
4 3 4 3 4 3 4 3
3 4 3 4 3 4 4 4
4 3 4 3 4 3 3 4
3 4 3 4 3 4 4 4
4 4 4 3 4 3 4 3
13 14 13 14 13 14 13 14
14 13 14 14 14 13 14 13
13 14 13 14 14 14 14 14
14 13 14 13 14 13 14 13
13 14 13 14 13 14 14 14
14 13 14 13 14 13 13 14
13 14 13 14 13 14 14 14
14 14 14 13 14 13 14 13