#include "../rfxswf.h"
+#define MAX_LOOKUP 1024 // make cross references in dumps
+
struct Action
{
int version;
return 1+4; //int
} else if (type == 8) {
return 1+1; //lookup
- }
+ } else return 1;
break;
}
}
int t;
U8*data;
char* cp;
- if(!prefix)
- prefix="";
+ int entry = 0;
+
+#ifdef MAX_LOOKUP
+
+ char * lookup[MAX_LOOKUP];
+ memset(lookup,0x00,sizeof(lookup));
+
+#endif
+
+ if (!prefix)
+ prefix="";
+
while(atag)
{
U8 poollen = 0;
} break;
case 'c': {
printf(" String:\"%s\"", data);
+#ifdef MAX_LOOKUP
+ if (entry<MAX_LOOKUP)
+ lookup[entry++] = strdup(data);
+#endif
} break;
case 'C': {
poollen = *data;
+ entry = 0;
printf("(%d entries)", poollen);
} break;
case 's': {
printf(" int:%d", *(int*)value);
} else if (type == 8) {
printf(" Lookup:%d", *value);
+#ifdef MAX_LOOKUP
+ if (lookup[*value])
+ printf(" (\"%s\")",lookup[*value]);
+#endif
} else {
printf(" UNKNOWN[%02x]",type);
}
printf("\n");
atag = atag->next;
}
+
+#ifdef MAX_LOOKUP
+ for (t=0;t<MAX_LOOKUP;t++) if (lookup[t]) free(lookup[t]);
+#endif
}
static const char TYPE_URL = 1;
void action_PushInt(int i)
{
*(U8*)currentatag->tmp = 7; //int
- *(U8*)¤tatag->tmp[1] = i;
+ *(U32*)¤tatag->tmp[1] = i;
swf_AddActionTAG(ACTION_PUSH, (U8*)currentatag->tmp, 5);
}
void action_GotoLabel(char* label)
void action_DefineFunction(U8*data, int len) {}
void action_Constantpool(char* constantpool) {}
void action_With(char*object) {}
+
+/*
+ Properties:
+
+ _X 0
+ _Y 1
+ _xscale 2
+ _yscale 3
+ _currentframe 4
+ _totalframes 5
+ _alpha 6
+ _visible 7
+ _width 8
+ _height 9
+ _rotation 10
+ _target 11
+ _framesloaded 12
+ _name 13
+ _droptarget 14
+ _url 15
+ _highquality 16
+ _focusrect 17
+ _soundbuftime 18
+ _quality* 19
+ _xmouse* 20
+ _ymouse* 21
+*/