Pmd2 SSA

From ProjectPokemon Wiki
Revision as of 00:09, 3 February 2017 by UniqueGeek (talk | contribs)
Jump to navigation Jump to search


.SSA, .SSE, and .SSS files all use the exact same format, and as far as is currently known all do the same things. The only differences appear to be which links exist. These files and their respectively named .SSB files are effectively linked, as within the script they are not called by extension, but by name.

These are never found alone. They are like C/C++ .h files, in that they are connected to a certain file, and therefore useless by themselves. They are used to determine the starting positions of Pokémon, backgrounds, and interactable areas (including ones that you simply move into to interact). There are still some secrets that are unknown, however.

All data contained in these files is in groups of words. Word (as defined here) refers to the 16-bit word, or the values between 0x0000 and 0xFFFF inclusive. It is also referred to as a short in most common programming languages (on 32-bit OS's and above), or a 'halfword' as in the ARM processors used in the NDS.

Specifics

SSE

The only known .SSE file is 'enter.sse' All known links from this file go to other enter files, 'enterXX.ssb', and the files are all linked. All the Pokémon, backgrounds, etc. in this file are used as initial positions for all enter files.

This file will always exist in every subfolder of /SCRIPT/, that describes an area that can be entered by the player during normal play. (some folders contain visual effects, or only cutscenes)

SSS

There are two types of .SSS files. The first is 'umXX.sss', and the second is 'usXX.sss'. In both cases, the XX can stand for any decimal number. Differences between the two types are unknown at this time.

umXX.sss

These are linked to all the umXXYY.ssb files where XX is the same in both files. The links themselves are determined in the .SSS file

usXX.sss

These are linked to all the usXXYY.ssb files where XX is the same in both files. The links themselves are determined in the .SSS file

SSA

Every other known .SSB file, with one exception, has this file as a "metafile" of sorts, showing all initial locations, background areas, etc. A file named 'm22a0201.ssb', for example, would have 'm22a0201.ssa' as this file. The sole exception to this rule is unionall.ssb, contained inside the /SCRIPT/COMMON/ folder. It has no .SSA, .SSE, or .SSS file connected with it.

File Format

Items with question-marks are unknown at this time, but believed. Short names are only to give a simple mnemonic to remember by. These names are not used inside the game

Header

Hex Short Name Description
0000 numGroups (N) The number of 'groups' in the file (N)
0002 dataOffset (Z) Length of non-groups/start of groups (Z)
0004 unkn (A) Start of something (only enter.sse?)
0006 pokéPos (B) Pokémon posititions
0008 objPos (C) Object positions
000A backPos (D) Default backgrounds (pos?)
000C unknown (E) Start of third non-6 group
000E movements (F) Start of movements (actions)
0010 4wordsLoc (G) start of 4 unknown words (usually 9, -1, -1, -1)

A words from start

This is apparently usually only used in enter.sse.

Hex Short Name Description
00 unknown1 Unknown
02 unknown2
04 unknown3
06 entryNum Number entry (enterXX.ssb if enter.sse) to go to.

B words from start: (chara group)

Hex Short Name Description
00 pokémon Pokémon to change
02 faceDir Direction to face
04 xPos X coordinate -- 8 pixel increments. -- 0 = half of shadow there
06 yPos Y coordinate -- 0 = Shadow 1 pixel down
08 xOffset x offset? 0-1, 2-3, 4-7 = 0, 4, 16
0A yOffset y offset? 0-1, 2-3, 4-7 = 0, 4, invis
0C entryNum Numbered entry (XX in enterXX.ssb if enter.sse), usually FFFF (means none)
0E unknown Unknown, usually FFFF

C words from start:

This group works with objects. Each group of 8 words defines a new object, and has the following structure:

Hex Short Name Description
00 object Object to change
02 unknown1 Unknown
04 unknown2
06 unknown3
08 xPos X coordinate -- 8 pixel increments. -- 0 = half of shadow there
0A yPos Y coordinate -- 0 = Shadow 1 pixel down
0C xOffset x offset? 0-1, 2-3, 4-7 = 0, 4, ?
0E yOffset y offset? 0-1, 2-3, 4-7 = 0, 4, ?
10 entryNum Numbered entry (XX in enterXX.ssb if enter.sse) to run on interact, usually FFFF (means none)
12 unknown4 Unknown, usually FFFF

D words from start

Deals with backgrounds.

Hex Short Name Description
00 object Spot used in code B1 (EoT/EoD)
02 unknown1 Unknown
04 unknown2
06 unknown3
08 xPos X coordinate -- 8 pixel increments.
0A yPos Y coordinate
0C xOffset x offset? 0-1, 2-3, 4-7 = 0, 4, ?
0E yOffset y offset? 0-1, 2-3, 4-7 = 0, 4, ?
10 entryNum Numbered entry (XX in enterXX.ssb if enter.sse) to run on interact, usually FFFF (means none)
12 unknown4 Unknown, usually FFFF

E words from start

Hex Short Name Description
00 what? What to change?
02 unknown1 Possibly facing?
04 xPos? X coordinate?
06 yPos? Y coordinate?
08 xOffset? x offset?
0A yOffset? y offset?
0C entryNum? All that is known is this is NOT enterXX.ssb numbers
0E unknown2 Unknown, usually FFFF

F words from start

Deals with movements.

Hex Short Name Description
00 xPos? X coordinate? -- 8 pixel increments.
02 yPos? Y coordinate?
04 xOffset? x offset?
06 yOffset? y offset?
08 unknown1 Unknown
0A unknown2
0C unknown3
0E unknown4

G words from start

Hex Short Name Description
00 unknown1 (9) Usually 0009
02 unknown2 (-1) Usually FFFF
04 unknown3 (-1)
06 unknown4 (-1)

Z words from start

Not much is known about this group, other than the fact it is always 10*N words long.

Hex Short Name Description
00 unknown1 All are apparently used, a lot of repeats
02 unknown2
04 unknown3
06 unknown4
08 unknown5
0A unknown6
0C unknown7
0E unknown8
10 unknown9
12 unknown10