NES games handle their graphics in many different ways, but for practical purposes it will be best to focus only on the fundamentals to achieve your goal There are mainly two types of screens:
First there is the one that basically consists of a single block of data, which may or may not be compressed, but you will be happy to know that this is not the case:
22010 | 24010
22E50 | 3F010
23530 | 3D010
23B10 | 3D010
Spoiler: Note 1:
In Djinn Tile Mapper
you must add the 0x
prefix to the pointers to use them in the "Go To..."
window, Relevant link
Actually there is also the possibility that there is a screen made up of several of these blocks or that they have additional programming, but this is not the case...Note 3:
You can find the X
value of the hammer from the title screen at 0xC4EC
, moving it will allow you to align the text "Begin new game"
In the following tutorial RoboCop Tilescreen
, you will find relevant information to be able to correctly understand the attributes of palettes of this type of screen, although currently it is best to use NES Screen Tool 2.51
to distribute the palettes and then export the data as follows:
In the "Nametable"
tab you must activate only "+ include attributes"
and save as binary with "Save as binary"
You open the .BIN
file with your favorite Hexadecimal editor
and copy its data and insert it into the game with the emulator.
Let's talk about the second type, this can vary in complexity, but basically it is a structure formed by "legos"
, here you are also lucky, since they are ordered in a simple way:
Going deeper, there are many blocks that are used to create the structures that make up each background image
, the most common thing to see is that they are used to build levels.
Here would go a long explanation. but better let's see its basic structure, which in this case is:
30bdd | 30c0d Palettes assigned to each block.
30C34 | 30DB4 Graphics.
30fb4 | 30fe3 Distribution of blocks on the game screen.
Surely there is a block intended to define the type of physics that each object will use, but that is not important for the purposes of this tutorial.
What you should know is that these data groups function as lists, in which each object inherits its attributes from the element in the same position as the following list.
In other words, the 1st palette
is from the 1st graphic
, the 2nd palette
is from the 2nd graphic
and so on.
Spoiler: Note: I give these explanations omitting all the data that is behind the operation of the concepts that I explain, so it is recommended that you inquire about this information, otherwise you will be limited when trying to do new things...
In case you couldn't read the tutorial I recommended, remember that each palette attribute code stores the information of 4 different palettes
, arranged in the following way:
Using clear, the four available palettes