I had a discussion with lxnt, baughn and Toady, and later on another with Taffer, Baughn and Toady. Baughn would like to update the graphics significantly, but cant work without source access. Toady understands this, but wont give this access. (which is perfectly within his right to do)
I seem to have read Baughn saying somewhere that adding too much stuff to objects makes the game crash or something, which slows down the possible rate of change. I may have an idea why this happens, and a very easy workaround would be to add some "char padding" to the end of all global objects that baughn wants to grow, so that once Toady recompiles, enough space is reserved.
Regarding the plugin, manually hacking into the vtables is a very bad approach when dfhack has an already available vtable interposing
API, which doesn't require any weird inline assembly, and even allows different plugins to define hooks for the same methods without conflicting.
Another thing is that renderers don't have the right to access any game objects, because rendering is run in a different thread and is only synchronized for a buffer swap. Thus, the appropriate way to do such thing is to hook the render vmethod of viewscreen_dwarfmodest (using the interposing API is a must
, because other plugins already hook it), and work with the tile arrays via the Pen API
. In order to make the game load the necessary tile images, you can assign one of the tiles in your bitmap as a graphical icon for something silly and impossible like "cat miner ghost" via raws, and then use findGraphicsTile to look up the index.