Looking closer at the source of the W3D_AvengerLEMU.library, I noticed that the internal functions are called directly by the bsr and not by the FunctionTable:
However,
the LibraryTimer patches the library's FunctionTable to insert a
counter and even a measure of time. Well, LibraryTimer will not add it
in its statistics using this bsr. The solution is simple, just replace it with a jsr, being sure that a6 is the basis address of the W3D_AvengerLEMU.library:
All in all, there were less than a dozen of bsr calls. Now, we have more understandable statistics with LibraryTimer:
The
-$3C function seems to be the most used one: it will be necessary to
be sly as a fox to reduce instructions as much as possible. Here, every saved cycle is very important.
Here are the new statistics:
- fonction -$24: 382 fois
- fonction -$36: 1 fois
- fonction -$3C: 367 558 fois
- fonction -$5A: 110 fois
- fonction -$90: 23 fois
- fonction -$AE: 1 fois
- fonction -$B4: 845 fois
- fonction -$BA: 884 fois
- fonction -$D8: 2 357 fois
- fonction -$DE: 452 fois
- fonction -$E4: 383 fois
- fonction -$EA: 228 fois
- fonction -$108: 10 fois
- fonction -$10E: 382 fois
- fonction -$114: 383 fois
- fonction -$144: 5 054 fois
- fonction -$14A: 1 fois
- fonction -$162: 354 fois
- fonction -$180: 1 fois
- fonction -$198: 24 233 fois
- fonction -$19E: 113 013 fois
- fonction -$1B6: 150 286 fois
- fonction -$1C2: 6 524 fois
Now, using the very same method for the Warp3D.library, with the same game Quake 2:
- W3D_SetState: 7 932 fois
- W3D_LockHardware: 387 fois
- W3D_UnLockHardware: 386 fois
- W3D_WaitIdle: 386 fois
- W3D_AllocTexObj: 1 fois
- W3D_SetFilter: 3 fois
- W3D_SetTexEnv: 2 318 fois
- W3D_SetWrapMode: 1 fois
- W3D_SetBlendMode: 1 011 fois
- W3D_SetDrawRegion: 387 fois
- W3D_ClearZBuffer: 387 fois
- W3D_SetZCompareMode: 387 fois
- W3D_SetCurrentColor: 4 257 fois
- W3D_DrawTriFanV: 68 170 fois
- W3D_DrawTriStripV: 19 480 fois
- W3D_DrawArray: 142 166 fois
Now,
work of re-programming can begin seriously, the coder knows exactly
where to start in order to obtain results in terms of speed, visible to
the naked eye.
(translated by CrashMidnick)
Aucun commentaire:
Enregistrer un commentaire
Laissez vos commentaires ici :