- #include "flicplay.h" 
- #include "brender/brender.h" 
- #include "displays.h" 
- #include "drmem.h" 
- #include "errors.h" 
- #include "globvars.h" 
- #include "graphics.h" 
- #include "harness/trace.h" 
- #include "input.h" 
- #include "loading.h" 
- #include "main.h" 
- #include "pd/sys.h" 
- #include "sound.h" 
- #include "utility.h" 
- #include <stdlib.h> 
- #include <string.h> 
-   
- int gPalette_allocate_count; 
- int gPalette_fuck_prevention; 
- int gDark_mode; 
- int gTransparency_on; 
- int gPanel_flic_disable; 
- int gPending_flic = -1; 
- int gPlay_from_disk; 
- int gTrans_enabled = 1; 
- br_pixelmap* gPanel_buffer[2]; 
- tU32 gSound_time; 
- tFlic_spec gMain_flic_list[372] = { 
-     { "MAINSTIL.FLI", 1, 0, 0, 0, 0, 25, NULL, 0u }, // only used by the demo (set to "xxxxxxxx.FLI" by the full version) 
-     { "DEMSTRT2.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DEMSTRT1.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWFLIC.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GOTOFLIC.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "ENDFLIC.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OVERFLIC.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DEMO8.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "COMPLETE.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DEMOEND.FLI", 1, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINCNFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINCNGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINCNIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINABFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINABGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINQTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINQTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINSVFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINSVGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINLDFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINLDGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINRCFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINRCGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINARFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINARGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINOPFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINOPGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2COME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2AWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINRCGY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAINARGY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SVVYSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SVVYAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "BGBUTTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BGBUTTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SVVYOKIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CANBUTIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SAVECOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SAVEAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "SMLBUTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SMLBUTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SMLBUTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SMLBUTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SAVECAIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NRACCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NRACAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCARCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NSUMSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NSUMAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPTCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPTAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPTDEIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT00GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT00FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "LOADSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "LOADCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "LOADAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "LOADHIFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "LOADHIGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT01GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT01FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT02GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT02FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT03GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGHLFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGHLGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGDNAV.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGDNGY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGDNFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGDNGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGDNIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWGCAIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWNSTIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWNSTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWNSTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCKBXFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCKBXGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCKBXON.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCKBXOF.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTON.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWNCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NEWNAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETTCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETTAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETOCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETOAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETNCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NETNAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTOF.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT03FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT04GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT04FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT05GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL1FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL1GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILLIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL2FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL2GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL3FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SKILL3GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHOCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHOAWAY.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHOOPIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "ERRRSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT05FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT06GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT06FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT07GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "QUT1STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "QUT2STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "QUT3STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT07FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT08GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "QUITOKIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT08FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT09GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT09FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT10GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT10FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT11GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNSNIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNCNIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNGRIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OPTNMSIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NOPT11FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SNDOCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SNDOAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DNEBUTIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SNDOOLFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SNDOOLGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPHCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPHAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO00GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO01GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO02GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO03GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO04GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO05GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO06GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLDNIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLCAIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLDFIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLMRIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLDNFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLDNGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTLSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OTHRCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "OTHRAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO00FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO01FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO02FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO03FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO04FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO05FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NCHO06FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTL00FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CNTL00GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTCRIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTPSIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTSRIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "STRTCCIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSHSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSCSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSHSTIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSHENIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSCLVIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSHSTEN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "NTSXSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWSC2IN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWIN2OPP.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWOPP2SC.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "2BUTONFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "2BUTONGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWOPUPIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWOPDWFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWOPDWGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "VWOPDWIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHRCCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHRCAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCRCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "CHCRAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH00GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH01GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH02GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH03GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH04GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH05GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH06GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH07GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH08GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH09GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH10GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH11GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTARGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTARIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTPFIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTOFIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTEXIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTSPIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTARGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTPFGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PARTOFGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH00FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH01FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH02FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH03FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH04FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH05FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH06FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH07FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH08FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH09FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH10FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRPH11FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PSRMCOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PSRMAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "PSRMDIIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTOF.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "RADBUTON.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDSTIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDAWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDLFFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDLFGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDLFIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDRTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDRTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "GRIDRTIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DARECOME.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DAREACIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DARECHIN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SUM1STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SUM1AWAY.FLI", 0, 1, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "SUM2STIL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BGBUT8GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BGBUT8FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "DNBUT8IN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BKBUT8IN.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BKBUTOFF.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "BKBUTON.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2QTFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2QTGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2LDFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2LDGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2N1FL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2N1GL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2NNFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2NNGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2OPFL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u }, 
-     { "MAI2OPGL.FLI", 0, 0, 0, 0, 0, 0, NULL, 0u } 
- }; 
- int gFlic_bunch0[29] = { 
-     10, 
-     11, 
-     12, 
-     13, 
-     14, 
-     15, 
-     16, 
-     17, 
-     18, 
-     19, 
-     20, 
-     21, 
-     22, 
-     23, 
-     24, 
-     25, 
-     35, 
-     26, 
-     27, 
-     36, 
-     28, 
-     29, 
-     130, 
-     131, 
-     132, 
-     42, 
-     43, 
-     135, 
-     45 
- }; 
- int gFlic_bunch1[31] = { 
-     140, 
-     141, 
-     42, 
-     43, 
-     144, 
-     145, 
-     146, 
-     147, 
-     45, 
-     150, 
-     151, 
-     42, 
-     43, 
-     154, 
-     155, 
-     156, 
-     160, 
-     161, 
-     42, 
-     43, 
-     154, 
-     170, 
-     171, 
-     176, 
-     177, 
-     172, 
-     180, 
-     181, 
-     42, 
-     43, 
-     154 
- }; 
- int gFlic_bunch2[8] = { 70, 71, 72, 73, 74, 56, 57, 59 }; 
- int gFlic_bunch3[13] = { 40, 41, 42, 43, 44, 45, 50, 51, 73, 74, 56, 57, 59 }; 
- int gFlic_bunch4[22] = { 
-     80, 
-     81, 
-     82, 
-     83, 
-     84, 
-     85, 
-     42, 
-     43, 
-     88, 
-     45, 
-     110, 
-     111, 
-     42, 
-     43, 
-     45, 
-     115, 
-     116, 
-     117, 
-     118, 
-     119, 
-     120, 
-     121 
- }; 
- int gFlic_bunch5[5] = { 100, 101, 42, 43, 45 }; 
- int gFlic_bunch6[51] = { 
-     190, 
-     191, 
-     192, 
-     42, 
-     43, 
-     195, 
-     200, 
-     201, 
-     210, 
-     212, 
-     213, 
-     220, 
-     221, 
-     222, 
-     220, 
-     221, 
-     225, 
-     230, 
-     231, 
-     42, 
-     43, 
-     154, 
-     45, 
-     220, 
-     221, 
-     222, 
-     220, 
-     221, 
-     225, 
-     250, 
-     251, 
-     42, 
-     43, 
-     254, 
-     255, 
-     256, 
-     154, 
-     42, 
-     43, 
-     260, 
-     220, 
-     221, 
-     222, 
-     220, 
-     221, 
-     225, 
-     280, 
-     281, 
-     42, 
-     43, 
-     284 
- }; 
- int gFlic_bunch7[7] = { 130, 131, 132, 42, 43, 135, 45 }; 
- int gFlic_bunch8[16] = { 290, 291, 292, 293, 294, 295, 296, 297, 42, 43, 154, 301, 42, 43, 304, 305 }; 
- tFlic_bunch gFlic_bunch[9] = { 
-     { COUNT_OF(gFlic_bunch0), gFlic_bunch0 }, 
-     { COUNT_OF(gFlic_bunch1), gFlic_bunch1 }, 
-     { COUNT_OF(gFlic_bunch2), gFlic_bunch2 }, 
-     { COUNT_OF(gFlic_bunch3), gFlic_bunch3 }, 
-     { COUNT_OF(gFlic_bunch4), gFlic_bunch4 }, 
-     { COUNT_OF(gFlic_bunch5), gFlic_bunch5 }, 
-     { COUNT_OF(gFlic_bunch6), gFlic_bunch6 }, 
-     { COUNT_OF(gFlic_bunch7), gFlic_bunch7 }, 
-     { COUNT_OF(gFlic_bunch8), gFlic_bunch8 }, 
- }; 
- char gLast_flic_name[14]; 
- tU32 gPanel_flic_data_length[2]; 
- tU32 gLast_panel_frame_time[2]; 
- tU8* gPanel_flic_data[2]; 
- int gPanel_flic_top[2]; 
- tFlic_descriptor gPanel_flic[2]; 
- int gPanel_flic_left[2]; 
- int gPending_pending_flic = -1; 
- int gSound_ID; 
- int gTranslation_count; 
- tDR_font* gTrans_fonts[15]; 
- tTranslation_record* gTranslations; 
- br_pixelmap* gPalette; 
- void* gPalette_pixels; 
- tFlic_descriptor* gFirst_flic; 
-   
- // Use this function to avoid unaligned memory access. 
- // Added by DethRace 
- tU16 mem_read_u16(void* memory) { 
-     tU16 u16; 
-   
-     memcpy(&- u16 ,-  memory , sizeof(- tU16 ));
 
-     return u16; 
- } 
-   
- // Use this function to avoid unaligned memory access 
- // Added by DethRace 
- void mem_write_u16(void* memory, tU16 u16) { 
-   
-     memcpy(- memory , &- u16 , sizeof(- tU16 ));
 
- } 
-   
- // IDA: void __cdecl EnableTranslationText() 
- void EnableTranslationText(void) { 
-     LOG_TRACE("()"); 
-   
-     gTrans_enabled = 1; 
- } 
-   
- // IDA: void __cdecl DisableTranslationText() 
- void DisableTranslationText(void) { 
-     LOG_TRACE("()"); 
-   
-     gTrans_enabled = 0; 
- } 
-   
- // IDA: void __usercall SetFlicSound(int pSound_ID@<EAX>, tU32 pSound_time@<EDX>) 
- void SetFlicSound(int pSound_ID, tU32 pSound_time) { 
-     LOG_TRACE("(%d, %d)", pSound_ID, pSound_time); 
-   
-     gSound_time = pSound_time; 
-     gSound_ID = pSound_ID; 
- } 
-   
- // IDA: int __cdecl TranslationMode() 
- int TranslationMode(void) { 
-   
-     return gTranslation_count; 
- } 
-   
- // IDA: void __cdecl DontLetFlicFuckWithPalettes() 
- void DontLetFlicFuckWithPalettes(void) { 
-     LOG_TRACE8("()"); 
-   
-     gPalette_fuck_prevention = 1; 
- } 
-   
- // IDA: void __cdecl LetFlicFuckWithPalettes() 
- void LetFlicFuckWithPalettes(void) { 
-     LOG_TRACE8("()"); 
-   
-     gPalette_fuck_prevention = 0; 
- } 
-   
- // IDA: void __cdecl PlayFlicsInDarkness() 
- void PlayFlicsInDarkness(void) { 
-     LOG_TRACE("()"); 
-   
-     gDark_mode = 1; 
- } 
-   
- // IDA: void __cdecl ReilluminateFlics() 
- void ReilluminateFlics(void) { 
-     LOG_TRACE("()"); 
-   
-     gDark_mode = 0; 
-     FadePaletteUp(); 
- } 
-   
- // IDA: void __cdecl TurnFlicTransparencyOn() 
- void TurnFlicTransparencyOn(void) { 
-     LOG_TRACE8("()"); 
-   
-     gTransparency_on = 1; 
- } 
-   
- // IDA: void __cdecl TurnFlicTransparencyOff() 
- void TurnFlicTransparencyOff(void) { 
-     LOG_TRACE8("()"); 
-     gTransparency_on = 0; 
- } 
-   
- // IDA: void __cdecl PlayFlicsFromDisk() 
- void PlayFlicsFromDisk(void) { 
-     gPlay_from_disk = 1; 
- } 
-   
- // IDA: void __cdecl PlayFlicsFromMemory() 
- void PlayFlicsFromMemory(void) { 
-     gPlay_from_disk = 0; 
- } 
-   
- // IDA: int __cdecl FlicsPlayedFromDisk() 
- int FlicsPlayedFromDisk(void) { 
-     return gPlay_from_disk; 
- } 
-   
- // IDA: void __cdecl TurnOffPanelFlics() 
- void TurnOffPanelFlics(void) { 
-     gPanel_flic_disable = 1; 
- } 
-   
- // IDA: void __cdecl TurnOnPanelFlics() 
- void TurnOnPanelFlics(void) { 
-     gPanel_flic_disable = 0; 
- } 
-   
- // IDA: int __usercall GetPanelFlicFrameIndex@<EAX>(int pIndex@<EAX>) 
- int GetPanelFlicFrameIndex(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     return gPanel_flic[pIndex].current_frame; 
- } 
-   
- // IDA: void __cdecl FlicPaletteAllocate() 
- void FlicPaletteAllocate(void) { 
-     LOG_TRACE("()"); 
-   
-     gPalette_pixels = BrMemAllocate(0x400u, kMem_flic_pal); 
-     gPalette = DRPixelmapAllocate(BR_PMT_RGBX_888, 1, 256, gPalette_pixels, 0); 
- } 
-   
- // IDA: void __usercall AssertFlicPixelmap(tFlic_descriptor_ptr pFlic_info@<EAX>, br_pixelmap *pDest_pixelmap@<EDX>) 
- void AssertFlicPixelmap(tFlic_descriptor_ptr pFlic_info, br_pixelmap* pDest_pixelmap) { 
-     LOG_TRACE("(%d, %p)", pFlic_info, pDest_pixelmap); 
-   
-     if (pDest_pixelmap != NULL) { 
-         pFlic_info->first_pixel = (tU8*)pDest_pixelmap->pixels 
-             + pFlic_info->x_offset 
-             + pFlic_info->y_offset * pDest_pixelmap->row_bytes; 
-     } 
-     pFlic_info->the_pixelmap = pDest_pixelmap; 
- } 
-   
- // IDA: int __usercall StartFlic@<EAX>(char *pFile_name@<EAX>, int pIndex@<EDX>, tFlic_descriptor_ptr pFlic_info@<EBX>, tU32 pSize@<ECX>, tS8 *pData_ptr, br_pixelmap *pDest_pixelmap, int pX_offset, int pY_offset, int pFrame_rate) 
- int StartFlic(char* pFile_name, int pIndex, tFlic_descriptor_ptr pFlic_info, tU32 pSize, tS8* pData_ptr, br_pixelmap* pDest_pixelmap, int pX_offset, int pY_offset, int pFrame_rate) { 
-     tU16 claimed_speed; 
-     tU16 magic_number; 
-     tPath_name the_path; 
-     int total_size; 
-     LOG_TRACE("(\"%s\", %d, %p, %u, %p, %p, %d, %d, %d)", pFile_name, pIndex, pFlic_info, pSize, pData_ptr, pDest_pixelmap, pX_offset, pY_offset, pFrame_rate); 
-   
-     if (gPlay_from_disk) { 
-         PathCat(the_path, gApplication_path, "ANIM"); 
-         PathCat(the_path, the_path, pFile_name); 
-         pFlic_info->f = DRfopen(the_path, "rb"); 
-   
-         if (pFlic_info->f == NULL) { 
-             FatalError(kFatalError_LoadFlicFile_S, pFile_name); 
-         } 
-         total_size = GetFileLength(pFlic_info->f); 
-         if (total_size >= 75000) { 
-             pFlic_info->bytes_in_buffer = 75000; 
-         } else { 
-             pFlic_info->bytes_in_buffer = total_size; 
-         } 
-         if (pFlic_info->data_start == NULL) { 
-             pFlic_info->data_start = BrMemAllocate(pFlic_info->bytes_in_buffer, kMem_flic_data); 
-         } 
-   
-         pFlic_info->data = pFlic_info->data_start; 
-         strcpy(- gLast_flic_name ,-  pFile_name );
 
-         fread(- pFlic_info ->- data_start , 1,-  pFlic_info ->- bytes_in_buffer ,-  pFlic_info ->- f );
 
-         pFlic_info->bytes_still_to_be_read = total_size - pFlic_info->bytes_in_buffer; 
-     } else { 
-         pFlic_info->f = NULL; 
-         pFlic_info->data = (char*)pData_ptr; 
-         // TODO: remove this - we added this line because of the padding hack in PlayNextFlicFrame2 
-         pFlic_info->data_start = (char*)pData_ptr; 
-     } 
-     pFlic_info->bytes_remaining = MemReadU32(&pFlic_info->data); 
-     magic_number = MemReadU16(&pFlic_info->data); 
-     if (magic_number == 0xaf11) { 
-         pFlic_info->new_format = 0; 
-     } else if (magic_number == 0xaf12) { 
-         pFlic_info->new_format = 1; 
-     } else { 
-         return -1; 
-     } 
-   
-     pFlic_info->frames_left = MemReadU16(&pFlic_info->data); 
-     pFlic_info->current_frame = 0; 
-     pFlic_info->width = MemReadU16(&pFlic_info->data); 
-     pFlic_info->height = MemReadU16(&pFlic_info->data); 
-     if (MemReadU16(&pFlic_info->data) != 8) { 
-         FatalError(kFatalError_FlicFileNot8Bits_S, gLast_flic_name); 
-     } 
-     MemSkipBytes(&pFlic_info->data, 2); 
-     claimed_speed = MemReadU16(&pFlic_info->data); 
-     MemSkipBytes(&pFlic_info->data, 0x6e); 
-     pFlic_info->the_pixelmap = pDest_pixelmap; 
-   
-     if (pX_offset == -1) { 
-         if (pDest_pixelmap != NULL) { 
-             pFlic_info->x_offset = (pDest_pixelmap->width - pFlic_info->width) / 2; 
-         } else { 
-             pFlic_info->x_offset = 0; 
-         } 
-     } else { 
-         pFlic_info->x_offset = pX_offset; 
-     } 
-     if (pY_offset == -1) { 
-         if (pDest_pixelmap != NULL) { 
-             pFlic_info->y_offset = (pDest_pixelmap->height - pFlic_info->height) / 2; 
-         } else { 
-             pFlic_info->y_offset = 0; 
-         } 
-     } else { 
-         pFlic_info->y_offset = pY_offset; 
-     } 
-   
-     if (pFrame_rate != 0) { 
-         pFlic_info->frame_period = 1000 / pFrame_rate; 
-     } else { 
-         if (claimed_speed == 0) { 
-             FatalError(kFatalError_FlicFileNoFrameRate_S, gLast_flic_name); 
-         } 
-         if (pFlic_info->new_format) { 
-             pFlic_info->frame_period = claimed_speed; 
-         } else { 
-             pFlic_info->frame_period = 14 * claimed_speed; 
-         } 
-     } 
-     pFlic_info->the_index = pIndex; 
-     AssertFlicPixelmap(pFlic_info, pDest_pixelmap); 
-     return 0; 
- } 
-   
- // IDA: void __cdecl FreeFlicPaletteAllocate() 
- void FreeFlicPaletteAllocate(void) { 
-     LOG_TRACE("()"); 
-   
-     if (gPalette_allocate_count == 0) { 
-         FatalError(kFatalError_FlicPaletteDisposeBeforeAllocation); 
-     } 
-     gPalette_allocate_count--; 
-     if (gPalette_allocate_count == 0) { 
-         BrMemFree(gPalette_pixels); 
-         BrPixelmapFree(gPalette); 
-     } 
- } 
-   
- // IDA: int __usercall EndFlic@<EAX>(tFlic_descriptor_ptr pFlic_info@<EAX>) 
- int EndFlic(tFlic_descriptor_ptr pFlic_info) { 
-     LOG_TRACE("(%p)", pFlic_info); 
-   
-     if (pFlic_info->f != NULL) { 
-         BrMemFree(pFlic_info->data_start); 
-         pFlic_info->data_start = NULL; 
-         pFlic_info->f = NULL; 
-     } 
-     if (pFlic_info->data != NULL) { 
-         pFlic_info->data = NULL; 
-     } 
-     return 0; 
- } 
-   
- // IDA: void __usercall DoColourMap(tFlic_descriptor_ptr pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoColourMap(tFlic_descriptor_ptr pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int packet_count; 
-     int skip_count; 
-     int change_count; 
-     int current_colour = 0; 
-     tU8* palette_pixels; 
-     tU8 red; 
-     tU8 green; 
-     tU8 blue; 
-   
-     palette_pixels = gPalette_pixels; 
-   
-     packet_count = MemReadU16(&pFlic_info->data); 
-     for (i = 0; i < packet_count; i++) { 
-         skip_count = MemReadU8(&pFlic_info->data); 
-         change_count = MemReadU8(&pFlic_info->data); 
-         if (!change_count) { 
-             change_count = 256; 
-         } 
-         palette_pixels += skip_count * sizeof(br_int_32); 
-         current_colour += skip_count; 
-         for (j = 0; j < change_count; j++) { 
-             red = MemReadU8(&pFlic_info->data); 
-             blue = MemReadU8(&pFlic_info->data); 
-             green = MemReadU8(&pFlic_info->data); 
-             // argb 
- #if BR_ENDIAN_BIG 
-             palette_pixels[3] = green * 4; 
-             palette_pixels[2] = blue * 4; 
-             palette_pixels[1] = red * 4; 
-             palette_pixels[0] = 0; 
- #else 
-             palette_pixels[0] = green * 4; 
-             palette_pixels[1] = blue * 4; 
-             palette_pixels[2] = red * 4; 
-             palette_pixels[3] = 0; 
- #endif 
-             palette_pixels += 4; 
-         } 
-         if (!gPalette_fuck_prevention) { 
-             DRSetPaletteEntries(gPalette, current_colour, change_count); 
-         } 
-     } 
- } 
-   
- // IDA: void __usercall DoDifferenceX(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoDifferenceX(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int first_line; 
-     int line_count; 
-     int number_of_packets; 
-     int skip_count; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU8* line_pixel_ptr; 
-     tU8 the_byte; 
-     tU32 the_row_bytes; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     first_line = MemReadU16(&pFlic_info->data); 
-     line_count = MemReadU16(&pFlic_info->data); 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     line_pixel_ptr = pFlic_info->first_pixel + first_line * the_row_bytes; 
-     for (i = 0; i < line_count; i++) { 
-         pixel_ptr = line_pixel_ptr; 
-         number_of_packets = MemReadU8(&pFlic_info->data); 
-         for (j = 0; j < number_of_packets; j++) { 
-             skip_count = MemReadU8(&pFlic_info->data); 
-             size_count = MemReadS8(&pFlic_info->data); 
-             pixel_ptr += skip_count; 
-             if (size_count >= 0) { 
-                 for (k = 0; k < size_count; k++) { 
-                     *pixel_ptr = *pFlic_info->data; 
-                     pFlic_info->data++; 
-                     pixel_ptr++; 
-                 } 
-             } else { 
-                 the_byte = *pFlic_info->data; 
-                 pFlic_info->data++; 
-                 for (k = 0; k < -size_count; k++) { 
-                     *pixel_ptr = the_byte; 
-                     pixel_ptr++; 
-                 } 
-             } 
-         } 
-         line_pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoDifferenceTrans(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoDifferenceTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int first_line; 
-     int line_count; 
-     int number_of_packets; 
-     int skip_count; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU8* line_pixel_ptr; 
-     tU8 the_byte; 
-     tU32 the_row_bytes; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     first_line = MemReadU16(&pFlic_info->data); 
-     line_count = MemReadU16(&pFlic_info->data); 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     line_pixel_ptr = pFlic_info->first_pixel + first_line * the_row_bytes; 
-     for (i = 0; i < line_count; i++) { 
-         pixel_ptr = line_pixel_ptr; 
-         number_of_packets = MemReadU8(&pFlic_info->data); 
-         for (j = 0; j < number_of_packets; j++) { 
-             skip_count = MemReadU8(&pFlic_info->data); 
-             size_count = MemReadS8(&pFlic_info->data); 
-             pixel_ptr += skip_count; 
-             if (size_count >= 0) { 
-                 for (k = 0; k < size_count; k++) { 
-                     the_byte = *pFlic_info->data; 
-                     pFlic_info->data++; 
-                     if (the_byte != '\0') { 
-                         *pixel_ptr = the_byte; 
-                     } 
-                     pixel_ptr++; 
-                 } 
-             } else { 
-                 the_byte = *pFlic_info->data; 
-                 pFlic_info->data++; 
-                 if (the_byte == '\0') { 
-                     pixel_ptr += size_count; 
-                 } else { 
-                     for (k = 0; k < -size_count; k++) { 
-                         *pixel_ptr = the_byte; 
-                         pixel_ptr++; 
-                     } 
-                 } 
-             } 
-         } 
-         line_pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoColour256(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoColour256(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int packet_count; 
-     int skip_count; 
-     int change_count; 
-     int current_colour; 
-     tU8* palette_pixels; 
-     tU8 red; 
-     tU8 green; 
-     tU8 blue; 
-   
-     current_colour = 0; 
-     palette_pixels = gPalette_pixels; 
-   
-     packet_count = MemReadU16(&pFlic_info->data); 
-     for (i = 0; i < packet_count; i++) { 
-         skip_count = MemReadU8(&pFlic_info->data); 
-         change_count = MemReadU8(&pFlic_info->data); 
-         if (!change_count) { 
-             change_count = 256; 
-         } 
-         palette_pixels += skip_count * sizeof(br_int_32); 
-         current_colour += skip_count; 
-         for (j = 0; j < change_count; j++) { 
-             red = MemReadU8(&pFlic_info->data); 
-             blue = MemReadU8(&pFlic_info->data); 
-             green = MemReadU8(&pFlic_info->data); 
-             // argb 
- #if BR_ENDIAN_BIG 
-             palette_pixels[3] = green; 
-             palette_pixels[2] = blue; 
-             palette_pixels[1] = red; 
-             palette_pixels[0] = 0; 
- #else 
-             palette_pixels[0] = green; 
-             palette_pixels[1] = blue; 
-             palette_pixels[2] = red; 
-             palette_pixels[3] = 0; 
- #endif 
-             palette_pixels += 4; 
-             // LOG_DEBUG("color %d", current_colour); 
-         } 
-         if (!gPalette_fuck_prevention) { 
-             DRSetPaletteEntries(gPalette, current_colour, change_count); 
-         } 
-     } 
- } 
-   
- // IDA: void __usercall DoDeltaTrans(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoDeltaTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int line_count; 
-     int number_of_packets; 
-     int skip_count; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU8 the_byte; 
-     tU8 the_byte2; 
-     tU32 the_row_bytes; 
-     tU16* line_pixel_ptr; 
-     tU16 the_word; 
-     LOG_TRACE8("(%p, %d)", pFlic_info, chunk_length); 
-   
-     line_count = MemReadU16(&pFlic_info->data); 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     pixel_ptr = pFlic_info->first_pixel; 
-   
-     for (i = 0; i < line_count;) { 
-         number_of_packets = MemReadS16(&pFlic_info->data); 
-         line_pixel_ptr = (tU16*)pixel_ptr; 
-   
-         if (number_of_packets < 0) { 
-             pixel_ptr = pixel_ptr + the_row_bytes * -number_of_packets; 
-         } else { 
-             for (j = 0; j < number_of_packets; j++) { 
-                 skip_count = MemReadU8(&pFlic_info->data); 
-                 size_count = MemReadS8(&pFlic_info->data); 
-                 line_pixel_ptr += skip_count / 2; 
-                 if (size_count < 0) { 
-                     the_byte = *pFlic_info->data++; 
-                     the_byte2 = *pFlic_info->data++; 
-   
-                     if (the_byte && the_byte2) { 
-                         the_word = *((tU16*)pFlic_info->data - 1); 
-                         for (k = 0; k < -size_count; k++) { 
-                             mem_write_u16(line_pixel_ptr, the_word); 
-                             line_pixel_ptr++; 
-                         } 
-                     } else { 
-                         for (k = 0; k < -size_count; k++) { 
-                             if (the_byte) { 
-                                 *(tU8*)line_pixel_ptr = the_byte; 
-                             } 
-                             line_pixel_ptr = (tU16*)((tU8*)line_pixel_ptr + 1); 
-                             if (the_byte2) { 
-                                 *(tU8*)line_pixel_ptr = the_byte2; 
-                             } 
-                             line_pixel_ptr = (tU16*)((tU8*)line_pixel_ptr + 1); 
-                         } 
-                     } 
-                 } else { 
-                     for (k = 0; k < size_count; k++) { 
-                         the_word = *(tU16*)pFlic_info->data; 
-                         pFlic_info->data += 2; 
-                         if (the_word) { 
-                             mem_write_u16(line_pixel_ptr, the_word); 
-                         } 
-                         line_pixel_ptr++; 
-                     } 
-                 } 
-             } 
-             pixel_ptr = pixel_ptr + the_row_bytes; 
-             i++; 
-         } 
-     } 
- } 
-   
- // IDA: void __usercall DoDeltaX(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoDeltaX(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int line_count; 
-     int number_of_packets; 
-     int skip_count; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU32 the_row_bytes; 
-     tU16* line_pixel_ptr; 
-     tU16 the_word; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     line_count = MemReadU16(&pFlic_info->data); 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     pixel_ptr = pFlic_info->first_pixel; 
-   
-     for (i = 0; i < line_count;) { 
-         number_of_packets = MemReadS16(&pFlic_info->data); 
-         line_pixel_ptr = (tU16*)pixel_ptr; 
-   
-         if (number_of_packets < 0) { 
-             pixel_ptr = pixel_ptr + the_row_bytes * -number_of_packets; 
-         } else { 
-             for (j = 0; j < number_of_packets; j++) { 
-                 skip_count = MemReadU8(&pFlic_info->data); 
-                 size_count = MemReadS8(&pFlic_info->data); 
-                 line_pixel_ptr += skip_count / 2; 
-                 if (size_count < 0) { 
-                     the_word = *(tU16*)pFlic_info->data; 
-                     pFlic_info->data += 2; 
-                     for (k = 0; k < -size_count; k++) { 
-                         *line_pixel_ptr = the_word; 
-                         line_pixel_ptr++; 
-                     } 
-                 } else { 
-                     for (k = 0; k < size_count; k++) { 
-                         the_word = *(tU16*)pFlic_info->data; 
-                         pFlic_info->data += 2; 
-                         *line_pixel_ptr = the_word; 
-                         line_pixel_ptr++; 
-                     } 
-                 } 
-             } 
-             pixel_ptr = pixel_ptr + the_row_bytes; 
-             i++; 
-         } 
-     } 
- } 
-   
- // IDA: void __usercall DoBlack(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoBlack(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int the_width; 
-     tU8* pixel_ptr; 
-     tU32 the_row_bytes; 
-     tU32* line_pixel_ptr; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     pixel_ptr = pFlic_info->first_pixel; 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     the_width = pFlic_info->width; 
-     for (i = 0; i < pFlic_info->height; i++) { 
-         line_pixel_ptr = (tU32*)pixel_ptr; 
-         for (j = 0; j < the_width / (int) sizeof(tU32); j++) { // Pierre-Marie Baty -- added type cast 
-             *line_pixel_ptr = 0; 
-             line_pixel_ptr++; 
-         } 
-         pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoRunLengthX(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoRunLengthX(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int number_of_packets; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU8* line_pixel_ptr; 
-     tU8 the_byte; 
-     tU32 the_row_bytes; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     pixel_ptr = pFlic_info->first_pixel; 
-   
-     for (i = 0; i < pFlic_info->height; i++) { 
-         line_pixel_ptr = pixel_ptr; 
-         number_of_packets = MemReadU8(&pFlic_info->data); 
-         for (j = 0; j < number_of_packets; j++) { 
-             size_count = MemReadS8(&pFlic_info->data); 
-             if (size_count >= 0) { 
-                 the_byte = MemReadU8(&pFlic_info->data); 
-                 for (k = 0; k < size_count; k++) { 
-                     *line_pixel_ptr = the_byte; 
-                     line_pixel_ptr++; 
-                 } 
-             } else { 
-                 for (k = 0; k < -size_count; k++) { 
-                     the_byte = MemReadU8(&pFlic_info->data); 
-                     *line_pixel_ptr = the_byte; 
-                     line_pixel_ptr++; 
-                 } 
-             } 
-         } 
-         pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoRunLengthTrans(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoRunLengthTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int k; 
-     int number_of_packets; 
-     int size_count; 
-     tU8* pixel_ptr; 
-     tU8* line_pixel_ptr; 
-     tU8 the_byte; 
-     tU32 the_row_bytes; 
-     LOG_TRACE8("(%p, %d)", pFlic_info, chunk_length); 
-   
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     pixel_ptr = pFlic_info->first_pixel; 
-   
-     for (i = 0; i < pFlic_info->height; i++) { 
-         line_pixel_ptr = pixel_ptr; 
-         number_of_packets = MemReadU8(&pFlic_info->data); 
-         for (j = 0; j < number_of_packets; j++) { 
-             size_count = MemReadS8(&pFlic_info->data); 
-             if (size_count >= 0) { 
-                 the_byte = MemReadU8(&pFlic_info->data); 
-   
-                 for (k = 0; k < size_count; k++) { 
-                     if (the_byte) { 
-                         *line_pixel_ptr = the_byte; 
-                     } 
-                     line_pixel_ptr++; 
-                 } 
-             } else { 
-                 for (k = 0; k < -size_count; k++) { 
-                     the_byte = MemReadU8(&pFlic_info->data); 
-                     if (the_byte) { 
-                         *line_pixel_ptr = the_byte; 
-                     } 
-                     line_pixel_ptr++; 
-                 } 
-             } 
-         } 
-         pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoUncompressed(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoUncompressed(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int the_width; 
-     tU8* pixel_ptr; 
-     tU32 the_row_bytes; 
-     tU32* line_pixel_ptr; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     pixel_ptr = pFlic_info->first_pixel; 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     the_width = pFlic_info->width; 
-     for (i = 0; i < pFlic_info->height; i++) { 
-         line_pixel_ptr = (tU32*)pixel_ptr; 
-         for (j = 0; j < the_width / 4; j++) { 
-             *line_pixel_ptr = MemReadU32(&pFlic_info->data); 
-             line_pixel_ptr++; 
-         } 
-         pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoUncompressedTrans(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoUncompressedTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     int i; 
-     int j; 
-     int the_width; 
-     tU8* pixel_ptr; 
-     tU8* line_pixel_ptr; 
-     tU8 the_byte; 
-     tU32 the_row_bytes; 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     pixel_ptr = pFlic_info->first_pixel; 
-     the_row_bytes = pFlic_info->the_pixelmap->row_bytes; 
-     the_width = pFlic_info->width; 
-     for (i = 0; i < pFlic_info->height; i++) { 
-         line_pixel_ptr = pixel_ptr; 
-         for (j = 0; j < the_width; j++) { 
- #if defined(DETHRACE_FIX_BUGS) 
-             the_byte = MemReadU8(&pFlic_info->data); 
- #else 
-             the_byte = MemReadU32(&pFlic_info->data); 
- #endif 
-             if (the_byte != '\0') { 
-                 *line_pixel_ptr = the_byte; 
-             } 
-             line_pixel_ptr++; 
-         } 
-         pixel_ptr += the_row_bytes; 
-     } 
- } 
-   
- // IDA: void __usercall DoMini(tFlic_descriptor *pFlic_info@<EAX>, tU32 chunk_length@<EDX>) 
- void DoMini(tFlic_descriptor* pFlic_info, tU32 chunk_length) { 
-     LOG_TRACE("(%p, %d)", pFlic_info, chunk_length); 
-   
-     MemSkipBytes(&pFlic_info->data, chunk_length - 6); 
- } 
-   
- // IDA: void __usercall DrawTranslations(tFlic_descriptor *pFlic_info@<EAX>, int pLast_frame@<EDX>) 
- void DrawTranslations(tFlic_descriptor* pFlic_info, int pLast_frame) { 
-     tTranslation_record* trans; 
-     int i; 
-     int x; 
-     int width; 
-     int right_edge; 
-     LOG_TRACE("(%p, %d)", pFlic_info, pLast_frame); 
-   
-     for (i = 0; i < gTranslation_count; i++) { 
-         trans = &gTranslations[i]; 
-         if (trans->flic_index == pFlic_info->the_index && (trans->every_frame || pLast_frame)) { 
-             width = DRTextWidth(gTrans_fonts[trans->font_index], trans->text); 
-             switch (trans->justification) { 
-             case eJust_left: 
-                 x = trans->x; 
-                 right_edge = x + width; 
-                 break; 
-             case eJust_right: 
-                 x = trans->x - width; 
-                 right_edge = x; 
-                 break; 
-             case eJust_centre: 
-                 x = trans->x - width / 2; 
-                 right_edge = x + width / 2; 
-                 break; 
-             default: 
-                 TELL_ME_IF_WE_PASS_THIS_WAY(); 
-             } 
-             TransDRPixelmapText( 
-                 pFlic_info->the_pixelmap, 
-                 x + (trans->global ? 0 : pFlic_info->x_offset), 
-                 trans->y + (trans->global ? 0 : pFlic_info->y_offset), 
-                 gTrans_fonts[trans->font_index], 
-                 trans->text, 
-                 right_edge); 
-         } 
-     } 
- } 
-   
- // IDA: int __usercall PlayNextFlicFrame2@<EAX>(tFlic_descriptor *pFlic_info@<EAX>, int pPanel_flic@<EDX>) 
- int PlayNextFlicFrame2(tFlic_descriptor* pFlic_info, int pPanel_flic) { 
-     tU32 frame_length; 
-     tU32 chunk_length; 
-     int chunk_count; 
-     int chunk_counter; 
-     int chunk_type; 
-     int magic_bytes; 
-     //int last_frame; // Pierre-Marie Baty -- unused variable 
-     int data_knocked_off; 
-     int read_amount; 
-   
-     // LOG_DEBUG("%d (%p), frames left: %d offset: %d", pFlic_info->the_index, pFlic_info, pFlic_info->frames_left, (pFlic_info->data - pFlic_info->data_start) + 4); 
-     PossibleService(); 
-     frame_length = MemReadU32(&pFlic_info->data); 
-     magic_bytes = MemReadU16(&pFlic_info->data); 
-     chunk_count = MemReadU16(&pFlic_info->data); 
-   
-     MemSkipBytes(&pFlic_info->data, 8); 
-     if (magic_bytes == 0xf1fa) { 
-         for (chunk_counter = 0; chunk_counter < chunk_count; chunk_counter++) { 
-             chunk_length = MemReadU32(&pFlic_info->data); 
-             chunk_type = MemReadU16(&pFlic_info->data); 
-             switch (chunk_type) { 
-             case 4: 
-                 DoColour256(pFlic_info, chunk_length); 
-                 break; 
-             case 7: 
-                 if (gTransparency_on) { 
-                     DoDeltaTrans(pFlic_info, chunk_length); 
-                 } else { 
-                     DoDeltaX(pFlic_info, chunk_length); 
-                 } 
-                 break; 
-             case 11: 
-                 DoColourMap(pFlic_info, chunk_length); 
-                 break; 
-             case 12: 
-                 if (gTransparency_on) { 
-                     DoDifferenceTrans(pFlic_info, chunk_length); 
-                 } else { 
-                     DoDifferenceX(pFlic_info, chunk_length); 
-                 } 
-                 break; 
-             case 13: 
-                 DoBlack(pFlic_info, chunk_length); 
-                 break; 
-             case 15: 
-                 if (gTransparency_on) { 
-                     DoRunLengthTrans(pFlic_info, chunk_length); 
-                 } else { 
-                     DoRunLengthX(pFlic_info, chunk_length); 
-                 } 
-                 break; 
-             case 16: 
-                 if (gTransparency_on) { 
-                     DoUncompressedTrans(pFlic_info, chunk_length); 
-                 } else { 
-                     DoUncompressed(pFlic_info, chunk_length); 
-                 } 
-                 break; 
-             case 18: 
-                 DoMini(pFlic_info, chunk_length); 
-                 break; 
-             default: 
-                 LOG_WARN("unrecognized chunk type"); 
-                 MemSkipBytes(&pFlic_info->data, chunk_length - 6); 
-                 break; 
-             } 
-             // Align on even byte 
-             pFlic_info->data = (char*)((uintptr_t)(pFlic_info->data + 1) & (~(uintptr_t)1)); 
-         } 
-     } else { 
-         LOG_WARN("not frame header"); 
-         MemSkipBytes(&pFlic_info->data, frame_length - 16); 
-         pFlic_info->frames_left++; 
-         pFlic_info->current_frame--; 
-     } 
-     pFlic_info->current_frame++; 
-     pFlic_info->frames_left--; 
-     if (gTrans_enabled && gTranslation_count != 0 && !pPanel_flic) { 
-         DrawTranslations(pFlic_info, pFlic_info->frames_left == 0); 
-     } 
-     if (pFlic_info->f != NULL && pFlic_info->bytes_still_to_be_read) { 
-         data_knocked_off = pFlic_info->data - pFlic_info->data_start; 
-         memmove(- pFlic_info ->- data_start ,-  pFlic_info ->- data ,-  pFlic_info ->- bytes_in_buffer  --  data_knocked_off );
 
-         pFlic_info->data = pFlic_info->data_start; 
-         pFlic_info->bytes_in_buffer -= data_knocked_off; 
-   
-         if (pFlic_info->bytes_still_to_be_read > data_knocked_off) { 
-             read_amount = data_knocked_off; 
-         } else { 
-             read_amount = pFlic_info->bytes_still_to_be_read; 
-         } 
-         if (read_amount != 0) { 
-             fread(&- pFlic_info ->- data_start [- pFlic_info ->- bytes_in_buffer ], 1,-  read_amount ,-  pFlic_info ->- f );
 
-         } 
-         pFlic_info->bytes_in_buffer += read_amount; 
-         pFlic_info->bytes_still_to_be_read -= read_amount; 
-     } 
-     return pFlic_info->frames_left == 0; 
- } 
-   
- // IDA: int __usercall PlayNextFlicFrame@<EAX>(tFlic_descriptor *pFlic_info@<EAX>) 
- int PlayNextFlicFrame(tFlic_descriptor* pFlic_info) { 
-     LOG_TRACE("(%p)", pFlic_info); 
-   
-     return PlayNextFlicFrame2(pFlic_info, 0); 
- } 
-   
- // IDA: int __usercall PlayFlic@<EAX>(int pIndex@<EAX>, tU32 pSize@<EDX>, tS8 *pData_ptr@<EBX>, br_pixelmap *pDest_pixelmap@<ECX>, int pX_offset, int pY_offset, void (*DoPerFrame)(), int pInterruptable, int pFrame_rate) 
- int PlayFlic(int pIndex, tU32 pSize, tS8* pData_ptr, br_pixelmap* pDest_pixelmap, int pX_offset, int pY_offset, void (*DoPerFrame)(void), int pInterruptable, int pFrame_rate) { 
-     int finished_playing; 
-     tFlic_descriptor the_flic; 
-     tU32 last_frame; 
-     tU32 new_time; 
-     tU32 frame_period; 
-     LOG_TRACE("(%d, %u, %p, %p, %d, %d, %p, %d, %d)", pIndex, pSize, pData_ptr, pDest_pixelmap, pX_offset, pY_offset, DoPerFrame, pInterruptable, pFrame_rate); 
-   
-     finished_playing = 0; 
-     the_flic.data_start = NULL; 
-     if (StartFlic(gMain_flic_list[pIndex].file_name, pIndex, &the_flic, pSize, pData_ptr, pDest_pixelmap, pX_offset, pY_offset, pFrame_rate)) { 
-         LOG_WARN("startflic returned error"); 
-         return -1; 
-     } 
-   
-     last_frame = 0; 
-     while ((!pInterruptable || !AnyKeyDown()) && !finished_playing) { 
-         new_time = PDGetTotalTime(); 
-         frame_period = new_time - last_frame; 
-   
-         if (gSound_time != 0 && new_time >= gSound_time) { 
-             DRS3StartSound(gEffects_outlet, gSound_ID); 
-             gSound_time = 0; 
-         } 
-         if (frame_period >= the_flic.frame_period) { 
-             last_frame = new_time; 
-             finished_playing = PlayNextFlicFrame(&the_flic); 
-             DoPerFrame(); 
-             if (!gDark_mode) { 
-                 EnsurePaletteUp(); 
-             } 
-             ServiceGame(); 
-         } 
-     } 
-     ServiceGame(); 
-     EndFlic(&the_flic); 
-     return 0; 
- } 
-   
- // IDA: void __cdecl SwapScreen() 
- void SwapScreen(void) { 
-     PDScreenBufferSwap(0); 
- } 
-   
- // IDA: void __usercall ShowFlic(int pIndex@<EAX>) 
- void ShowFlic(int pIndex) { 
-     do { 
-         PlayFlic( 
-             pIndex, 
-             gMain_flic_list[pIndex].the_size, 
-             gMain_flic_list[pIndex].data_ptr, 
-             gBack_screen, 
-             gMain_flic_list[pIndex].x_offset, 
-             gMain_flic_list[pIndex].y_offset, 
-             SwapScreen, 
-             gMain_flic_list[pIndex].interruptable, 
-             gMain_flic_list[pIndex].frame_rate); 
-     } while (gMain_flic_list[pIndex].repeat && !AnyKeyDown()); 
-     gLast_flic_name[0] = '\0'; // byte_10344C; 
- } 
-   
- // IDA: void __cdecl InitFlics() 
- void InitFlics(void) { 
-     int i; 
-     LOG_TRACE("()"); 
-   
-     for (i = 0; i < COUNT_OF(gMain_flic_list); i++) { 
-         gMain_flic_list[i].data_ptr = NULL; 
-     } 
- } 
-   
- // IDA: int __usercall LoadFlic@<EAX>(int pIndex@<EAX>) 
- int LoadFlic(int pIndex) { 
-     tPath_name the_path; 
-     FILE* f; 
-     //char* the_buffer; // Pierre-Marie Baty -- unused variable 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     if (pIndex < 0) { 
-         return 0; 
-     } 
-     if (gMain_flic_list[pIndex].data_ptr != NULL) { 
-         MAMSLock((void**)&gMain_flic_list[pIndex].data_ptr); 
-         return 1; 
-     } 
-     if (gPlay_from_disk) { 
-         gMain_flic_list[pIndex].data_ptr = NULL; 
-         return 1; 
-     } 
-     PossibleService(); 
-     PathCat(the_path, gApplication_path, "ANIM"); 
-     PathCat(the_path, the_path, gMain_flic_list[pIndex].file_name); 
-     f = DRfopen(the_path, "rb"); 
-   
-     if (f == NULL) { 
-         FatalError(kFatalError_LoadFlicFile_S, gMain_flic_list[pIndex].file_name); 
-     } 
-   
-     gMain_flic_list[pIndex].the_size = GetFileLength(f); 
-     gMain_flic_list[pIndex].data_ptr = BrMemAllocate(gMain_flic_list[pIndex].the_size, 0x90u); 
-   
-     if (gMain_flic_list[pIndex].data_ptr == NULL) { 
-         if (AllocationErrorsAreFatal()) { 
-             FatalError(kFatalError_AllocateFlicFile_S, gMain_flic_list[pIndex].file_name); 
-         } 
- #ifdef DETHRACE_FIX_BUGS 
- #endif 
-         return 0; 
-     } 
-   
-     fread(- gMain_flic_list [- pIndex ]- . data_ptr, 1,-  gMain_flic_list [- pIndex ]- . the_size,-  f );
 
-     strcpy(- gLast_flic_name ,-  gMain_flic_list [- pIndex ]- . file_name);
 
-     return 1; 
- } 
-   
- // IDA: void __usercall UnlockFlic(int pIndex@<EAX>) 
- void UnlockFlic(int pIndex) { 
-     if (pIndex >= 0) { 
-         if (gMain_flic_list[pIndex].data_ptr != NULL) { 
-             MAMSUnlock((void**)&gMain_flic_list[pIndex].data_ptr); 
-         } 
-     } 
- } 
-   
- // IDA: int __usercall LoadFlicData@<EAX>(char *pName@<EAX>, tU8 **pData@<EDX>, tU32 *pData_length@<EBX>) 
- int LoadFlicData(char* pName, tU8** pData, tU32* pData_length) { 
-     FILE* f; 
-     tPath_name the_path; 
-     LOG_TRACE("(\"%s\", %p, %p)", pName, pData, pData_length); 
-   
-     if (*pData != NULL) { 
-         MAMSLock((void**)pData); 
-         return 1; 
-     } 
-     if (gPlay_from_disk) { 
-         return 1; 
-     } 
-     PossibleService(); 
-     PathCat(the_path, gApplication_path, "ANIM"); 
-     PathCat(the_path, the_path, pName); 
-     f = DRfopen(the_path, "rb"); 
-     if (f == NULL) { 
-         return 0; 
-     } 
-     *pData_length = GetFileLength(f); 
-     *pData = BrMemAllocate(*pData_length, kMem_flic_data_2); 
-     if (*pData == NULL) { 
-         return 0; 
-     } 
-     fread(*- pData , 1, *- pData_length ,-  f );
 
-     return 1; 
- } 
-   
- // IDA: void __usercall FreeFlic(int pIndex@<EAX>) 
- void FreeFlic(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     PossibleService(); 
-     if (gMain_flic_list[pIndex].data_ptr != NULL) { 
-         BrMemFree(gMain_flic_list[pIndex].data_ptr); 
-         gMain_flic_list[pIndex].data_ptr = NULL; 
-     } 
- } 
-   
- // IDA: void __usercall ForceRunFlic(int pIndex@<EAX>) 
- void ForceRunFlic(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     LoadFlic(pIndex); 
-     ShowFlic(pIndex); 
-     UnlockFlic(pIndex); 
- } 
-   
- // IDA: void __usercall RunFlicAt(int pIndex@<EAX>, int pX@<EDX>, int pY@<EBX>) 
- void RunFlicAt(int pIndex, int pX, int pY) { 
-     LOG_TRACE("(%d, %d, %d)", pIndex, pX, pY); 
-   
-     LoadFlic(pIndex); 
-     PlayFlic( 
-         pIndex, 
-         gMain_flic_list[pIndex].the_size, 
-         gMain_flic_list[pIndex].data_ptr, 
-         gBack_screen, 
-         pX, 
-         pY, 
-         SwapScreen, 
-         0, 
-         0); 
-     UnlockFlic(pIndex); 
- } 
-   
- // IDA: void __usercall RunFlic(int pIndex@<EAX>) 
- void RunFlic(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     if (gPending_flic >= 0) { 
-         ForceRunFlic(gPending_flic); 
-         gPending_flic = -1; 
-     } 
-     if (LoadFlic(pIndex)) { 
-         if (gMain_flic_list[pIndex].queued) { 
-             gPending_flic = pIndex; 
-         } else { 
-             ShowFlic(pIndex); 
-             UnlockFlic(pIndex); 
-         } 
-     } 
- } 
-   
- // IDA: void __usercall PreloadBunchOfFlics(int pBunch_index@<EAX>) 
- void PreloadBunchOfFlics(int pBunch_index) { 
-     int i; 
-     LOG_TRACE("(%d)", pBunch_index); 
-   
-     for (i = 0; i < gFlic_bunch[pBunch_index].count; i++) { 
-         LoadFlic(gFlic_bunch[pBunch_index].indexes[i]); 
-     } 
- } 
-   
- // IDA: void __usercall UnlockBunchOfFlics(int pBunch_index@<EAX>) 
- void UnlockBunchOfFlics(int pBunch_index) { 
-     int i; 
-     LOG_TRACE("(%d)", pBunch_index); 
-   
-     for (i = 0; i < gFlic_bunch[pBunch_index].count; i++) { 
-         UnlockFlic(gFlic_bunch[pBunch_index].indexes[i]); 
-     } 
- } 
-   
- // IDA: void __usercall FlushAllFlics(int pBunch_index@<EAX>) 
- void FlushAllFlics(int pBunch_index) { 
-     int i; 
-     LOG_TRACE("(%d)", pBunch_index); 
-   
-     for (i = 0; i < COUNT_OF(gFlic_bunch); i++) { 
-         FreeFlic(i); 
-     } 
- } 
-   
- // IDA: void __cdecl InitFlicQueue() 
- void InitFlicQueue(void) { 
-     gFirst_flic = NULL; 
- } 
-   
- // IDA: int __cdecl FlicQueueFinished() 
- int FlicQueueFinished(void) { 
-     tFlic_descriptor* the_flic; 
-     LOG_TRACE("()"); 
-   
-     the_flic = gFirst_flic; 
-     while (the_flic != NULL) { 
-         if (the_flic->must_finish) { 
-             return 0; 
-         } 
-         the_flic = the_flic->next; 
-     } 
-     return 1; 
- } 
-   
- // IDA: void __usercall ProcessFlicQueue(tU32 pInterval@<EAX>) 
- void ProcessFlicQueue(tU32 pInterval) { 
-     tFlic_descriptor* the_flic; 
-     tFlic_descriptor* last_flic; 
-     tFlic_descriptor* doomed_flic; 
-     tU32 new_time; 
-     int finished_playing; 
-     LOG_TRACE8("(%d)", pInterval); 
-   
-     DontLetFlicFuckWithPalettes(); 
-     TurnFlicTransparencyOn(); 
-     the_flic = gFirst_flic; 
-     last_flic = NULL; 
-     new_time = PDGetTotalTime(); 
-     while (the_flic != NULL) { 
-         if (new_time - the_flic->last_frame < the_flic->frame_period) { 
-             finished_playing = 0; 
-         } else { 
-             the_flic->last_frame = new_time; 
-             finished_playing = PlayNextFlicFrame(the_flic); 
-         } 
-         if (finished_playing) { 
-             EndFlic(the_flic); 
-             if (last_flic != NULL) { 
-                 last_flic->next = the_flic->next; 
-             } else { 
-                 gFirst_flic = the_flic->next; 
-             } 
-             doomed_flic = the_flic; 
-             the_flic = the_flic->next; 
-             BrMemFree(doomed_flic); 
-         } else { 
-             last_flic = the_flic; 
-             the_flic = the_flic->next; 
-         } 
-     } 
-     TurnFlicTransparencyOff(); 
-     LetFlicFuckWithPalettes(); 
- } 
-   
- // IDA: void __cdecl FlushFlicQueue() 
- void FlushFlicQueue(void) { 
-     tFlic_descriptor* the_flic; 
-     tFlic_descriptor* old_flic; 
-     LOG_TRACE("()"); 
-   
-     // Jeff: loop through pending flics until we reach the end or we find one that is `must_finish`. 
-     // If `must_finish`, we process the queue then check again. 
-     // If there are no `must_finish` in the list, immediately end any remaining flics 
-   
-     while (!FlicQueueFinished()) { 
-         RemoveTransientBitmaps(1); 
-         ProcessFlicQueue(gFrame_period); 
-         DoMouseCursor(); 
-         PDScreenBufferSwap(0); 
-     } 
-     the_flic = gFirst_flic; 
-     while (the_flic != NULL) { 
-         EndFlic(the_flic); 
-         old_flic = the_flic; 
-         the_flic = the_flic->next; 
-         BrMemFree(old_flic); 
-     } 
-     gFirst_flic = NULL; 
- } 
-   
- // IDA: void __usercall AddToFlicQueue(int pIndex@<EAX>, int pX@<EDX>, int pY@<EBX>, int pMust_finish@<ECX>) 
- void AddToFlicQueue(int pIndex, int pX, int pY, int pMust_finish) { 
-     tFlic_descriptor* the_flic = NULL; 
-     tFlic_descriptor* new_flic = NULL; 
-     tFlic_descriptor* last_flic = NULL; 
-     tFlic_descriptor* doomed_flic = NULL; 
-     LOG_TRACE("(%d, %d, %d, %d)", pIndex, pX, pY, pMust_finish); 
-   
-     the_flic = gFirst_flic; 
-     while (the_flic != NULL) { 
-         if (pX == the_flic->x_offset && pY == the_flic->y_offset) { 
-             doomed_flic = the_flic; 
-             break; 
-         } 
-         last_flic = the_flic; 
-         the_flic = the_flic->next; 
-     } 
-   
-     if (doomed_flic != NULL) { 
-         EndFlic(doomed_flic); 
-         if (last_flic != NULL) { 
-             last_flic->next = doomed_flic->next; 
-         } else { 
-             gFirst_flic = doomed_flic->next; 
-         } 
-         BrMemFree(doomed_flic); 
-     } 
-   
-     LoadFlic(pIndex); 
-     new_flic = BrMemAllocate(sizeof(tFlic_descriptor), kMem_queued_flic); 
-     new_flic->next = NULL; 
-     the_flic = gFirst_flic; 
-     if (gFirst_flic != NULL) { 
-         while (the_flic->next != NULL) { 
-             the_flic = the_flic->next; 
-         } 
-         the_flic->next = new_flic; 
-     } else { 
-         gFirst_flic = new_flic; 
-     } 
-     new_flic->last_frame = 0; 
-     new_flic->data_start = NULL; 
-     new_flic->the_index = pIndex; 
-     new_flic->must_finish = pMust_finish; 
-   
-     StartFlic( 
-         gMain_flic_list[pIndex].file_name, 
-         pIndex, 
-         new_flic, 
-         gMain_flic_list[pIndex].the_size, 
-         gMain_flic_list[pIndex].data_ptr, 
-         gBack_screen, 
-         pX >= 0 ? pX : gMain_flic_list[pIndex].x_offset, 
-         pY >= 0 ? pY : gMain_flic_list[pIndex].y_offset, 
-         20); 
- } 
-   
- // IDA: void __usercall InitialiseFlicPanel(int pIndex@<EAX>, int pLeft@<EDX>, int pTop@<EBX>, int pWidth@<ECX>, int pHeight) 
- void InitialiseFlicPanel(int pIndex, int pLeft, int pTop, int pWidth, int pHeight) { 
-     void* the_pixels; 
-     LOG_TRACE("(%d, %d, %d, %d, %d)", pIndex, pLeft, pTop, pWidth, pHeight); 
-   
-     gPanel_flic[pIndex].data = NULL; 
-     gPanel_flic_left[pIndex] = pLeft; 
-     gPanel_flic_top[pIndex] = pTop; 
-     the_pixels = BrMemAllocate(pHeight * ((pWidth + 3) & ~3), kFlic_panel_pixels); 
-     if (gScreen->row_bytes < 0) { 
-         BrFatal( 
-             "..\\..\\source\\common\\flicplay.c", 
-             2116, 
-             "Bruce bug at line %d, file ..\\..\\source\\common\\flicplay.c", 
-             68); 
-     } 
-     gPanel_buffer[pIndex] = DRPixelmapAllocate(gScreen->type, pWidth, pHeight, the_pixels, 0); 
- } 
-   
- // IDA: void __usercall DisposeFlicPanel(int pIndex@<EAX>) 
- void DisposeFlicPanel(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     EndFlic(&gPanel_flic[pIndex]); 
-     BrMemFree(gPanel_buffer[pIndex]->pixels); 
-     BrPixelmapFree(gPanel_buffer[pIndex]); 
-     gPanel_buffer[pIndex] = NULL; 
- } 
-   
- // IDA: void __usercall ServicePanelFlics(int pCopy_to_buffer@<EAX>) 
- void ServicePanelFlics(int pCopy_to_buffer) { 
-     tU32 time_diff; 
-     tU32 the_time; 
-     tU32 old_last_time[2]; 
-     int i; 
-     int j; 
-     int iteration_count; 
-     int finished; 
-   
-     if (gPanel_flic_disable) { 
-         return; 
-     } 
-     the_time = PDGetTotalTime(); 
-     DontLetFlicFuckWithPalettes(); 
-     TurnFlicTransparencyOn(); 
-   
-     for (i = 0; i < COUNT_OF(gPanel_flic); i++) { 
-         old_last_time[i] = gLast_panel_frame_time[i]; 
-         if (gPanel_buffer[i] != NULL && gPanel_flic[i].data != NULL) { 
-             if (old_last_time[i] != 0) { 
-                 time_diff = the_time - old_last_time[i]; 
-                 iteration_count = time_diff / gPanel_flic[i].frame_period; 
-             } else { 
-                 iteration_count = 1; 
-             } 
-             for (j = 0; j < iteration_count; j++) { 
-                 finished = PlayNextFlicFrame2(&gPanel_flic[i], 1); 
-                 if (finished) { 
-                     EndFlic(&gPanel_flic[i]); 
-                     StartFlic( 
-                         gPanel_flic[i].file_name, 
-                         gPanel_flic[i].the_index, 
-                         &gPanel_flic[i], 
-                         gPanel_flic_data_length[i], 
-                         (tS8*)gPanel_flic_data[i], 
-                         gPanel_buffer[i], 
-                         0, 
-                         0, 
-                         0); 
-                 } 
-                 gLast_panel_frame_time[i] = the_time; 
-             } 
-             if (pCopy_to_buffer) { 
-                 BrPixelmapRectangleCopy( 
-                     gBack_screen, 
-                     gPanel_flic_left[i], 
-                     gPanel_flic_top[i], 
-                     gPanel_buffer[i], 
-                     0, 
-                     0, 
-                     gPanel_buffer[i]->width, 
-                     gPanel_buffer[i]->height); 
-             } 
-         } 
-     } 
-     TurnFlicTransparencyOff(); 
-     LetFlicFuckWithPalettes(); 
- } 
-   
- // IDA: void __usercall ChangePanelFlic(int pIndex@<EAX>, tU8 *pData@<EDX>, tU32 pData_length@<EBX>) 
- void ChangePanelFlic(int pIndex, tU8* pData, tU32 pData_length) { 
-     LOG_TRACE("(%d, %p, %d)", pIndex, pData, pData_length); 
-   
-     EndFlic(&gPanel_flic[pIndex]); 
-     gPanel_flic_data[pIndex] = pData; 
-     gPanel_flic_data_length[pIndex] = pData_length; 
-     BrPixelmapFill(gPanel_buffer[pIndex], 0); 
-     StartFlic( 
-         gPanel_flic[pIndex].file_name, 
-         pIndex, 
-         &gPanel_flic[pIndex], 
-         gPanel_flic_data_length[pIndex], 
-         (tS8*)gPanel_flic_data[pIndex], 
-         gPanel_buffer[pIndex], 
-         0, 
-         0, 
-         0); 
-     gLast_panel_frame_time[pIndex] = 0; 
-     ServicePanelFlics(0); 
- } 
-   
- // IDA: br_pixelmap* __usercall GetPanelPixelmap@<EAX>(int pIndex@<EAX>) 
- br_pixelmap* GetPanelPixelmap(int pIndex) { 
-     LOG_TRACE("(%d)", pIndex); 
-   
-     return gPanel_buffer[pIndex]; 
- } 
-   
- // IDA: void __cdecl LoadInterfaceStrings() 
- void LoadInterfaceStrings(void) { 
-     FILE* f; // Added by DethRace 
-     char s[256]; 
-     char s2[256]; 
-     char* str; 
-     char* comment; 
-     char ch; 
-     tPath_name the_path; 
-     int i; 
-     int j; 
-     int len; 
-   
-     gTranslation_count = 0; 
-     PathCat(the_path, gApplication_path, "TRNSLATE.TXT"); 
-     f  = fopen(- the_path , "rt");
-     if (f == NULL) { 
-         return; 
-     } 
-         GetALineAndDontArgue(f, s); 
-         gTranslation_count++; 
-     } 
-     gTranslations = BrMemAllocate(gTranslation_count * sizeof(tTranslation_record), kMem_translations); 
-     for (i = 0; i < gTranslation_count; i++) { 
-         GetALineAndDontArgue(f, s); 
-         gTranslations[i].flic_index = -1; 
-         for (j = 0; j < COUNT_OF(gMain_flic_list); j++) { 
-             if (strcmp(- gMain_flic_list [- j ]- . file_name,-  s2 ) == 0) {
 
-                 gTranslations[i].flic_index = j; 
-                 break; 
-             } 
-         } 
-         if (gTranslations[i].flic_index < 0) { 
-             FatalError(kFatalError_FindFlicUsedInTranslationFile_S, s2); 
-         } 
-         sscanf(- str , "%d", &- gTranslations [- i ]- . x);
 
-         sscanf(- str , "%d", &- gTranslations [- i ]- . y);
 
-         sscanf(- str , "%d", &- gTranslations [- i ]- . font_index);
 
-         switch (ch) { 
-         case 'C': 
-         case 'c': 
-             gTranslations[i].justification = eJust_centre; 
-             break; 
-         case 'L': 
-         case 'l': 
-             gTranslations[i].justification = eJust_left; 
-             break; 
-         case 'R': 
-         case 'r': 
-             gTranslations[i].justification = eJust_right; 
-             break; 
-         } 
-         gTranslations[i].global = ch == 'G' || ch == 'g'; 
-         gTranslations [- i ]- . every_frame = strlen(- str ) > 1 && (- str [1] == 'E' ||-  str [1] == 'e');
-         if (comment != NULL) { 
-             *comment = '\0'; 
-         } 
-         for (j = len - 1; j >= 0 && (str[j] == ' ' || str[j] == '\t'); j--) { 
-         } 
-         str[j + 1] = '\0'; 
-         gTranslations [- i ]- . text =-  BrMemAllocate (strlen(- str ) + 1,-  kMem_translations_text );
-         strcpy(- gTranslations [- i ]- . text,-  str );
 
-     } 
-     LoadFont(kFont_BLUEHEAD); 
-     LoadFont(kFont_ORANGHED); 
-     LoadFont(kFont_GREENHED); 
-     LoadFont(kFont_LITPLAQ); 
-     LoadFont(kFont_BUTTOUT); 
-     LoadFont(kFont_DRKPLAQ); 
-     LoadFont(kFont_BUTTIN); 
-     LoadFont(kFont_GRNLIT); 
-     LoadFont(kFont_GRYLIT); 
-     LoadFont(kFont_GRNDK); 
-     LoadFont(kFont_GRYDK); 
-     LoadFont(kFont_LITPLAQ1); 
-     LoadFont(kFont_BUTTOUT1); 
-     LoadFont(kFont_DRKPLAQ1); 
-     LoadFont(kFont_BUTTIN1); 
-     gTrans_fonts[0] = &gFonts[kFont_ORANGHED]; 
-     gTrans_fonts[1] = &gFonts[kFont_LITPLAQ]; 
-     gTrans_fonts[2] = &gFonts[kFont_BUTTOUT]; 
-     gTrans_fonts[3] = &gFonts[kFont_DRKPLAQ]; 
-     gTrans_fonts[4] = &gFonts[kFont_BUTTIN]; 
-     gTrans_fonts[5] = &gFonts[kFont_GRNLIT]; 
-     gTrans_fonts[6] = &gFonts[kFont_GRYLIT]; 
-     gTrans_fonts[7] = &gFonts[kFont_GRNDK]; 
-     gTrans_fonts[8] = &gFonts[kFont_GRYDK]; 
-     gTrans_fonts[9] = &gFonts[kFont_LITPLAQ1]; 
-     gTrans_fonts[10] = &gFonts[kFont_DRKPLAQ1]; 
-     gTrans_fonts[11] = &gFonts[kFont_BUTTOUT1]; 
-     gTrans_fonts[12] = &gFonts[kFont_BUTTIN1]; 
-   
- #ifdef DETHRACE_FIX_BUGS 
- #endif 
- } 
-   
- // IDA: void __cdecl FlushInterfaceFonts() 
- void FlushInterfaceFonts(void) { 
-     LOG_TRACE("()"); 
-   
-     DisposeFont(19); 
-     DisposeFont(18); 
-     DisposeFont(20); 
-     DisposeFont(17); 
-     DisposeFont(15); 
-     DisposeFont(14); 
-     DisposeFont(16); 
-     DisposeFont(13); 
- } 
-   
- // IDA: void __cdecl SuspendPendingFlic() 
- void SuspendPendingFlic(void) { 
-     LOG_TRACE("()"); 
-   
-     gPending_pending_flic = gPending_flic; 
-     gPending_flic = -1; 
- } 
-   
- // IDA: void __cdecl ResumePendingFlic() 
- void ResumePendingFlic(void) { 
-     LOG_TRACE("()"); 
-   
-     gPending_flic = gPending_pending_flic; 
- } 
-