+ 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 && config.merge)
+ 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);
+ }
+ }
+ pos++;
+ }
+
+ if(outputslave)
+ while(slave.tags[spos].id)
+ {
+ if(tag_ok_for_slave(slave.tags[spos].id))
+ writer_write(w, slave.tags[spos].fulldata, slave.tags[spos].fulllength);
+ spos++;