ff3:ff3us:tutorial:compressed

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ff3:ff3us:tutorial:compressed [2017/09/14 00:38]
madsiur [Finding and Editing the Palette]
ff3:ff3us:tutorial:compressed [2019/02/12 12:03]
Line 1: Line 1:
-===== Compressed Graphics Tutorial ===== 
  
-In this tutorial, we will edit a compressed graphic with the help of four utilities. We will first decompress from the ROM the graphic, modify its palette in the ROM, edit the graphic and finally compress the new graphic in the ROM. 
- 
-==== The Tools ==== 
- 
-The first utility you will need is {{ff3:ff3us:util:gfx:psv.7z|Peer Sprite Viewer}} (PSV). This utility can compress and decompress data from the FF3us and Chrono Trigger ROM. Secondly you will need YY-CHR. There is a {{ff3:ff3us:util:gfx:yychr_net.zip|.NET version}} and a {{ff3:ff3us:util:gfx:yy-chr20120407_en.zip|C++ version}}. I personally go with the C++ one; it is older, but it has more features that have not yet been ported to the .NET version. The image shown here is from the C++ version. The other utility required is {{ff3:ff3us:util:gfx:snspal03.zip|SNESpal}}, which can modify color palettes in the ROM. 
- 
-Finally you will need an all purpose image editor. My favorite one is Gimp for many things, including icon making, spriting and other graphics editing. Visit [[https://www.gimp.org/|gimp.org]] for the latest version. 
- 
-==== Decompressing the Graphic ==== 
- 
-The first thing to do is to locate what you need to decompress. We have a [[ff3:ff3us:doc:asm:other:compression|Compressed Data List]] which include graphics. Alternatively, you can look at the [[ff3:ff3us:doc:asm:rom_map|ROM Map]] but theoretically everything should be in the Compressed Data List. We will take for this tutorial the battle shield used in shield blocks by party members. It is part of a bigger //graphic sheet//, meaning you cannot just decompress / compress the shield alone. Modifying the shield will have an impact on the size and arrangement of the data once re-compressed.  
- 
-The battle graphics we are looking for are at $D2E000 (unheadered ROM). This is $12E000 in absolute addressing. If you open a hex editor and go at this address, you'll see the following: 
- 
-{{ff3:ff3us:tutorial:compressed:hex-1.png?nolink}} 
- 
-The first two bytes are always an inverted word of the compressed data size. This mean our graphics are $0B44 bytes in size (including the first two bytes), meaning they are from $D2E000 to $D2EB43. The wiki list the graphic ending at $D2EBFF, which is not totally false since $D2EB44-$D2EBFF is unused space. However, while the starting offset will always likely be good, I suggest you check the data size to decompress the exact amount of data. 
- 
-Open your ROM in Peer Sprite Viewer (PSV). You'll see the main interface: 
- 
- 
-{{ff3:ff3us:tutorial:compressed:psv1.png?nolink}} 
- 
-**Start** is your starting offset, **End** is your ending offset, **Width** and **Height** are the wanted dimensions of your decompressed graphic, **BitPlane** is the type of graphic once decompressed and **Decomp** is the compression type. I have always kept the **BitPlanes** value as //4 (16 colors)// for FF3us and obviously **Decomp** value should be set as //Final Fantasy VI//. This {{ff3:ff3us:tutorial:compressed:psv2-b.png?linkonly|screenshot}} show the correct values to enter for our example. Now click **Copy to Buffer**. 
- 
-You should see the graphics in another window. Note that you can modify the sheet size and re-click on **Copy to Buffer** to get the right size. Here are the same graphics, first screenshot is default 256x256 and second one is 128x128. This does not change much, only it will be easier to edit if you got the correct size.\\ 
- 
-{{ff3:ff3us:tutorial:compressed:psv4.png?nolink}} {{ff3:ff3us:tutorial:compressed:psv4-b.png?nolink}}\\ 
- 
-The next step is saving this graphic into a file. Click **Compress** and you will see this window: 
- 
-{{ff3:ff3us:tutorial:compressed:psv5.png?nolink}}\\ 
- 
-Enter the same starting offset ($12E000) and click **...** to enter a filename with the extension of your choice (a lot of people use .bin to hint at a binary file). Finally click **Decompress**, as shown {{ff3:ff3us:tutorial:compressed:psv7.png?linkonly|here}}. Your GFX is now saved in a file we will next edit with YY-CHR. 
- 
-==== Finding and Editing the Palette ==== 
- 
-Now we need to use **YY-CHR**. If you want the compressed files and correct savestate to load the palette, you can download them {{ff3:ff3us:tutorial:compressed:shield.zip|here}}. When you lad the decompressed GFX, it should look like {{ff3:ff3us:tutorial:compressed:yy1.png?linkonly|this}}. No need to worry here, we will load the palette from a ZSNES savestate which was taken when the shield was on screen. Do //Palette -> Load Emulator state file// and select your savestate. Click **Pal** at the bottom right window and try each palette until you get the correct one. It should now look like this: 
- 
-{{ff3:ff3us:tutorial:compressed:yy2.png?nolink}} 
- 
-When you right click on a palette color you will see its RGB value as shown {{ff3:ff3us:tutorial:compressed:yy3.png?linkonly|here}}. In this example, color BB RGB values are D0,C8,68 which is in hexadecimal notation. You'll need to convert the hex values into decimal (0-255) to find the palete with SNESpal. When entering the values in SNESpal, make sure you check the autoconvert checkbox. The example in the next picture is no with the last color of the palette. There is no real trick to find the color except looking at the search results and finding the few colors that are in same order as in YY-CHR. Try searching with "rare" or uncommon colors and do not search for black or white as it will give tons of results. 
- 
-{{ff3:ff3us:tutorial:compressed:snespal1.png?nolink}} 
- 
-You can right away edit your new palettes. It can be unclear how many exclusive colors your GFX has but try reusing the available white and black on the palette and only edit what seems to be exclusive. You minimize this way the potential conflicts. Gimp Colormap for indexed images is useful to get the right RGB values to edit in SNESpal, however you need to do an hexadecimal to 1-31 scale conversion by dividing by 8. 
- 
-{{ff3:ff3us:tutorial:compressed:gimp1.png?nolink}} {{ff3:ff3us:tutorial:compressed:gimp2.png?nolink}} 
-==== Editing the Graphic ==== 
- 
-==== Recompressing the Graphic ==== 
- 
-==== Conclusion ====  
  • ff3/ff3us/tutorial/compressed.txt
  • Last modified: 5 years ago
  • (external edit)