SHOW:
|
|
- or go back to the newest paste.
1 | Flags: 7825 | |
2 | ||
3 | 150D0000 | |
4 | - | 0x10(r28) //ptr to currently used node index table entry |
4 | + | FF000000 |
5 | 1F1F0400 | |
6 | ||
7 | ||
8 | - | 0x20(28) //??? |
8 | + | 7825 |
9 | - | 0x25(r28) //current node index (1 byte) |
9 | + | 37.96 |
10 | 0000 | |
11 | - | control codes for 1st byte: |
11 | + | |
12 | 4BA | |
13 | - | 0x01 |
13 | + | 568: Input Flag = 25; 569: Output Flag = 78 |
14 | - | 0x03 = use second control code byte |
14 | + | |
15 | 0x574 | |
16 | 0x57C | |
17 | ||
18 | 0x01 - 7F (global flags) | |
19 | 80 - BF (global flags2) | |
20 | C0 - DF (zone flags) | |
21 | E0 - FE (one zone flags) | |
22 | ||
23 | ||
24 | FLI1 Format: | |
25 | ||
26 | - | 01 = 0 |
26 | + | Header Size: 16 Bytes |
27 | - | 02 = 8 |
27 | + | |
28 | - | 03 = 16 |
28 | + | FLI1 Tag (4 Byte) |
29 | - | 04 = 96 |
29 | + | |
30 | - | 05 = 344 |
30 | + | Tag+4: FLI1 Size aka offset to next (usually end of file) Table (4 Byte) |
31 | Tag+8: Num Elements in Index Table (2 Byte) | |
32 | Tag+10: Usually 0x0800 (2 Byte) | |
33 | Tag+12: Padding (4 Byte) | |
34 | ||
35 | Each Index in Table is 8 bytes | |
36 | ||
37 | Index+0 = Msg Flow ID (2 bytes) (as provided by the SCOB entry under Unknown Param2/3) | |
38 | Index+4 = Start Node ID (2 bytes) | |
39 | ||
40 | ||
41 | FLW1 Format: | |
42 | ||
43 | Header Size: 16 Bytes | |
44 | ||
45 | FLW1 Tag (4 Byte) | |
46 | ||
47 | Tag+4: FLW1 Size aka offset to next (usually FLI1) Table (4 Byte) | |
48 | Tag+8: Num Elements/Nodes in Table (2 Byte) | |
49 | Tag+10: Usually 0x0910 (2 Byte) | |
50 | Tag+12: Padding (4 Byte) | |
51 | ||
52 | Each Node Entry is 8 bytes long | |
53 | ||
54 | Tag+16 = Start of FLW1 Node Table | |
55 | ||
56 | Start of FLW1 Node Table + (Node ID * 8) = Node Entry | |
57 | ||
58 | ||
59 | Node Entry+0 = Node Type (1 = Message Node, 2 = Branch Node, 3 = Event Node) | |
60 | Node Entry+1 = Control Byte (used by Branch/Event Node) (Event Node = mEventList Index) | |
61 | Node Entry+2 = Dynamic Offset1 (2 byte) (Message Node = points to a Message ID entry in the INF table) (Branch Node = mQueryList Index) (Event Node = Offset to associated Node ID in the bottom jump table) | |
62 | Node Entry+4 = Dynamic Offset2 (2 byte) (Message/Branch Node = Linked/Next Node ID or FFFF if final) (Event Node = Associated/Next Msg Flow ID) | |
63 | Node Entry+6 = Additional Offset (2 Byte) (only used by Branch Node it seems, is added to mQueryList result for bottom jump table lookup) | |
64 | ||
65 | Start of FLW1 Node Table + (Num Nodes * 8) = Start of Node ID Jump Table (no header) | |
66 | Each entry in the jump table is 2 bytes long and just contains the Node ID to jump to | |
67 | No defined end, often contains a lot of garbage/deleted data at the very end | |
68 | ||
69 | Start of Node ID Jump Table + (Associated Node ID Offset * 2) = Node ID entry in the jump table | |
70 | ||
71 | ||
72 | ||
73 | 4(r28) //ptr to flw1 tag | |
74 | 8(r28) //ptr to fli1 tag | |
75 | 0xC(r28) //ptr to begin of flw1 index table | |
76 | 0x10(r28) //currently used node index table ID (2 byte) | |
77 | 0x14(r28) //ptr to begin of flw1 data table (num elements * 8) | |
78 | 0x18(r28) //ptr to end maybe? (ptr to flw1 data + (num elements * 2)) | |
79 | 0x1C(28) //flow message id or global ID | |
80 | 0x20(28) //special msg id??? | |
81 | 0x25(r28) //current node index (1 byte) (set to 1 now) | |
82 | 0x46(r28) //controls whether select or single msg is invoked | |
83 | ||
84 | control codes for second byte of index node: | |
85 | ||
86 | 0x09 | |
87 | 0x13 | |
88 | 0x20 | |
89 | 0x21 | |
90 | 0x15 | |
91 | ||
92 | ||
93 | ||
94 | ||
95 | ||
96 | ||
97 | FLI1 Format (Flow Index): | |
98 | ||
99 | Header Size: 16 Bytes | |
100 | ||
101 | FLI1 Tag (4 Byte) | |
102 | Section Size (4 Byte) | |
103 | Num Elements in Table (2 Byte) | |
104 | Unknown (Usually 0x0800) (2 Byte) | |
105 | Padding (4 Byte) | |
106 | ||
107 | Each Entry in Table is 8 bytes: | |
108 | ||
109 | Msg Flow ID (2 bytes) (as provided by the SCOB entry under Unknown Param2/3) | |
110 | Start Node ID (2 bytes) | |
111 | ||
112 | ||
113 | FLW1 Format: | |
114 | ||
115 | Header Size: 16 Bytes | |
116 | ||
117 | FLW1 Tag (4 Byte) | |
118 | Section Size (4 Byte) | |
119 | Num Nodes in Table (2 Byte) | |
120 | Unknown (Usually 0x0910) (2 Byte) | |
121 | Padding (4 Byte) | |
122 | ||
123 | Each Node Entry is 8 bytes long | |
124 | ||
125 | Node Type (1 byte) (1 = Message Node, 2 = Branch Node, 3 = Event Node) | |
126 | Control Byte (1 byte) (used by Branch/Event Node) (Event Node refers to global mEventList) | |
127 | Dynamic Offset1 (2 byte) (Message Node = points to a Message ID entry in the INF table) (Branch Node refers to global mQueryList) (Event Node = Offset to associated Node ID in the bottom "jump" table) | |
128 | Dynamic Offset2 (2 byte) (Message/Branch Node = Linked/Next Node ID or FFFF if final) (Event Node = Associated/Next Msg Flow ID) | |
129 | Additional Offset (2 Byte) (only used by Branch Node it seems, is added to mQueryList result for bottom jump table lookup) | |
130 | ||
131 | Game looks up entries here by doing: (Node ID * 8) + section start ptr = Node Entry | |
132 | Game accesses the jump table at the bottom by doing: (NumNodes * 8) + section start ptr = Beginning of the jump table (no header) | |
133 | ||
134 | Each entry in the jump table is 2 bytes long and just contains the Node ID to jump to | |
135 | No defined end, often contains a lot of garbage/deleted data at the very end | |
136 | ||
137 | Entries in the jump table are accessed by doing: (Associated Node ID Offset * 2) + jump table start ptr = Node ID entry in the jump table | |
138 | ||
139 | ||
140 | ||
141 | ||
142 | ||
143 | Mhint: | |
144 | FFFFFFFF (FF = Type, FFFFFF = identifier) (FF Type is instant activation when in trigger, 7F triggers with Z button) | |
145 | Unknown1: 7741 (77 = Flag to set when dialog is done, 41 = Flag that activates/deactivates the trigger) | |
146 | RotationY: Event ID, Generic Event ID | |
147 | Unknown2: Dialog Flow ID | |
148 | ||
149 | Wljump: Wolf Jump | |
150 | Parameters: 000F2145 (000F = identifier, 21 = activation flag, 45 = RPAT ID (from 0 to end of RPAT list) | |
151 | ||
152 | RPAT Group Entry: | |
153 | ||
154 | numPoints: num of RPPN path nodes in this group | |
155 | Unk1: FFFF | |
156 | Unk2: FF | |
157 | Unk3: 00 | |
158 | firstEntryOffset: Offset to first RPPN path node. All the others have to follow behind! 0x0 refers to the first RPPN node in the table | |
159 | ||
160 | Midna Jumps (RPPN path nodes): | |
161 | ||
162 | 3201FF00 Z trigger /init or 4BFFFF00 or 14FFFF05 | |
163 | ||
164 | folgt 1401FF00 nodes and 1400FF00 and 0A01FF00 | |
165 | ||
166 | 0001FF00 finished (or 00FFFF00) (or 00FFFF01) |