Actually, Marshall, according to Pd's docs Image= flag value is calculated at parsing time, like this:
object.Image = object.Image == '' ? Object.ID : Object.Image;
Object.ID is (I assume) the first element in the data structure holding this object.
Object.Image is stored at offset 0x24.
That converts to asm (loose translation) like
<read Image into the 0x24 offset>
<compare that string at 0x24 offset to an empty str>
jne DEFINED_IMAGE; jump straight to label DEFINED_IMAGE if it is not an empty string
mov $object_storage_start_point+0x24 , $object_storage_start_point+0 ; copy data from ID field into Image field
DONE_LOADING_IMAGE:
<continued code>
as you see, in case you omit Image=, the game wastes some cycles to move the data and calculate the source/target offsets (unless they used static memory allocation, which, while not advisable and not likely, would explain the 102 unit bug - they could have statically allocated memory for 101 data structure, and the later ones override something else). However, a waste of a few cycles on machines that can do over 1E9 (Pentium III 1GHz) cycles per second, is negligible. Not to mention, unavoidable.
|