- logf("<debug> [master] write tag %02x (%d bytes in body)",
- master.tags[pos].id, master.tags[pos].length);
- writer_write(w, master.tags[pos].fulldata, master.tags[pos].fulllength);
+ if(flags&FLAGS_WRITESLAVE) {
+ outputslave = 1;
+ slavewritten = 1;
+ }
+ if((flags&FLAGS_WRITESPRITE) && !slavewritten)
+ {
+ int id = get_free_id();
+ int depth = 0;
+ char data[7];
+ if(config.clip) {
+ logf("<fatal> Can't combine --clip and --frame");
+ }
+ *(u16*)&data[0] = (u16)(TAGID_PLACEOBJECT2<<6) + 5 ;
+ *(u8*)&data[2]= 2; //flags: id
+ *(u16*)&data[3]= depth; // depth
+ *(u16*)&data[5]= id;
+ write_sprite_defines(w);
+ write_sprite(w, id, -1);
+ writer_write(w,data,7);
+ slavewritten = 1;
+ }
+ }
+ if(!is_defining_tag(master.tags[pos].id) && (flags&FLAGS_WRITENONDEFINES))
+ {
+ int dontwrite = 0;
+ switch(master.tags[pos].id) {
+ case TAGID_PLACEOBJECT:
+ case TAGID_PLACEOBJECT2:
+ if(frame == slaveframe && !config.overlay)
+ dontwrite = 1;
+ case TAGID_REMOVEOBJECT:
+// case TAGID_REMOVEOBJECT2:
+ /* place/removetags for the object we replaced
+ should be discarded, too, as the object to insert
+ isn't a sprite
+ */
+ if(spriteid>=0 && getidfromtag(&master.tags[pos]) == spriteid && !config.isframe)
+ dontwrite = 1;
+ break;
+ }
+ if(!dontwrite) {
+ logf("<debug> [master] write tag %02x (%d bytes in body)",
+ master.tags[pos].id, master.tags[pos].length);
+ writer_write(w, master.tags[pos].fulldata, master.tags[pos].fulllength);
+ }