848 {
850
851 int a2Start = 0;
852
853 List<int> mainStarts = null, gfxStarts = null, sfxStarts = null;
854
856
858 {
861 }
862
864 {
867
869 {
870 a.Rebuild(actionFlagsAddr++, 16, true);
871 }
872
873 addr = (
VoidPtr) actionFlagsAddr;
874 }
875
877 {
879 {
880
881 bool actions1Null = false, actions2Null = false;
883 {
884 foreach (MoveDefActionNode a in grp.Children)
885 {
886 if (a.Children.Count > 0)
887 {
888 if (a.Index == 0)
889 {
890 actions1Null = false;
891 }
892 else if (a.Index == 1)
893 {
894 actions2Null = false;
895 }
896 }
897 }
898 }
899
900 if (!actions1Null || !actions2Null)
901 {
902 bint* action1Offsets = (
bint*) addr;
906
908 {
909 foreach (MoveDefActionNode a in grp.Children)
910 {
911 if (a.Index == 0)
912 {
913 if (a.Children.Count > 0)
914 {
915 *action1Offsets = (int) a._entryOffset - (int) a._rebuildBase;
917 }
918
919 action1Offsets++;
920 }
921 else if (a.Index == 1)
922 {
923 if (a.Children.Count > 0)
924 {
925 *action2Offsets = (int) a._entryOffset - (int) a._rebuildBase;
927 }
928
929 action2Offsets++;
930 }
931 }
932 }
933
934 addr = (
VoidPtr) action2Offsets;
935 }
936 }
937 else
938 {
939 bool actionsNull = true;
941 {
942 if (a.Children.Count > 0)
943 {
944 actionsNull = false;
945 }
946 }
947
948 if (!actionsNull)
949 {
952
954 {
955 if (a.Children.Count > 0)
956 {
957 *actionOffsets = (int) a._entryOffset - (int) a._rebuildBase;
959 }
960
961 actionOffsets++;
962 }
963
964 addr = (
VoidPtr) actionOffsets;
965 }
966 }
967 }
968
970 {
975 }
976
978 {
980 {
984 }
985
987 }
988
990 {
992 {
996 }
997
999 }
1000
1002 {
1004 {
1006 }
1007 else
1008 {
1012 }
1013 }
1014
1016 {
1017 bint* lastOffsets =
null, mainOffsets, GFXOffsets, SFXOffsets;
1019 bool mainNull = true, gfxNull = true, sfxNull = true;
1021 int populateCount = 1;
1022 bool children = false;
1024 {
1026 children = true;
1027 mainStarts = new List<int>();
1028 gfxStarts = new List<int>();
1029 sfxStarts = new List<int>();
1033 }
1034
1035 for (int i = 0; i < populateCount; i++)
1036 {
1037 if (children)
1038 {
1040 }
1041
1042 foreach (MoveDefSubActionGroupNode g in e.Children)
1043 {
1044 foreach (MoveDefActionNode a in g.Children)
1045 {
1046 if (a.Children.Count > 0 || a._actionRefs.Count > 0 || a._build)
1047 {
1048 switch (a.Index)
1049 {
1050 case 0:
1051 mainNull = false;
1052 break;
1053 case 1:
1054 gfxNull = false;
1055 break;
1056 case 2:
1057 sfxNull = false;
1058 break;
1059 }
1060 }
1061 }
1062 }
1063
1064 if (i == 0)
1065 {
1068 lastOffsets = (
bint*) ((
VoidPtr) subActionFlagsAddr + e.Children.Count * 8);
1069 }
1070
1071 mainOffsets = lastOffsets;
1072
1073 if (!(mainNull &&
Static))
1074 {
1075 if (!children)
1076 {
1078 }
1079 else
1080 {
1081 mainStarts.Add((
int) mainOffsets - (int)
_rebuildBase);
1082 }
1083
1084 GFXOffsets = (
bint*) ((
VoidPtr) mainOffsets + e.Children.Count * 4);
1085 }
1086 else
1087 {
1088 GFXOffsets = mainOffsets;
1089 }
1090
1091 if (!(gfxNull &&
Static))
1092 {
1093 if (!children)
1094 {
1096 }
1097 else
1098 {
1100 }
1101
1102 SFXOffsets = (
bint*) ((
VoidPtr) GFXOffsets + e.Children.Count * 4);
1103 }
1104 else
1105 {
1106 SFXOffsets = GFXOffsets;
1107 }
1108
1109 if (!(sfxNull &&
Static))
1110 {
1111 if (!children)
1112 {
1114 }
1115 else
1116 {
1118 }
1119
1120 addr = (
VoidPtr) SFXOffsets + e.Children.Count * 4;
1121 }
1122 else
1123 {
1125 }
1126
1127 lastOffsets = (
bint*) addr;
1128
1129 int x = 0;
1130 foreach (MoveDefSubActionGroupNode grp in e.Children)
1131 {
1132 if (i == 0)
1133 {
1135 {
1136 _Flags = grp._flags, _InTranslationTime = grp._inTransTime,
1138 };
1139
1141 {
1144 }
1145
1146 subActionFlagsAddr++;
1147 }
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157 if (grp.Children[0].Children.Count > 0 ||
1158 (grp.Children[0] as MoveDefActionNode)._actionRefs.Count > 0 ||
1159 (grp.Children[0] as MoveDefActionNode)._build)
1160 {
1161 mainOffsets[x] = (int) (grp.Children[0] as MoveDefActionNode)._entryOffset -
1164 }
1165
1166
1167 if (grp.Children[1].Children.Count > 0 ||
1168 (grp.Children[1] as MoveDefActionNode)._actionRefs.Count > 0 ||
1169 (grp.Children[1] as MoveDefActionNode)._build)
1170 {
1171 GFXOffsets[x] = (int) (grp.Children[1] as MoveDefActionNode)._entryOffset -
1174 }
1175
1176
1177 if (grp.Children[2].Children.Count > 0 ||
1178 (grp.Children[2] as MoveDefActionNode)._actionRefs.Count > 0 ||
1179 (grp.Children[2] as MoveDefActionNode)._build)
1180 {
1181 SFXOffsets[x] = (int) (grp.Children[2] as MoveDefActionNode)._entryOffset -
1184 }
1185
1186 x++;
1187 }
1188 }
1189
1190 addr = lastOffsets;
1191 }
1192
1194 {
1195 if (e != null)
1196 {
1197 if (!e.External)
1198 {
1199 e.Rebuild(addr, e._calcSize, true);
1201 if (e._lookupOffsets.Count != e._lookupCount)
1202 {
1203 Console.WriteLine(e._lookupCount - e._lookupOffsets.Count);
1204 }
1205
1206 addr += e._calcSize;
1207 }
1208 }
1209 }
1210
1212 {
1214
1216
1220
1231
1233 int index = 0;
1235 {
1237 {
1239 if (e != null)
1240 {
1241 ext[index] = (int) e._entryOffset - (
int)
_rebuildBase;
1243 }
1244 else if (index == 0 &&
Static)
1245 {
1247 }
1248 else
1249 {
1250 ext[index] = i;
1251 }
1252
1253 index++;
1254 }
1255 }
1256
1257 index = 0;
1258
1260 {
1261 ext[0] = a2Start;
1263 }
1264
1265 int bias =
pikmin ? 1 : 0;
1266 if (mainStarts != null)
1267 {
1268 foreach (int i in mainStarts)
1269 {
1270 ext[index + bias] = i;
1272 index++;
1273 }
1274 }
1275
1276 if (gfxStarts != null)
1277 {
1278 foreach (int i in gfxStarts)
1279 {
1280 ext[index + bias] = i;
1282 index++;
1283 }
1284 }
1285
1286 if (sfxStarts != null)
1287 {
1288 foreach (int i in sfxStarts)
1289 {
1290 ext[index + bias] = i;
1292 index++;
1293 }
1294 }
1295
1296 if ((
int) (addr + 52 + _extraOffsets.Count * 4) - (
int) address !=
_calcSize)
1297 {
1298 Console.WriteLine(
_calcSize - ((
int) (addr + 52 + _extraOffsets.Count * 4) - (
int) address));
1299 }
1300
1301
1303 for (int i = 0; i < 10; i++)
1304 {
1305 if (off[i] > 1480 && off[i] <
Root.dataSize)
1306 {
1308 }
1309 }
1310
1312 {
1314 }
1315 }
1316 else
1317 {
1319 {
1320 Console.WriteLine((int) addr - (int) address);
1321 }
1322 }
1323 }
void WriteTable(VoidPtr address)
Definition: MoveDefStringTables.cs:45
int id
Definition: DataArticleNode.cs:101
VoidPtr _rebuildBase
Definition: MoveDefNode.cs:18
List< int > _lookupOffsets
Definition: MoveDefNode.cs:21
int _rebuildOffset
Definition: MoveDefNode.cs:26
VoidPtr _entryOffset
Definition: MoveDefNode.cs:23
override void Rebuild(bool force)
Definition: MoveDefNode.cs:93
int _calcSize
Definition: ResourceNode.cs:145
VoidPtr Address
Definition: BigEndianTypes.cs:33
Definition: FighterDefinition.cs:885
Definition: FighterDefinition.cs:348
Definition: FighterDefinition.cs:549
bint _stringOffset
Definition: FighterDefinition.cs:555