Version 0.94.1 of the bladeenc mp3 encoder
[swftools.git] / src / flash.c
index 2607f21..914f985 100644 (file)
@@ -325,6 +325,7 @@ void placeobject_write (struct PlaceObject*obj, struct writer_t*w)
     u16 taghead = 0x3f | TAGID_PLACEOBJECT<<6;
     u8*pos;
     u8*lenpos;
+    U32 len;
     writer_resetbits(w);
     writer_write(w, &taghead, 2);
     lenpos = writer_getpos(w);
@@ -343,8 +344,12 @@ void placeobject_write (struct PlaceObject*obj, struct writer_t*w)
        CXFORM_write(&obj->cxform, w);
     }
     writer_resetbits(w);
-    
-    *(u32*)lenpos = (u8*)writer_getpos(w) - pos;
+   
+    len = (u8*)writer_getpos(w) - pos;
+    lenpos[0] = len;
+    lenpos[1] = len>>8;
+    lenpos[2] = len>>16;
+    lenpos[3] = len>>24;
 }
 
 void placeobject2_init (struct PlaceObject2*obj,struct swf_tag*tag)
@@ -389,9 +394,10 @@ void placeobject2_write (struct PlaceObject2*obj, struct writer_t*w)
 {
     u8 flags = obj->reserved<<7 | obj->hasclipactions<<6 | obj->hasname<<5 | obj->hasratio<<4 |
               obj->hascolortransform<<3 | obj->hasmatrix<<2 | obj->hascharacter<<1 | obj->hasmove;
-    u16 taghead = 0x3f | TAGID_PLACEOBJECT2<<6;
+    u16 taghead = SWAP16(0x3f | TAGID_PLACEOBJECT2<<6);
     u8*pos;
     u8*lenpos;
+    U32 len;
     writer_resetbits(w);
     writer_write(w, &taghead, 2);
     lenpos = writer_getpos(w);
@@ -416,7 +422,12 @@ void placeobject2_write (struct PlaceObject2*obj, struct writer_t*w)
     if(obj->hasclipactions)
        writer_writeu16(w, obj->clipactions);
     writer_resetbits(w);
-    *(u32*)lenpos = (u8*)writer_getpos(w) - pos;
+    
+    len = (u8*)writer_getpos(w) - pos;
+    lenpos[0] = len;
+    lenpos[1] = len>>8;
+    lenpos[2] = len>>16;
+    lenpos[3] = len>>24;
 }
 
 void read_swf(struct swffile*swf, uchar*data, int length)
@@ -514,24 +525,24 @@ int getidfromtag(struct swf_tag* tag)
        }
        break;
        case TAGID_REMOVEOBJECT:
-          return *(u16*)tag->data;
+          return tag->data[0]+tag->data[1]*256;
        break;
        case TAGID_REMOVEOBJECT2:
           return -1;
        break;
     }
 
-    return *(u16*)tag->data;
+    return tag->data[0]+tag->data[1]*256;
 }
 
 void setidintag(struct swf_tag* tag, int id)
 {
-    *(u16*)tag->data = id;
+    tag->data[0] = id;
+    tag->data[1] = id>>8;
 }
 
 char is_sprite_tag (int id)
 {
-
     int t=0;
     while(spritetagids[t]>=0)
     {
@@ -544,7 +555,6 @@ char is_sprite_tag (int id)
 
 char is_defining_tag (int id)
 {
-
     int t=0;
     while(definingtagids[t]>=0)
     {