If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Hydro Thunder (Dreamcast)/Uncompiled Source Code

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Hydro Thunder (Dreamcast).

Hmmm...
To do:
  • Document any source code fragments that were missed.

A decent portion of source code somehow found its way throughout track 37. The length of these fragments range from just a few lines to entire source files.

Program Listings

tmem.h

Found at 0x3F85E10:

muSelIndex;                             
M�0���                         +        /* Which TMU this texture was last selected in
M�0���                         +to:*/
M�1���          tmem.h    49 X                                                        
M�1���                         +                        /*   0=selected into TMU0,*/
M�2���          tmem.h    50 X                                                        
M�2���                         +                        /*   1=selected into TMU1,*/
M�3���          tmem.h    51 X                                                        
M�3���                         +                        /*   2=selected into both (twi
M�3���                         +ns),*/
M�4���          tmem.h    52 X                                                        
M�4���                         +                        /*   3=selected into both (mip
M�4���                         +mapped)*/
M�5���          tmem.h    53 X          u32 nWidth;                                   
M�5���                         +                /* Width in texels (if mipmap, highest
M�5���                         +-res)*/
M�6���          tmem.h    54 X          u32 nHeight;                                  
M�6���                         +        /* Height in texels (if mipmap, highest-res)*/
M�7���          tmem.h    55 X          u32 *pPalette;                                
M�7���                         +        /* pointer to palette in system mem (NULL=not 
M�7���                         +paletted)*/
M�8���          tmem.h    56 X          BOOL bOddLODsOnTMU0;                          
M�8���                         +  /* Indicates if the odd LODs are on TMU0*/
M�9���          tmem.h    57 X          GrTexInfo TexInfo;                            
M�9���                         +        /* smallLOD, largeLOD, aspectRatio, format, *d
M�9���                         +ata*/
M�:���          tmem.h    58 X          TMUTexInfo_t aTMUTexInfo[2];            /* One
M�:���                         + for each TMU*/
M�;���          tmem.h    59 X  } TexDef_t;
M�<���          tmem.h    60 X  
M�=���          tmem.h    61 X  
M�>���          tmem.h    62 X  #if defined(__cplusplus)
M�?���          tmem.h    63 X  extern "C" {
M�@���          tmem.h    64 X  #endif
M�A���          tmem.h    65 X  
M�B���          tmem.h    66 X  extern TexDef_t Tmem_TexDef[ TMEM_MAX_TEXTURE_DEFS ];
M�C���          tmem.h    67 X  extern int Tmem_nTMUCount;                            
M�C���                         +  /* Number of TMUs, up to 2*/
M�D���          tmem.h    68 X  extern BOOL Tmem_bDisableMipmapping;    /* TRUE=disabl
M�D���                         +e mipmapping, FALSE=enable mipmapping*/
M�E���          tmem.h    69 X  extern const float Tmem_afTexScale_S[7];
M�F���          tmem.h    70 X  extern const float Tmem_afTexScale_T[7];
M�G���          tmem.h    71 X  
M�H���          tmem.h    72 X  
M�I���          tmem.h    73 X  
M�J���          tmem.h    74 X  #if TARGET==ULTRA64
M�K���          tmem.h    75 X  extern void AnimateN64textures();
M�L���          tmem.h    76 X  #endif  /*ULTRA64*/
M�M���          tmem.h    77 X  extern BOOL tmem_ModuleInit( void );
M�N���          tmem.h    78 X  extern void tmem_Init( void );
M�O���          tmem.h    79 X  extern void tmem_ReleaseAll( void );
M�P���          tmem.h    80 X  extern void tmem_InvalidateCacheState( void );
M�Q���          tmem.h    81 X  extern TexDef_t *tmem_GetCurrentTexdef( void );
M�R���          tmem.h    82 X  extern u32 tmem_obsys_GetBlock( void ); /* for obsys u
M�R���                         +se only*/
M�S���          tmem.h    83 X  extern void tmem_obsys_ReleaseBlock( u32 nTableIndex, 
M�S���                         +void *pFreedObsysMem ); /* for obsys use only*/
M�T���          tmem.h    84 X  extern TexDef_t *tmem_FindTexture( cchar *pszObName );
M�U���          tmem.h    85 X  extern TexDef_t *tmem_LoadTexture( cchar *pszObName, u
M�U���                         +32 nWidth, u32 nHeight, GrTextureFormat_t Format, void
M�U���                         + *pImage, int nTMU, u32 *pPalette );
M�V���          tmem.h    86 X  extern TexDef_t *tmem_LoadTextureOppositeName( cchar *
M�V���                         +pszObName, u32 nWidth, u32 nHeight, GrTextureFormat_t 
M�V���                         +Format, void *pImage, cchar *pszOppositeObName, u32 *p
M�V���                         +Palette );
M�W���          tmem.h    87 X  extern TexDef_t *tmem_LoadTextureOppositeTexDef( cchar
M�W���                         + *pszObName, u32 nWidth, u32 nHeight, GrTextureFormat_
M�W���                         +t Format, void *pImage, TexDef_t *pOppositeTexDef, u32
M�W���                         + *pPalette );
M�X���          tmem.h    88 X  extern TexDef_t *tmem_LoadTextureTwins( cchar *pszObNa
M�X���                         +me, u32 nWidth, u32 nHeight, GrTextureFormat_t Format,
M�X���                         + void *pImage, u32 *pPalette );
M�Y���          tmem.h    89 X  extern TexDef_t *tmem_LoadMipmap( cchar *pszObName, u3
M�Y���                         +2 nWidth, u32 nHeight, GrTextureFormat_t Format, void 
M�Y���                         +*pImage, u32 *pPalette );
M�Z���          tmem.h    90 X  extern void tmem_Replace( TexDef_t *pTexDef, void *pIm
M�Z���                         +age );
M�[���          tmem.h    91 X  extern void tmem_PaletteChange( TexDef_t *pTexDef, voi
M�[���                         +d *pPalette );
M�\���          tmem.h    92 X  extern void tmem_GetTileMode( TexDef_t *pTexDef, BOOL 
M�\���                         +*pbTileS, BOOL *pbTileT );
M�]���          tmem.h    93 X  extern void tmem_SetTileMode( TexDef_t *pTexDef, BOOL 
M�]���                         +bTileS, BOOL bTileT );
M�^���          tmem.h    94 X  extern int tmem_Select( TexDef_t *pTexDef );
M�_���          tmem.h    95 X  extern void tmem_SetTexCombineMode( GrCombineFunction_
M�_���                         +t RgbFunction, GrCombineFactor_t RgbFactor, 
M�`���          tmem.h    96 X                                                        
M�`���                         +   GrCombineFunction_t AlphaFunction, GrCombineFactor_
M�`���                         +  t AlphaFactor,
M�a���          tmem.h    97 X                                                        
M�a���                         +   BOOL bRgbInvert, BOOL bAlphaInvert );
M�b���          tmem.h    98 X  extern void tmem_SelectTextureTwins( TexDef_t *pTexDef
M�b���                         + );
M�c���          tmem.h    99 X  extern void tmem_SelectModulate_Projection( TexDef_t *
M�c���                         +pProjTexDef, TexDef_t *pModelTexDef );
M�d���          tmem.h   100 X  extern void tmem_SelectModulate_Model( TexDef_t *pMode
M�d���                         +lTexDef );
M�e���          tmem.h   101 X  extern u32 tmem_GetFreeMem( u32 nTMU );
M�f���          tmem.h   102 X  
M�g���          tmem.h   103 X  #if defined(__cplusplus)
M�h���          tmem.h   104 X  }
M�i���          tmem.h   105 X  #endif
M�j���          tmem.h   106 X  
M�k���          tmem.h   107    #endif
r�����

material.h

The fragment begins at 0x3F87D60 but more fragments can be found throughout the track.

r�����      material.h    25    #include "glide.h"
r�����      material.h    26    
r�����      material.h    27    
r�����      material.h    28    
r�����      material.h    29    #define MATERIAL_DEFAULT_ALPHABLENDFUNCTION_SRCRGBFACT
r�����                         +OR      GR_BLEND_SRC_ALPHA
r�����      material.h    30    #define MATERIAL_DEFAULT_ALPHABLENDFUNCTION_DESTRGBFAC
r�����                         +TOR     GR_BLEND_ONE_MINUS_SRC_ALPHA
r�����      material.h    31    #define MATERIAL_DEFAULT_ALPHACOMBINE_FUNC            
r�����                         +                        GR_COMBINE_FUNCTION_SCALE_OTHE
r�����                         +R
r� ���      material.h    32    #define MATERIAL_DEFAULT_ALPHACOMBINE_FACTOR          
r� ���                         +                GR_COMBINE_FACTOR_ONE
r�!���      material.h    33    #define MATERIAL_DEFAULT_ALPHACOMBINE_LOCAL           
r�!���                         +                        GR_COMBINE_LOCAL_ITERATED
r�"���      material.h    34    #define MATERIAL_DEFAULT_ALPHACOMBINE_OTHER           
r�"���                         +                        GR_COMBINE_OTHER_TEXTURE
r�#���      material.h    35    #define MATERIAL_DEFAULT_ALPHACOMBINE_INVERT          
r�#���                         +              K  FALSE
r�$���      material.h    36    #define MATERIAL_DEFAULT_ALPHACONTROLSITRGBLIGHTING_EN
r�$���                         +ABLE    FALSE
r�%���      material.h    37    #define MATERIAL_DEFAULT_ALPHATESTFUNCTION_TESTFUNC   
r�%���                         +                GR_CMP_GEQUAL
r�&���      material.h    38    #define MATERIAL_DEFAULT_ALPHATESTREFERENCEVALUE_VALUE
r�&���                         +                ((GrAlpha_t)16)
r�'���      material.h    39    #define MATERIAL_DEFAULT_CHROMAKEYMODE_MODE           
r�'���                         +                        GR_CHROMAKEY_DISABLE
r�(���      material.h    40    #define MATERIAL_DEFAULT_CHROMAKEYVALUE_VALUE         
r�(���                         +                GFXDEFS_INTRGB_TO_GRCOLOR( 0, 0, 0 )
r�)���      material.h    41    #define MATERIAL_DEFAULT_COLORCOMBINE_FUNC            
r�)���                         +                        GR_COMBINE_FUNCTION_SCALE_OTHE
r�)���                         +R_ADD_LOCAL_ALPHA
r�*���      material.h    42    #define MATERIAL_DEFAULT_COLORCOMBINE_FACTOR          
r�*���                         +                GR_COMBINE_FACTOR_LOCAL
r�+���      material.h    43    #define MATERIAL_DEFAULT_COLORCOMBINE_LOCAL           
r�+���                         +                        GR_COMBINE_LOCAL_ITERATED
r�,���      material.h    44    #define MATERIAL_DEFAULT_COLORCOMBINE_OTHER           
r�,���                         +                        GR_COMBINE_OTHER_TEXTURE
r�-���      material.h    45    #define MATERIAL_DEFAULT_COLORCOMBINE_INVERT          
r�-���                         +                FALSE
r�.���      material.h    46    #define MATERIAL_DEFAULT_CONSTANTCOLORVALUE_COLOR     
r�.���                         +                GFXDEFS_INTARGB_TO_GRCOLOR( 255, 255, 
r�.���                         +255, 255 )
r�/���      material.h    47    
r�0���      material.h    48    #define MATERIAL_COMBINE_CONSTANT_COLOR {       materi
r�0���                         +al_ColorCombine( GR_COMBINE_FUNCTION_LOCAL, GR_COMBINE
r�0���                         +_FACTOR_NONE, GR_COMBINE_LOCAL_CONSTANT, GR_COMBINE_OT
r�0���                         +HER_NONE, FXFALSE );    material_AlphaCombine( GR_COMB
r�0���                         +INE_FUNCTION_LOCAL, GR_COMBINE_FACTOR_NONE, GR_COMBINE
r�0���                         +_LOCAL_CONSTANT, GR_COMBINE_OTHER_NONE, FXFALSE );    
r�0���                         +  }
r�4���      material.h    52    
r�5���      material.h    53    
r�6���      material.h    54    
r�7���      material.h    55    typedef struct {
r�8���      material.h    56            GrAlphaBlendFnc_t AlphaBlendFunction_SrcRgbFac
r�8���                         +tor;
r�9���      material.h    57            GrAlphaBlendFnc_t AlphaBlendFunction_DestRgbFa
r�9���                         +ctor;
r�:���      material.h    58    
r�;���      material.h    59            GrCombineFunction_t AlphaCombine_Func;
r�<���      material.h    60            GrCombineFactor_t AlphaCombine_Factor;
r�=���      material.h    61            GrCombineLocal_t AlphaCombine_Local;
r�>���      material.h    62            GrCombineOther_t AlphaCombine_Other;
r�?���      material.h    63  E         int bAlphaCombine_Invert;
r�@���      material.h    64    
r�A���      material.h    65  E         int bAlphaControlsITRGBLighting_Enable;
r�B���      material.h    66    
r�C���      material.h    67            GrCmpFnc_t AlphaTestFunction_TestFunc;
r�D���      material.h    68            GrAlpha_t nAlphaTestReferenceValue_Value;
r�E���      material.h    69    
r�F���      material.h    70            GrChromakeyMode_t ChromakeyMode_Mode;
r�G���      material.h    71            GrColor_t ChromakeyValue_Value;
r�H���      material.h    72    
r�I���      material.h    73            GrCombineFunction_t ColorCombine_Func;
r�J���      material.h    74            GrCombineFactor_t ColorCombine_Factor;
r�K���      material.h    75            GrCombineLocal_t ColorCombine_Local;
r�L���      material.h    76            GrCombineOther_t ColorCombine_Other;
r�M��� í¾
"�����      material.h    77  E         int bColorCombine_Invert;
r�N���      material.h    78    
r�O���      material.h    79            GrColor_t ConstantColorValue_Color;
r�P���      material.h    80    
r�Q���      material.h    81  E         int bTmemTileS;
r�R���      material.h    82  E         int bTmemTileT;
r�S���      material.h    83            TexDef_t *pTmemTexDef;
r�T���      material.h    84    } MaterialState_t;
r�U���      material.h    85    
r�V���      material.h    86    
r�W���      material.h    87    
r�X���      material.h    88    #if defined(__cplusplus)
r�Y���      material.h    89 X  extern "C" {
r�Z���      material.h    90    #endif
r�[���      material.h    91    
r�\���      material.h    92  E extern int material_ModuleInit( void );
r�]���      material.h    93    extern void material_Reset( void );
r�^���      material.h    94    extern MaterialState_t *material_GetState( MaterialSta
r�^���                         +te_t *pState );
r�_���      material.h    95    extern MaterialState_t *material_SetState( MaterialSta
r�_���                         +te_t *pState );
r�`���      material.h    96    extern MaterialState_t *material_SetStateToDefaults( M
r�`���                         +aterialState_t *pState );
r�a���      material.h    97    extern void material_Defaults( void );
r�b���      material.h    98    extern void material_PushState( void );
r�c���      material.h    99    extern void material_PopState( u32 nNumPops );
r�d���      material.h   100    extern void material_AlphaBlendFunction( GrAlphaBlendF
r�d���                         +nc_t SrcRgbFactor, GrAlphaBlendFnc_t DestRgbFactor );
r�e���      material.h   101    extern void material_AlphaCombine( GrCombineFunction_t
r�e���                         + Func, GrCombineFactor_t Factor,
r�f���      material.h   102  E                                                    GrC
r�f���                         +ombineLocal_t Local, GrCombineOther_t Other, int bInve
r�f���                         +rt );
r�g���      material.h   103  E extern void material_AlphaControlsITRGBLighting( int b
r�g���                         +Enable );
r�h���      material.h   104    extern void material_AlphaTestFunction( GrCmpFnc_t Tes
r�h���                         +tFunc );
r�i���      material.h   105    extern void material_AlphaTestReferenceValue( GrAlpha_
r�i���                         +t TestValue );
r�j���      material.h   106    extern void material_ChromakeyMode( GrChromakeyMode_t 
r�j���                         +Mode );
r�k���      material.h   107    extern void material_ChromakeyValue( GrColor_t Value )
r�k���                         +;
r�l���      material.h   108    extern void material_ColorCombine( GrCombineFunction_t
r�l���                         + Func, GrCombineFactor_t Factor,
r�m���      material.h   109  E                                                    GrC
r�m���                         +ombineLocal_t Local, GrCombineOther_t Other, int bInve
r�m���                         +rt );
r�n���      material.h   110    extern void material_ConstantColorValue( GrColor_t Col
r�n���                         +or );
r�o���      material.h   111    extern void material_Default_AlphaBlendFunction( void 
r�o���                         +);
r�p���      material.h   112    extern void material_Default_AlphaCombine( void );
r�q���      material.h   113    extern void material_Default_AlphaControlsITRGBLightin
r�q���                         +g( void );
r�r���      material.h   114    extern void material_Default_AlphaTestFunction( void )
r�r���                         +;
r�s���      material.h   115    extern void material_Default_AlphaTestReferenceValue( 
r�s���                         +void );
r�t���      material.h   116    extern void material_Default_ChromakeyMode( void );
r�u���      material.h   117    extern void material_Default_ChromakeyValue( void );
r�v���      material.h   118    extern void material_Default_ColorCombine( void );
r�w���      material.h   119    extern void material_Default_ConstantColorValue( void 
r�w���                         +);
r�x���      material.h   120    
r�y���      material.h   121    
r�z���      material.h   122    #if defined(__cplusplus)
r�{���      material.h   123 X  }
r�|���      material.h   124    #endif
r�}���      material.h   125    
r�~���      material.h   126    #endif
r�?���      material.h   127    
��'���      

glide.h

Found at 0x3F87D90:


������         glide.h     1    /*
������         glide.h     2    */
������         glide.h     3    
������         glide.h     4    #ifndef __GLIDE_H__
������         glide.h     5 X  #define __GLIDE_H__
������         glide.h     6 X  
������         glide.h     7 X  
������         glide.h     8 X  #include "3dfx.h"
��	���         glide.h     9 X  #include "glidesys.h"
��
���         glide.h    10 X  
������         glide.h    11 X  #if defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplu
������                         +s)||defined(c_plusplus)
������         glide.h    12 X  #undef FX_ENTRY 
��
���         glide.h    13 X  #define FX_ENTRY extern "C" 
������         glide.h    14 X  #else
������         glide.h    15 X  #undef FX_ENTRY 
������         glide.h    16 X  #define FX_ENTRY 
������         glide.h    17 X  #endif
������         glide.h    18 X  
������         glide.h    19 X  #undef FX_CALL
������         glide.h    20 X  #define FX_CALL
������         glide.h    21 X  
������         glide.h    22 X  /* Video defines */
������         glide.h    23 X  typedef FxI32 GrScreenRefresh_t;
������         glide.h    24 X  #define GR_REFRESH_60Hz   0x0
������         glide.h    25 X  
������         glide.h    26 X  typedef FxI32 GrScreenResolution_t;
������         glide.h    27 X  #define GR_RESOLUTION_320x200   0x0
������         glide.h    28 X  #define GR_RESOLUTION_320x240   0x1
������         glide.h    29 X  #define GR_RESOLUTION_400x256   0x2
������         glide.h    30 X  #define GR_RESOLUTION_512x384   0x3
������         glide.h    31 X  #define GR_RESOLUTION_640x200   0x4
�� ���         glide.h    32 X  #define GR_RESOLUTION_640x350   0x5
��!���         glide.h    33 X  #define GR_RESOLUTION_640x400   0x6
��"���         glide.h    34 X  #define GR_RESOLUTION_640x480   0x7
��#���         glide.h    35 X  #define GR_RESOLUTION_800x600   0x8
��$���         glide.h    36 X  #define GR_RESOLUTION_960x720   0x9
��%���         glide.h    37 X  #define GR_RESOLUTION_856x480   0xa
��&���         glide.h    38 X  #define GR_RESOLUTION_512x256   0xb
��'���         glide.h    39 X  #define GR_RESOLUTION_1024x768  0xC
��(���         glide.h    40 X  #define GR_RESOLUTION_1280x1024 0xD
��)���         glide.h    41 X  #define GR_RESOLUTION_1600x1200 0xE
��*���         glide.h    42 X  #define GR_RESOLUTION_400x300   0xF
��+���         glide.h    43 X  #define GR_RESOLUTION_NONE      0xff
��,���         glide.h    44 X  
��-���         glide.h    45 X  /*
��.���         glide.h    46 X  ** ---------------------------------------------------
��.���                         +--------------------
��/���         glide.h    47 X  ** TYPE DEFINITIONS
��0���         glide.h    48 X  ** ---------------------------------------------------
��0���                         +--------------------
��1���         glide.h    49 X  */
��2���         glide.h    50 X  typedef FxU32 GrColor_t;
��3���         glide.h    51 X  typedef FxU8  GrAlpha_t;
��4���         glide.h    52 X  typedef FxU32 GrMipMapId_t;
��5���         glide.h    53 X  typedef FxU8  GrFog_t;
��6���         glide.h    54 X  
��7���         glide.h    55 X  /*
��8���         glide.h    56 X  ** ---------------------------------------------------
��8���                         +--------------------
��9���         glide.h    57 X  ** CONSTANTS AND TYPES
��:���         glide.h    58 X  ** ---------------------------------------------------
��:���                         +--------------------
��;���         glide.h    59 X  */
��<���         glide.h    60 X  #define MAX_NUM_SST            4
��=���         glide.h    61 X  #define MAX_MIPMAPS_PER_SST    1024
��>���         glide.h    62 X  #define GR_FOG_TABLE_SIZE      64
��?���         glide.h    63 X  #define GR_NULL_MIPMAP_HANDLE  ((GrMipMapId_t) -1)
��@���         glide.h    64 X  #define GR_ZDEPTHVALUE_NEAREST  0xFFFF
��A���         glide.h    65 X  #define GR_ZDEPTHVALUE_FARTHEST 0x0000
��B���         glide.h    66 X  #define GR_WDEPTHVALUE_NEAREST  0x0000
��C���         glide.h    67 X  #define GR_WDEPTHVALUE_FARTHEST 0xFFFF
��D���         glide.h    68 X  
��E���         glide.h    69 X  #define GR_MIPMAPLEVELMASK_EVEN  FXBIT(0)
��F���         glide.h    70 X  #define GR_MIPMAPLEVELMASK_ODD  FXBIT(1)
��G���         glide.h    71 X  #define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EV
��G���                         +EN | GR_MIPMAPLEVELMASK_ODD )
��H���         glide.h    72 X  
��I���         glide.h    73 X  #define GR_LODBIAS_BILINEAR     0.5
��J���         glide.h    74 X  #define GR_LODBIAS_TRILINEAR    0.0
��K���         glide.h    75 X  
��L���         glide.h    76 X  typedef FxI32 GrChipID_t;
��M���         glide.h    77 X  #define GR_TMU0         0x0
��N���         glide.h    78 X  #define GR_TMU1         0x1
��O���         glide.h    79 X  #define GR_TMU2         0x2
��P���         glide.h    80 X  #define GR_FBI          0x3
��Q���         glide.h    81 X  
��R���         glide.h    82 X  typedef FxI32 GrCombineFunction_t;
��S���         glide.h    83 X  #define GR_COMBINE_FUNCTION_ZERO        0x0
��T���         glide.h    84 X  #define GR_COMBINE_FUNCTION_NONE        GR_COMBINE_FUN
��T���                         +CTION_ZERO
��U���         glide.h    85 X  #define GR_COMBINE_FUNCTION_LOCAL       0x1
��V���         glide.h    86 X  #define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x2
��W���         glide.h    87 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER 0x3
��X���         glide.h    88 X  #define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUN
��X���                         +CTION_SCALE_OTHER
��Y���         glide.h    89 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x4
��Z���         glide.h    90 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPH
��Z���                         +A 0x5 
��[���         glide.h    91 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x
��[���                         +6
��\���         glide.h    92 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_AD
��\���                         +D_LOCAL 0x7
��]���         glide.h    93 X  #define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_
��]���                         +SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL
��^���         glide.h    94 X  #define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_AD
��^���                         +D_LOCAL_ALPHA 0x8
��_���         glide.h    95 X  #define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCA
��_���                         +L 0x9
��`���         glide.h    96 X  #define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUN
��`���                         +CTION_SCALE_MINUS_LOCAL_ADD_LOCAL
��a���         glide.h    97 X  #define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCA
��a���                         +L_ALPHA 0x10
��b���         glide.h    98 X  
��c���         glide.h    99 X  typedef FxI32 GrCombineFactor_t;
��d���         glide.h   100 X  #define GR_COMBINE_FACTOR_ZERO          0x0
��e���         glide.h   101 X  #define GR_COMBINE_FACTOR_NONE          GR_COMBINE_FAC
��e���                         +TOR_ZERO
��f���         glide.h   102 X  #define GR_COMBINE_FACTOR_LOCAL         0x1
��g���         glide.h   103 X  #define GR_COMBINE_FACTOR_OTHER_ALPHA   0x2
��h���         glide.h   104 X  #define GR_COMBINE_FACTOR_LOCAL_ALPHA   0x3
��i���         glide.h   105 X  #define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4
��j���         glide.h   106 X  #define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FAC
��j���                         +TOR_TEXTURE_ALPHA
��k���         glide.h   107 X  #define GR_COMBINE_FACTOR_LOD_FRACTION  0x5
��l���         glide.h   108 X  #define GR_COMBINE_FACTOR_ONE           0x8
��m���         glide.h   109 X  #define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9
��n���         glide.h   110 X  #define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa
��o���         glide.h   111 X  #define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb
��p���         glide.h   112 X  #define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc
��q���         glide.h   113 X  #define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_C
��q���                         +OMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA
��r���         glide.h   114 X  #define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd
��s���         glide.h   115 X  
��t���         glide.h   116 X  
��u���         glide.h   117 X  typedef FxI32 GrCombineLocal_t;
��v���         glide.h   118 X  #define GR_COMBINE_LOCAL_ITERATED 0x0
��w���         glide.h   119 X  #define GR_COMBINE_LOCAL_CONSTANT 0x1
��x���         glide.h   120 X  #define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTAN
��x���                         +T
��y���         glide.h   121 X  #define GR_COMBINE_LOCAL_DEPTH  0x2
��z���         glide.h   122 X  
��{���         glide.h   123 X  typedef FxI32 GrCombineOther_t;
��|���         glide.h   124 X  #define GR_COMBINE_OTHER_ITERATED 0x0
��}���         glide.h   125 X  #define GR_COMBINE_OTHER_TEXTURE 0x1
��~���         glide.h   126 X  #define GR_COMBINE_OTHER_CONSTANT 0x2
��?���         glide.h   127 X  #define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTAN
��?���                         +T
��€���         glide.h   128 X  
�����         glide.h   129 X  
��‚���         glide.h   130 X  typedef FxI32 GrAlphaSource_t;
��ƒ���         glide.h   131 X  #define GR_ALPHASOURCE_CC_ALPHA 0x0
��„���         glide.h   132 X  #define GR_ALPHASOURCE_ITERATED_ALPHA 0x1
��…���         glide.h   133 X  #define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2
��†���         glide.h   134 X  #define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_AL
��†���                         +PHA 0x3
��‡���         glide.h   135 X  
��ˆ���         glide.h   136 X  
��‰���         glide.h   137 X  typedef FxI32 GrColorCombineFnc_t;
��Š���         glide.h   138 X  #define GR_COLORCOMBINE_ZERO 0x0
��‹���         glide.h   139 X  #define GR_COLORCOMBINE_CCRGB 0x1
��Œ���         glide.h   140 X  #define GR_COLORCOMBINE_ITRGB 0x2
�����         glide.h   141 X  #define GR_COLORCOMBINE_ITRGB_DELTA0 0x3
��Ž���         glide.h   142 X  #define GR_COLORCOMBINE_DECAL_TEXTURE 0x4
�����         glide.h   143 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5
�����         glide.h   144 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6
��‘���         glide.h   145 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7
��’���         glide.h   146 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 
��’���                         +0x8
��“���         glide.h   147 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9
��”���         glide.h   148 X  #define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 
��”���                         +0xa
��•���         glide.h   149 X  #define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb
��–���         glide.h   150 X  #define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc
��—���         glide.h   151 X  #define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 
��—���                         +0xd
��˜���         glide.h   152 X  #define GR_COLORCOMBINE_DIFF_SPEC_A 0xe
��™���         glide.h   153 X  #define GR_COLORCOMBINE_DIFF_SPEC_B 0xf
��š���         glide.h   154 X  #define GR_COLORCOMBINE_ONE 0x10
��›���         glide.h   155 X  
��œ���         glide.h   156 X  typedef FxI32 GrAlphaBlendFnc_t;
�����         glide.h   157 X  #define GR_BLEND_ZERO 0x0
��ž���         glide.h   158 X  #define GR_BLEND_SRC_ALPHA 0x1
��Ÿ���         glide.h   159 X  #define GR_BLEND_SRC_COLOR 0x2
�� ���         glide.h   160 X  #define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR
��¡���         glide.h   161 X  #define GR_BLEND_DST_ALPHA 0x3 
��¢���         glide.h   162 X  #define GR_BLEND_ONE 0x4
��£���         glide.h   163 X  #define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5
��¤���         glide.h   164 X  #define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6
��¥���         glide.h   165 X  #define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINU
��¥���                         +S_SRC_COLOR 
��¦���         glide.h   166 X  #define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7
��§���         glide.h   167 X  #define GR_BLEND_RESERVED_8 0x8
��¨���         glide.h   168 X  #define GR_BLEND_RESERVED_9 0x9
��©���         glide.h   169 X  #define GR_BLEND_RESERVED_A 0xa
��ª���         glide.h   170 X  #define GR_BLEND_RESERVED_B 0xb
��«���         glide.h   171 X  #define GR_BLEND_RESERVED_C 0xc
��¬���         glide.h   172 X  #define GR_BLEND_RESERVED_D 0xd
��­���         glide.h   173 X  #define GR_BLEND_RESERVED_E 0xe
��®���         glide.h   174 X  #define GR_BLEND_ALPHA_SATURATE 0xf
��¯���         glide.h   175 X  #define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE
��°���         glide.h   176 X  
��±���         glide.h   177 X  typedef FxI32 GrAspectRatio_t;
��²���         glide.h   178 X  #define GR_ASPECT_8x1 0x0       /* 8W x 1H */
��³���         glide.h   179 X  #define GR_ASPECT_4x1 0x1       /* 4W x 1H */
��´���         glide.h   180 X  #define GR_ASPECT_2x1 0x2       /* 2W x 1H */
��µ���         glide.h   181 X  #define GR_ASPECT_1x1 0x3       /* 1W x 1H */
��¶���         glide.h   182 X  #define GR_ASPECT_1x2 0x4       /* 1W x 2H */
��·���         glide.h   183 X  #define GR_ASPECT_1x4 0x5       /* 1W x 4H */
��¸���         glide.h   184 X  #define GR_ASPECT_1x8 0x6       /* 1W x 8H */
��¹���         glide.h   185 X  
��º���         glide.h   186 X  typedef FxI32 GrBuffer_t;
��»���         glide.h   187 X  #define GR_BUFFER_FRONTBUFFER   0x0
��¼���         glide.h   188 X  #define GR_BUFFER_BACKBUFFER    0x1
��½���         glide.h   189 X  #define GR_BUFFER_AUXBUFFER     0x2
��¾���         glide.h   190 X  #define GR_BUFFER_DEPTHBUFFER   0x3
��¿���         glide.h   191 X  #define GR_BUFFER_ALPHABUFFER   0x4
��À���         glide.h   192 X  #define GR_BUFFER_TRIPLEBUFFER  0x5
��Á���         glide.h   193 X  
�����         glide.h   194 X  typedef FxI32 GrChromakeyMode_t;
�����         glide.h   195 X  #define GR_CHROMAKEY_DISABLE    0x0
�����         glide.h   196 X  #define GR_CHROMAKEY_ENABLE     0x1
�����         glide.h   197 X  
�����         glide.h   198 X  typedef FxI32 GrCmpFnc_t;
�����         glide.h   199 X  #define GR_CMP_NEVER    0x0
�����         glide.h   200 X  #define GR_CMP_LESS     0x1
�����         glide.h   201 X  #define GR_CMP_EQUAL    0x2
�����         glide.h   202 X  #define GR_CMP_LEQUAL   0x3
�����         glide.h   203 X  #define GR_CMP_GREATER  0x4
�����         glide.h   204 X  #define GR_CMP_NOTEQUAL 0x5
�����         glide.h   205 X  #define GR_CMP_GEQUAL   0x6
�����         glide.h   206 X  #define GR_CMP_ALWAYS   0x7
�����         glide.h   207 X  
�����         glide.h   208 X  typedef FxI32 GrColorFormat_t;
�����         glide.h   209 X  #define GR_COLORFORMAT_ARGB     0x0
�����         glide.h   210 X  #define GR_COLORFORMAT_ABGR     0x1
�����         glide.h   211 X  
�����         glide.h   212 X  #define GR_COLORFORMAT_RGBA     0x2
�����         glide.h   213 X  #define GR_COLORFORMAT_BGRA     0x3
�����         glide.h   214 X  
�����         glide.h   215 X  typedef FxI32 GrCullMode_t;
�����         glide.h   216 X  #define GR_CULL_DISABLE         0x0
�����         glide.h   217 X  #define GR_CULL_NEGATIVE        0x1
�����         glide.h   218 X  #define GR_CULL_POSITIVE        0x2
�����         glide.h   219 X  
�����         glide.h   220 X  typedef FxI32 GrDepthBufferMode_t;
�����         glide.h   221 X  #define GR_DEPTHBUFFER_DISABLE                  0x0
�����         glide.h   222 X  #define GR_DEPTHBUFFER_ZBUFFER                  0x1
�����         glide.h   223 X  #define GR_DEPTHBUFFER_WBUFFER                  0x2
����         glide.h   224 X  #define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS  0x3
����         glide.h   225 X  #define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS  0x4
����         glide.h   226 X  
����         glide.h   227 X  typedef FxI32 GrDitherMode_t;
����         glide.h   228 X  #define GR_DITHER_DISABLE       0x0
����         glide.h   229 X  #define GR_DITHER_2x2           0x1
����         glide.h   230 X  #define GR_DITHER_4x4           0x2
����         glide.h   231 X  
����         glide.h   232 X  typedef FxI32 GrFogMode_t;
����         glide.h   233 X  #define GR_FOG_DISABLE             0x0
����         glide.h   234 X  #define GR_FOG_WITH_ITERATED_ALPHA 0x1
����         glide.h   235 X  #define GR_FOG_WITH_TABLE          0x2
����         glide.h   236 X  #define GR_FOG_WITH_ITERATED_Z     0x3          /* Bug
����                         + 735 */
����         glide.h   237 X  #define GR_FOG_MULT2               0x100
����         glide.h   238 X  #define GR_FOG_ADD2                0x200
����         glide.h   239 X  
���         glide.h   240 X  typedef FxU32 GrLock_t;
���         glide.h   241 X  #define GR_LFB_READ_ONLY  0x00
���         glide.h   242 X  #define GR_LFB_WRITE_ONLY 0x01
���         glide.h   243 X  #define GR_LFB_IDLE       0x00
���         glide.h   244 X  #define GR_LFB_NOIDLE     0x10
��õ���         glide.h   245 X  
��ö���         glide.h   246 X  typedef FxI32 GrLfbBypassMode_t;
��÷���         glide.h   247 X  #define GR_LFBBYPASS_DISABLE    0x0
��ø���         glide.h   248 X  #define GR_LFBBYPASS_ENABLE     0x1
��ù���         glide.h   249 X  
��ú���         glide.h   250 X  typedef FxI32 GrLfbWriteMode_t;
��û���         glide.h   251 X  #define GR_LFBWRITEMODE_565        0x0 /* RGB:RGB */
��ü���         glide.h   252 X  #define GR_LFBWRITEMODE_555        0x1 /* RGB:RGB */
��ý���         glide.h   253 X  #define GR_LFBWRITEMODE_1555       0x2 /* ARGB:ARGB */
��þ���         glide.h   254 X  #define GR_LFBWRITEMODE_RESERVED1  0x3
��ÿ���         glide.h   255 X  #define GR_LFBWRITEMODE_888        0x4 /* RGB */
������         glide.h   256 X  #define GR_LFBWRITEMODE_8888       0x5 /* ARGB */
������         glide.h   257 X  #define GR_LFBWRITEMODE_RESERVED2  0x6
������         glide.h   258 X  #define GR_LFBWRITEMODE_RESERVED3  0x7
������         glide.h   259 X  #define GR_LFBWRITEMODE_RESERVED4  0x8
������         glide.h   260 X  #define GR_LFBWRITEMODE_RESERVED5  0x9
������         glide.h   261 X  #define GR_LFBWRITEMODE_RESERVED6  0xa
������         glide.h   262 X  #define GR_LFBWRITEMODE_RESERVED7  0xb
������         glide.h   263 X  #define GR_LFBWRITEMODE_565_DEPTH  0xc /* RGB:DEPTH */
������         glide.h   264 X  #define GR_LFBWRITEMODE_555_DEPTH  0xd /* RGB:DEPTH */
��	���         glide.h   265 X  #define GR_LFBWRITEMODE_1555_DEPTH 0xe /* ARGB:DEPTH *
��	���                         +/
��
���         glide.h   266 X  #define GR_LFBWRITEMODE_ZA16       0xf /* DEPTH:DEPTH 
��
���                         +*/
������         glide.h   267 X  #define GR_LFBWRITEMODE_ANY        0xFF
������         glide.h   268 X  
��
���         glide.h   269 X  
������         glide.h   270 X  typedef FxI32 GrOriginLocation_t;
������         glide.h   271 X  #define GR_ORIGIN_UPPER_LEFT    0x0
������         glide.h   272 X  #define GR_ORIGIN_LOWER_LEFT    0x1
������         glide.h   273 X  #define GR_ORIGIN_ANY           0xFF
������         glide.h   274 X  
������         glide.h   275 X  typedef struct {
������         glide.h   276 X      int                size;
������         glide.h   277 X      void               *lfbPtr;
������         glide.h   278 X      FxU32              strideInBytes;        
������         glide.h   279 X      GrLfbWriteMode_t   writeMode;
������         glide.h   280 X      GrOriginLocation_t origin;
������         glide.h   281 X  } GrLfbInfo_t;
������         glide.h   282 X  
������         glide.h   283 X  typedef FxI32 GrLOD_t;
������         glide.h   284 X  #define GR_LOD_256              0x0
������         glide.h   285 X  #define GR_LOD_128              0x1
������         glide.h   286 X  #define GR_LOD_64               0x2
������         glide.h   287 X  #define GR_LOD_32               0x3
�� ���         glide.h   288 X  #define GR_LOD_16               0x4
��!���         glide.h   289 X  #define GR_LOD_8                0x5
��"���         glide.h   290 X  #define GR_LOD_4                0x6
��#���         glide.h   291 X  #define GR_LOD_2                0x7
��$���         glide.h   292 X  #define GR_LOD_1                0x8
��%���         glide.h   293 X  
��&���         glide.h   294 X  typedef FxI32 GrMipMapMode_t;
��'���         glide.h   295 X  #define GR_MIPMAP_DISABLE               0x0 /* no mip 
��'���                         +mapping  */
��(���         glide.h   296 X  #define GR_MIPMAP_NEAREST               0x1 /* use nea
��(���                         +rest mipmap */
��)���         glide.h   297 X  #define GR_MIPMAP_NEAREST_DITHER        0x2 /* GR_MIPM
��)���                         +AP_NEAREST + LOD dith */
��*���         glide.h   298 X  
��+���         glide.h   299 X  
��,���         glide.h   300 X  typedef FxI32 GrSmoothingMode_t;
��-���         glide.h   301 X  #define GR_SMOOTHING_DISABLE    0x0
��.���         glide.h   302 X  #define GR_SMOOTHING_ENABLE     0x1
��/���         glide.h   303 X  
��0���         glide.h   304 X  typedef FxI32 GrTextureClampMode_t;
��1���         glide.h   305 X  #define GR_TEXTURECLAMP_WRAP    0x0
��2���         glide.h   306 X  #define GR_TEXTURECLAMP_CLAMP   0x1
��3���         glide.h   307 X  
��4���         glide.h   308 X  typedef FxI32 GrTextureCombineFnc_t;
��5���         glide.h   309 X  #define GR_TEXTURECOMBINE_ZERO          0x0 /* texout 
��5���                         += 0 */
��6���         glide.h   310 X  #define GR_TEXTURECOMBINE_DECAL         0x1 /* texout 
��6���                         += texthis */
��7���         glide.h   311 X  #define GR_TEXTURECOMBINE_OTHER         0x2 /* this TM
��7���                         +U in passthru mode */
��8���         glide.h   312 X  #define GR_TEXTURECOMBINE_ADD           0x3 /* tout = 
��8���                         +tthis + t(this+1) */
��9���         glide.h   313 X  #define GR_TEXTURECOMBINE_MULTIPLY      0x4 /* texout 
��9���                         += tthis * t(this+1) */
��:���         glide.h   314 X  #define GR_TEXTURECOMBINE_SUBTRACT      0x5 /* Sutract
��:���                         + from upstream TMU */
��;���         glide.h   315 X  #define GR_TEXTURECOMBINE_DETAIL        0x6 /* detail-
��;���                         +-detail on tthis */
��<���         glide.h   316 X  #define GR_TEXTURECOMBINE_DETAIL_OTHER  0x7 /* detail-
��<���                         +-detail on tthis+1 */
��=���         glide.h   317 X  #define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8 /* triline
��=���                         +ar--odd levels tthis*/
��>���         glide.h   318 X  #define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9 /*triline
��>���                         +ar--even levels tthis*/
��?���         glide.h   319 X  #define GR_TEXTURECOMBINE_ONE           0xa /* texout 
��?���                         += 0xFFFFFFFF */
��@���         glide.h   320 X  
��A���         glide.h   321 X  typedef FxI32 GrTextureFilterMode_t;
��B���         glide.h   322 X  #define GR_TEXTUREFILTER_POINT_SAMPLED  0x0
��C���         glide.h   323 X  #define GR_TEXTUREFILTER_BILINEAR       0x1
��D���         glide.h   324 X  
��E���         glide.h   325 X  typedef FxI32 GrTextureFormat_t;
��F���         glide.h   326 X  #define GR_TEXFMT_8BIT                  0x0
��G���         glide.h   327 X  #define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT
��H���         glide.h   328 X  #define GR_TEXFMT_YIQ_422               0x1
��I���         glide.h   329 X  #define GR_TEXFMT_ALPHA_8               0x2 /* (0..0xF
��I���                         +F) alpha     */
��J���         glide.h   330 X  #define GR_TEXFMT_INTENSITY_8           0x3 /* (0..0xF
��J���                         +F) intensity */
��K���         glide.h   331 X  #define GR_TEXFMT_ALPHA_INTENSITY_44    0x4
��L���         glide.h   332 X  #define GR_TEXFMT_P_8                   0x5 /* 8-bit p
��L���                         +alette */
��M���         glide.h   333 X  #define GR_TEXFMT_RSVD0                 0x6
��N���         glide.h   334 X  #define GR_TEXFMT_RSVD1                 0x7
��O���         glide.h   335 X  #define GR_TEXFMT_16BIT                 0x8
��P���         glide.h   336 X  #define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT
��Q���         glide.h   337 X  #define GR_TEXFMT_AYIQ_8422             0x9
��R���         glide.h   338 X  #define GR_TEXFMT_RGB_565               0xa
��S���         glide.h   339 X  #define GR_TEXFMT_ARGB_1555             0xb
��T���         glide.h   340 X  #define GR_TEXFMT_ARGB_4444             0xc
��U���         glide.h   341 X  #define GR_TEXFMT_ALPHA_INTENSITY_88    0xd
��V���         glide.h   342 X  #define GR_TEXFMT_AP_88                 0xe /* 8-bit a
��V���                         +lpha 8-bit palette */
��W���         glide.h   343 X  #define GR_TEXFMT_RSVD2                 0xf
��X���         glide.h   344 X  
��Y���         glide.h   345 X  typedef FxU32 GrTexTable_t;
��Z���         glide.h   346 X  #define GR_TEXTABLE_NCC0    0x0
��[���         glide.h   347 X  #define GR_TEXTABLE_NCC1    0x1
��\���         glide.h   348 X  #define GR_TEXTABLE_PALETTE 0x2
��]���         glide.h   349 X  
��^���         glide.h   350 X  typedef FxU32 GrNCCTable_t;
��_���         glide.h   351 X  #define GR_NCCTABLE_NCC0    0x0
��`���         glide.h   352 X  #define GR_NCCTABLE_NCC1    0x1
��a���         glide.h   353 X  
��b���         glide.h   354 X  typedef FxU32 GrTexBaseRange_t;
��c���         glide.h   355 X  #define GR_TEXBASE_256      0x0
��d���         glide.h   356 X  #define GR_TEXBASE_128      0x1
��e���         glide.h   357 X  #define GR_TEXBASE_64       0x2
��f���         glide.h   358 X  #define GR_TEXBASE_32_TO_1  0x3
��g���         glide.h   359 X  
��h���         glide.h   360 X  /*
��i���         glide.h   361 X  ** ---------------------------------------------------
��i���                         +--------------------
��j���         glide.h   362 X  ** STRUCTURES
��k���         glide.h   363 X  ** ---------------------------------------------------
��k���                         +--------------------
��l���         glide.h   364 X  */
��m���         glide.h   365 X  /*
��n���         glide.h   366 X  ** 3DF texture file structs
��o���         glide.h   367 X  */
��p���         glide.h   368 X  typedef struct
��q���         glide.h   369 X  {
��r���         glide.h   370 X    FxU32               width, height;
��s���         glide.h   371 X    int                 small_lod, large_lod;
��t���         glide.h   372 X    GrAspectRatio_t     aspect_ratio;
��u���         glide.h   373 X    GrTextureFormat_t   format;
��v���         glide.h   374 X  } Gu3dfHeader;
��w���         glide.h   375 X  
��x���         glide.h   376 X  typedef struct
��y���         glide.h   377 X  {
��z���         glide.h   378 X    FxU8  yRGB[16];
��{���         glide.h   379 X    FxI16 iRGB[4][3];
��|���         glide.h   380 X    FxI16 qRGB[4][3];
��}���         glide.h   381 X    FxU32 packed_data[12];
��~���         glide.h   382 X  } GuNccTable;
��?���         glide.h   383 X  
��€���         glide.h   384 X  typedef struct {
�����         glide.h   385 X      FxU32 data[256];
��‚���         glide.h   386 X  } GuTexPalette;
��ƒ���         glide.h   387 X  
��„���         glide.h   388 X  typedef union {
��…���         glide.h   389 X      GuNccTable   nccTable;
��†���         glide.h   390 X      GuTexPalette palette;
��‡���         glide.h   391 X  } GuTexTable;
��ˆ���         glide.h   392 X  
��‰���         glide.h   393 X  typedef struct
��Š���         glide.h   394 X  {
��‹���         glide.h   395 X    Gu3dfHeader  header;
��Œ���         glide.h   396 X    GuTexTable   table;
�����         glide.h   397 X    void        data;
��Ž���         glide.h   398 X    FxU32        mem_required;    /* memory required for
��Ž���                         + mip map in bytes. */
�����         glide.h   399 X  } Gu3dfInfo;
�����         glide.h   400 X  
��‘���         glide.h   401 X  typedef struct {
��’���         glide.h   402 X      GrLOD_t           smallLod;
��“���         glide.h   403 X      GrLOD_t           largeLod;
��”���         glide.h   404 X      GrAspectRatio_t   aspectRatio;
��•���         glide.h   405 X      GrTextureFormat_t format;
��–���         glide.h   406 X      void              *data;
��—���         glide.h   407 X  #if TARGET == DREAMCAST
��˜���         glide.h   408 X          int                               txno;
��™���         glide.h   409 X  #endif /* TARGET==DREAMCAST */
��š���         glide.h   410 X  } GrTexInfo;
��›���         glide.h   411 X  
��œ���         glide.h   412 X  typedef struct
�����         glide.h   413 X  {
��ž���         glide.h   414 X    int           sst;                    /* SST where t
��ž���                         +his texture map was stored  */
��Ÿ���         glide.h   415 X    FxBool        valid;                  /* set when th
��Ÿ���                         +is table entry is allocated*/
�� ���         glide.h   416 X    int           width, height;
��¡���         glide.h   417 X    GrAspectRatio_t aspect_ratio;         /* aspect rati
��¡���                         +o of the mip map.  */
��¢���         glide.h   418 X    void          *data;                  /* actual text
��¢���                         +ure data  */
��£���         glide.h   419 X  
��¤���         glide.h   420 X    GrTextureFormat_t  format;                    /* for
��¤���                         +mat of the texture table */
��¥���         glide.h   421 X    GrMipMapMode_t     mipmap_mode;               /* mip
��¥���                         + map mode for this texture */
��¦���         glide.h   422 X    GrTextureFilterMode_t   magfilter_mode;       /* fil
��¦���                         +tering to be used when magnified */
��§���         glide.h   423 X    GrTextureFilterMode_t   minfilter_mode;       /* fil
��§���                         +tering to be used with minified  */
��¨���         glide.h   424 X    GrTextureClampMode_t    s_clamp_mode;         /* how
��¨���                         + this texture should be clamped in s */
��©���         glide.h   425 X    GrTextureClampMode_t    t_clamp_mode;         /* how
��©���                         + this texture should be clamped in t */
��ª���         glide.h   426 X    FxU32         tLOD;                   /* Register va
��ª���                         +lue for tLOD register */ 
��«���         glide.h   427 X    FxU32         tTextureMode;           /* Register va
��«���                         +lue for tTextureMode register
��¬���         glide.h   428 X                                             not includi
��¬���                         +ng non-texture specific bits */
��­���         glide.h   429 X    FxU32         lod_bias;               /* LOD bias of
��­���                         + the mip map in preshifted 4.2*/
��®���         glide.h   430 X    GrLOD_t       lod_min, lod_max;       /* largest and
��®���                         + smallest levels of detail  */
��¯���         glide.h   431 X    int           tmu;                    /* tmu on whic
��¯���                         +h this texture resides */
��°���         glide.h   432 X    FxU32         odd_even_mask;          /* mask specif
��°���                         +ying levels on this tmu  */
��±���         glide.h   433 X    FxU32         tmu_base_address;       /* base addr (
��±���                         +in TMU mem) of this texture */
��²���         glide.h   434 X    FxBool        trilinear;              /* should we b
��²���                         +lend by lod? */
��³���         glide.h   435 X  
��´���         glide.h   436 X    GuNccTable    ncc_table;              /* NCC compres
��´���                         +sion table (optional) */
��µ���         glide.h   437 X  } GrMipMapInfo;
��¶��R         glide.h   438 X  
��·���         glide.h   439 X  typedef int GrSstType;
��¸���         glide.h   440 X  #define GR_SSTTYPE_VOODOO    0
��¹���         glide.h   441 X  #define GR_SSTTYPE_SST96     1
��º���         glide.h   442 X  #define GR_SSTTYPE_AT3D      2
��»���         glide.h   443 X  #define GR_SSTTYPE_Voodoo2   3
��¼���         glide.h   444 X  
��½���         glide.h   445 X  typedef struct GrTMUConfig_St {
��¾���         glide.h   446 X    int    tmuRev;                /* Rev of Texelfx chip
��¾���                         + */
��¿���         glide.h   447 X    int    tmuRam;                /* 1, 2, or 4 MB */
��À���         glide.h   448 X  } GrTMUConfig_t;
��Á���         glide.h   449 X  
�����         glide.h   450 X  typedef struct GrVoodooConfig_St {
�����         glide.h   451 X    int    fbRam;                         /* 1, 2, or 4 
�����                         +MB */
�����         glide.h   452 X    int    fbiRev;                        /* Rev of Pixe
�����                         +lfx chip */
�����         glide.h   453 X    int    nTexelfx;                      /* How many te
�����                         +xelFX chips are there? */
�����         glide.h   454 X    FxBool sliDetect;                     /* Is it a sca
�����                         +n-line interleaved board? */
�����         glide.h   455 X    GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU];   /* Configu
�����                         +ration of the Texelfx chips */
�����         glide.h   456 X  } GrVoodooConfig_t;
�����         glide.h   457 X  
�����         glide.h   458 X  typedef struct GrSst96Config_St {
�����         glide.h   459 X    int   fbRam;                  /* How much? */
�����         glide.h   460 X    int   nTexelfx;
�����         glide.h   461 X    GrTMUConfig_t tmuConfig;
�����         glide.h   462 X  } GrSst96Config_t;
�����         glide.h   463 X  
�����         glide.h   464 X  typedef GrVoodooConfig_t GrVoodoo2Config_t;
�����         glide.h   465 X  
�����         glide.h   466 X  typedef struct GrAT3DConfig_St {
�����         glide.h   467 X    int   rev;
�����         glide.h   468 X  } GrAT3DConfig_t;
�����         glide.h   469 X  
�����         glide.h   470 X  typedef struct {
�����         glide.h   471 X    int num_sst;                  /* # of HW units in th
�����                         +e system */
�����         glide.h   472 X    struct {
�����         glide.h   473 X      GrSstType type;             /* Which hardware is i
�����                         +t? */
�����         glide.h   474 X      union SstBoard_u {
�����         glide.h   475 X        GrVoodooConfig_t  VoodooConfig;
�����         glide.h   476 X        GrSst96Config_t   SST96Config;
�����         glide.h   477 X        GrAT3DConfig_t    AT3DConfig;
�����         glide.h   478 X        GrVoodoo2Config_t Voodoo2Config;
�����         glide.h   479 X      } sstBoard;
����         glide.h   480 X    } SSTs[MAX_NUM_SST];          /* configuration for e
����                         +ach board */
����         glide.h   481 X  } GrHwConfiguration;
����         glide.h   482 X  
����         glide.h   483 X  typedef struct GrSstPerfStats_s {
����         glide.h   484 X    FxU32  pixelsIn;              /* # pixels processed 
����                         +(minus buffer clears) */
����         glide.h   485 X    FxU32  chromaFail;            /* # pixels not drawn 
����                         +due to chroma key */ 
����         glide.h   486 X    FxU32  zFuncFail;             /* # pixels not drawn 
����                         +due to Z comparison */
����         glide.h   487 X    FxU32  aFuncFail;             /* # pixels not drawn 
����                         +due to alpha comparison */
����         glide.h   488 X    FxU32  pixelsOut;             /* # pixels drawn (inc
����                         +luding buffer clears) */
����         glide.h   489 X  } GrSstPerfStats_t;
����         glide.h   490 X  
����         glide.h   491 X  
����         glide.h   492 X  typedef struct {
����         glide.h   493 X    float  sow;                   /* s texture ordinate 
����                         +(s over w) */
����         glide.h   494 X    float  tow;                   /* t texture ordinate 
����                         +(t over w) */  
����         glide.h   495 X    float  oow;                   /* 1/w (used mipmappin
����                         +g - really 0xfff/w) */
���         glide.h   496 X  }  GrTmuVertex;
���         glide.h   497 X  
���         glide.h   498 X  /*
���         glide.h   499 X  ** GrVertex
���         glide.h   500 X  ** If these are changed the C & assembly language tris
���                         +etup routines MUST
��õ���         glide.h   501 X  ** be changed, for they will no longer work.
��ö���         glide.h   502 X  */
��÷���         glide.h   503 X  typedef struct
��ø���         glide.h   504 X  {
��ù���         glide.h   505 X    float x, y, ooz;                /* X, Y, and Z of sc
��ù���                         +rn space -- Z is ignored */
��ú���         glide.h   506 X    float r, g, b, a;                /* R, G, B, ([0..25
��ú���                         +5.0]) */
��û���         glide.h   507 X    float z;                    /* 65535/Z (used for Z-b
��û���                         +uffering) */
��ü���         glide.h   508 X    float oow;                    /* 1/W (used for W-buf
��ü���                         +fering, texturing) */
��ý���         glide.h   509 X    GrTmuVertex  tmuvtx[GLIDE_NUM_TMU];
��þ���         glide.h   510 X  } GrVertex;
��ÿ���         glide.h   511 X  
������         glide.h   512 X  /* For indexing GrVertex as a float *.
������         glide.h   513 X     CHANGE THESE IF THE VERTEX STRUCTURE CHANGES!
������         glide.h   514 X     */
������         glide.h   515 X  #define GR_VERTEX_X_OFFSET              0
������         glide.h   516 X  #define GR_VERTEX_Y_OFFSET              1
������         glide.h   517 X  #define GR_VERTEX_Z_OFFSET              2
������         glide.h   518 X  #define GR_VERTEX_R_OFFSET              3
������         glide.h   519 X  #define GR_VERTEX_G_OFFSET              4
������         glide.h   520 X  #define GR_VERTEX_B_OFFSET              5
��	���         glide.h   521 X  #define GR_VERTEX_OOZ_OFFSET            6
��
���         glide.h   522 X  #define GR_VERTEX_A_OFFSET              7
������         glide.h   523 X  #define GR_VERTEX_OOW_OFFSET            8
������         glide.h   524 X  #define GR_VERTEX_SOW_TMU0_OFFSET       9
��
���         glide.h   525 X  #define GR_VERTEX_TOW_TMU0_OFFSET       10
������         glide.h   526 X  #define GR_VERTEX_OOW_TMU0_OFFSET       11
������         glide.h   527 X  #define GR_VERTEX_SOW_TMU1_OFFSET       12
������         glide.h   528 X  #define GR_VERTEX_TOW_TMU1_OFFSET       13
������         glide.h   529 X  #define GR_VERTEX_OOW_TMU1_OFFSET       14
������         glide.h   530 X  #if (GLIDE_NUM_TMU > 2)
������         glide.h   531 X  #define GR_VERTEX_SOW_TMU2_OFFSET       15
������         glide.h   532 X  #define GR_VERTEX_TOW_TMU2_OFFSET       16
������         glide.h   533 X  #define GR_VERTEX_OOW_TMU2_OFFSET       17
������         glide.h   534 X  #endif
������         glide.h   535 X  
������         glide.h   536 X  typedef FxU32 GrLfbSrcFmt_t;
������         glide.h   537 X  #define GR_LFB_SRC_FMT_565          0x00
������         glide.h   538 X  #define GR_LFB_SRC_FMT_555          0x01
������         glide.h   539 X  #define GR_LFB_SRC_FMT_1555         0x02
������         glide.h   540 X  #define GR_LFB_SRC_FMT_888          0x04
������         glide.h   541 X  #define GR_LFB_SRC_FMT_8888         0x05
������         glide.h   542 X  #define GR_LFB_SRC_FMT_565_DEPTH    0x0c
������         glide.h   543 X  #define GR_LFB_SRC_FMT_555_DEPTH    0x0d
�� ���         glide.h   544 X  #define GR_LFB_SRC_FMT_1555_DEPTH   0x0e
��!���         glide.h   545 X  #define GR_LFB_SRC_FMT_ZA16         0x0f
��"���         glide.h   546 X  #define GR_LFB_SRC_FMT_RLE16        0x80
��#���         glide.h   547 X  
��$�›©         glide.h   548 X  typedef FxI32 GrPassthruMode_t;
��%���         glide.h   549 X  #define GR_PASSTHRU_SHOW_VGA    0x0
��&���         glide.h   550 X  #define GR_PASSTHRU_SHOW_SST1   0x1
��'���         glide.h   551 X  
��(���         glide.h   552 X  typedef FxU32 GrHint_t;
��)���         glide.h   553 X  #define GR_HINTTYPE_MIN                 0
��*���         glide.h   554 X  #define GR_HINT_STWHINT                 0
��+���         glide.h   555 X  #define GR_HINT_FIFOCHECKHINT           1
��,���         glide.h   556 X  #define GR_HINT_FPUPRECISION            2
��-���         glide.h   557 X  #define GR_HINT_ALLOW_MIPMAP_DITHER     3
��.���         glide.h   558 X  #define GR_HINTTYPE_MAX                 3
��/���         glide.h   559 X  
��0���         glide.h   560 X  typedef FxU32 GrSTWHint_t;
��1���         glide.h   561 X  #define GR_STWHINT_W_DIFF_FBI   FXBIT(0)
��2���         glide.h   562 X  #define GR_STWHINT_W_DIFF_TMU0  FXBIT(1)
��3���         glide.h   563 X  #define GR_STWHINT_ST_DIFF_TMU0 FXBIT(2)
��4���         glide.h   564 X  #define GR_STWHINT_W_DIFF_TMU1  FXBIT(3)
��5���         glide.h   565 X  #define GR_STWHINT_ST_DIFF_TMU1 FXBIT(4)
��6���         glide.h   566 X  #define GR_STWHINT_W_DIFF_TMU2  FXBIT(5)
��7���         glide.h   567 X  #define GR_STWHINT_ST_DIFF_TMU2 FXBIT(6)
��8���         glide.h   568 X  
��9���         glide.h   569 X  typedef FxU32 GrControl_t;
��:���         glide.h   570 X  #define GR_CONTROL_ACTIVATE   0x1
��;���         glide.h   571 X  #define GR_CONTROL_DEACTIVATE 0x2
��<���         glide.h   572 X  #define GR_CONTROL_RESIZE     0x3
��=���         glide.h   573 X  #define GR_CONTROL_MOVE       0x4
��>���         glide.h   574 X  
��?���         glide.h   575 X  #define GR_GENERATE_FIFOCHECK_HINT_MASK(swHWM, swLWM) 
��?���                         +  (((swHWM & 0xffff) << 16) | (swLWM & 0xffff))
��A���         glide.h   577 X  
��B���         glide.h   578 X  
��C���         glide.h   579 X  
��D���         glide.h   580 X  
��E���         glide.h   581 X  
��F���         glide.h   582 X  /* Function blanks */
��G���         glide.h   583 X  extern void grTexDownloadTable( GrChipID_t tmu, GrTexT
��G���                         +able_t type, void *data );
��H���         glide.h   584 X  extern FxU32 grTexTextureMemRequired( FxU32 evenOdd, G
��H���                         +rTexInfo *info );
��I���         glide.h   585 X  extern void grTexSource( GrChipID_t tmu, FxU32 startAd
��I���                         +dress, FxU32 evenOdd, GrTexInfo *info );
��J���         glide.h   586 X  extern void grHints( GrHint_t hintType, FxU32 hintMask
��J���                         + );
��K���         glide.h   587 X  extern void grDitherMode( GrDitherMode_t mode );
��L���         glide.h   588 X  extern void grFogColorValue( GrColor_t fogcolor );
��M���         glide.h   589 X  extern void grFogMode( GrFogMode_t mode );
��N���         glide.h   590 X  extern void grFogTable( const GrFog_t ft[GR_FOG_TABLE_
��N���                         +SIZE] );
��O���         glide.h   591 X  extern FxBool grLfbLock( GrLock_t type, GrBuffer_t buf
��O���                         +fer, GrLfbWriteMode_t writeMode, GrOriginLocation_t or
��O���                         +igin, FxBool pixelPipeline, GrLfbInfo_t *info );
��P���         glide.h   592 X  extern FxBool grLfbUnlock( GrLock_t type, GrBuffer_t b
��P���                         +uffer );
��Q���         glide.h   593 X  extern void grBufferClear( GrColor_t color, GrAlpha_t 
��Q���                         +alpha, FxU16 depth );
��R���         glide.h   594 X  extern void grBufferSwap( int swap_interval );
��S���         glide.h   595 X  extern void grColorMask( FxBool rgb, FxBool a );
��T���         glide.h   596 X  extern void grCullMode( GrCullMode_t mode );
��U���         glide.h   597 X  extern void grConstantColorValue( GrColor_t value );
��V���         glide.h   598 X  extern void grDepthBiasLevel( FxI16 level );
��W���         glide.h   599 X  extern void grDepthBufferFunction( GrCmpFnc_t function
��W���                         + );
��X���         glide.h   600 X  extern void grDepthMask( FxBool mask );
��Y���         glide.h   601 X  extern void grDepthBufferMode( GrDepthBufferMode_t mod
��Y���                         +e );
��Z���         glide.h   602 X  extern void grSstSelect( int which_sst );
��[���         glide.h   603 X  
��\���         glide.h   604 X  extern void grTexCombine( GrChipID_t tmu, GrCombineFun
��\���                         +ction_t rgb_function, GrCombineFactor_t rgb_factor, Gr
��\���                         +CombineFunction_t alpha_function, GrCombineFactor_t al
��\���                         +pha_factor, FxBool rgb_invert, FxBool alpha_invert );
��]���         glide.h   605 X  extern void grTexMipMapMode( GrChipID_t tmu, GrMipMapM
��]���                         +ode_t mode, FxBool lodBlend );
��^���         glide.h   606 X  extern void grTexDetailControl( GrChipID_t tmu, int lo
��^���                         +d_bias, FxU8 detail_scale, float detail_max );
��_���         glide.h   607 X  extern void grTexFilterMode( GrChipID_t tmu, GrTexture
��_���                         +FilterMode_t minfilter_mode, GrTextureFilterMode_t mag
��_���                         +filter_mode );
��`���         glide.h   608 X  extern void grTexLodBiasValue(GrChipID_t tmu, float bi
��`���                         +as );
��a���         glide.h   609 X  /*MAHextern void grTexDownloadMipMap( GrChipID_t tmu, 
��a���                         +FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info ); 
��a���                         +*/
��b���         glide.h   610 X  /*MAHextern void grTexDownloadMipMap( GrChipID_t tmu, 
��b���                         +FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info, u3
��b���                         +2 *pPalette ); */
��c���         glide.h   611 X  extern void grTexDownloadMipMap( GrChipID_t tmu, FxU32
��c���                         + startAddress, FxU32 evenOdd, GrTexInfo *info, u32 *pP
��c���                         +alette, int width, int height ,char * tname);
��d���         glide.h   612 X  extern void grTexMultibase( GrChipID_t tmu, FxBool ena
��d���                         +ble );
��e���         glide.h   613 X  extern void grTexNCCTable( GrChipID_t tmu, GrNCCTable_
��e���                         +t table );
��f���         glide.h   614 X  extern void grTexClampMode( GrChipID_t tmu, GrTextureC
��f���                         +lampMode_t s_clampmode, GrTextureClampMode_t t_clampmo
��f���                         +de );
��g���         glide.h   615 X  
��h���         glide.h   616 X  extern void grDrawPlanarPolygonVertexList( int nverts,
��h���                         + const GrVertex vlist[], int argb );
��i���         glide.h   617 X  extern void grDrawTriangle( const GrVertex *a, const G
��i���                         +rVertex *b, const GrVertex *c );
��j���         glide.h   618 X  extern void grDrawLine( const GrVertex *v1, const GrVe
��j���                         +rtex *v2 );
��k���         glide.h   619 X  extern void grAADrawLine(const GrVertex *v1, const GrV
��k���                         +ertex *v2);
��l���         glide.h   620 X  extern void grGammaCorrectionValue( float value );
��m���         glide.h   621 X  
��n���         glide.h   622 X  extern void grAlphaBlendFunction( GrAlphaBlendFnc_t rg
��n���                         +b_sf,   GrAlphaBlendFnc_t rgb_df, GrAlphaBlendFnc_t al
��n���                         +pha_sf, GrAlphaBlendFnc_t alpha_df );
��o���         glide.h   623 X  extern void grAlphaCombine( GrCombineFunction_t functi
��o���                         +on, GrCombineFactor_t factor, GrCombineLocal_t local, 
��o���                         +GrCombineOther_t other, FxBool invert );
��p���         glide.h   624 X  extern void grAlphaControlsITRGBLighting( FxBool enabl
��p���                         +e );
��q���         glide.h   625 X  extern void grAlphaTestFunction( GrCmpFnc_t function )
��q���                         +;
��r���         glide.h   626 X  extern void grAlphaTestReferenceValue( GrAlpha_t value
��r���                         + );
��s���         glide.h   627 X  extern void grChromakeyMode( GrChromakeyMode_t mode );
��t���         glide.h   628 X  extern void grChromakeyValue( GrColor_t value );
��u���         glide.h   629 X  extern void grClipWindow( FxU32 minx, FxU32 miny, FxU3
��u���                         +2 maxx, FxU32 maxy );
��v���         glide.h   630 X  extern void grColorCombine( GrCombineFunction_t functi
��v���                         +on, GrCombineFactor_t factor, GrCombineLocal_t local, 
��v���                         +GrCombineOther_t other, FxBool invert );
��w���         glide.h   631 X  
��x���         glide.h   632 X  extern void grSstVidMode( FxU32 whichSst, void *vidTim
��x���                         +ings );
��y���         glide.h   633 X  
��z���         glide.h   634 X  typedef void (*GrErrorCallbackFnc_t)( const char *stri
��z���                         +ng, FxBool fatal );
��{���         glide.h   635 X  extern void grErrorSetCallback( GrErrorCallbackFnc_t f
��{���                         +nc );
��|���         glide.h   636 X  
��}���         glide.h   637 X  /*
��~���         glide.h   638 X  ** glide management functions
��?���         glide.h   639 X  */
��€���         glide.h   640 X  extern void grGlideInit( void );
�����         glide.h   641 X  extern FxBool grSstQueryHardware( GrHwConfiguration *h
�����                         +wconfig );
��‚���         glide.h   642 X  extern FxBool grSstWinOpen( FxU32 hWnd, GrScreenResolu
��‚���                         +tion_t screen_resolution, GrScreenRefresh_t refresh_ra
��‚���                         +te, GrColorFormat_t color_format
��ƒ���         glide.h   643 X   ,GrOriginLocation_t origin_location, int nColBuffers,
��ƒ���                         + int nAuxBuffers);
��„���         glide.h   644 X  extern void grSstWinClose( void );
��…���         glide.h   645 X  extern FxU32 grTexMinAddress( GrChipID_t tmu );
��†���         glide.h   646 X  extern FxU32 grTexMaxAddress( GrChipID_t tmu );
��‡���         glide.h   647 X  extern void grGlideShutdown( void );
��ˆ���         glide.h   648 X  
��‰���         glide.h   649 X  extern int grBufferNumPending( void );
��Š���         glide.h   650 X  
��‹���         glide.h   651 X  
��Œ���         glide.h   652 X  extern int FrameCounter;
�����         glide.h   653 X  
��Ž���         glide.h   654 X  extern void InitgrDrawTriangle3Cache();
�����         glide.h   655 X  extern void EmptygrDrawTriangle3Cache();
�����         glide.h   656 X  extern void InitgrWaterCache(unsigned char *Texture);
��‘���         glide.h   657 X  extern void AddWaterTriCache(int NumTris);
��’���         glide.h   658 X  extern void EmptyWaterTriCache();
��“���         glide.h   659 X  
��”���         glide.h   660 X  extern u32 grConstantColor; 
��•���         glide.h   661 X  extern u32 grCurrentTexture;
��–���         glide.h   662 X  
��—���         glide.h   663    #endif /* __GLIDE_H__ */

worldob.h

Found at 0x3F98EA0:


Q�����       worldob.h     1    /*////////////////////////////////////////////////////
Q�����                         +////////////////////////////////*/
Q�����       worldob.h     2    /* worldob.c - Functions and definitions to handle wor
Q�����                         +ld objects.*/
Q�����       worldob.h     3    /**/
Q�����       worldob.h     4    /* Author: Steve Ranck     */
Q�����       worldob.h     5    /*////////////////////////////////////////////////////
Q�����                         +////////////////////////////////*/
Q�����       worldob.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
Q�����                         +TERTAINMENT.*/
Q�����       worldob.h     7    /* Copyright (c) 1997*/
Q�����       worldob.h     8    /**/
Q�	���       worldob.h     9    /* The contents of this file may not be disclosed to t
Q�	���                         +hird*/
Q�
���       worldob.h    10    /* parties, copied or duplicated in any form, in whole
Q�
���                         + or in part,*/
Q�����       worldob.h    11    /* without the prior written permission of Midway Home
Q�����                         + Entertainment.*/
Q�����       worldob.h    12    /*////////////////////////////////////////////////////
Q�����                         +////////////////////////////////*/
Q�
���       worldob.h    13    /* Modification History:*/
Q�����       worldob.h    14    /**/
Q�����       worldob.h    15    /* Date     Who         Description*/
Q�����       worldob.h    16    /* -------- ----------  ------------------------------
Q�����                         +--------------------------------*/
Q�����       worldob.h    17    /* 06/17/97 Ranck       Created.*/
Q�����       worldob.h    18    /*////////////////////////////////////////////////////
Q�����                         +////////////////////////////////*/
Q�����       worldob.h    19    #ifndef _WORLDOB_H_
Q�����       worldob.h    20 X  #define _WORLDOB_H_ 1
Q�����       worldob.h    21 X  
Q�����       worldob.h    22 X  #include "gendefs.h"
Q�����       worldob.h    23 X  #include "vec3.h"
Q�����       worldob.h    24 X  #include "xfm.h"
Q�����       worldob.h    25 X  #include "linklist.h"
Q�����       worldob.h    26 X  #include "mesh3d.h"
Q�����       worldob.h    27 X  #include "world.h"
Q�����       worldob.h    28 X  #include "orient.h"
Q�����       worldob.h    29 X  #include "motion.h"
Q�����       worldob.h    30 X  
Q�����       worldob.h    31 X  typedef enum {
Q� ���       worldob.h    32 X          /* Misc Flags:*/
Q�!���       worldob.h    33 X          WORLDOB_FLAG_DISABLE                    = 0x00
Q�!���                         +000001, /* Object is entirely disabled (no lights, no 
Q�!���                         +collisions, no drawing, etc.)*/
Q�"���       worldob.h    34 X          WORLDOB_FLAG_TRIPWIRE                   = 0x00
Q�"���                         +000004, /* Call tripwire system for this WorldOb*/
Q�#���       worldob.h    35 X          WORLDOB_FLAG_FLOAT                            
Q�#���                         +  = 0x00000008, /* Object is floating on water*/
Q�$���       worldob.h    36 X          WORLDOB_FLAG_STATIONARY                 = 0x00
Q�$���                         +000010, /* Object is stationary in world space*/
Q�%���       worldob.h    37 X          WORLDOB_FLAG_SUBMERGEDKILL              = 0x00
Q�%���                         +000200, /* Auto-kill this worldob as soon as it is  fM
Q�%���                         +odelBoundRadius under water*/
Q�&���       worldob.h    38 X          WORLDOB_FLAG_OFFWORLDPERSIST    = 0x00000400, 
Q�&���                         +  /* Don't auto-kill this object if it falls outside t
Q�&���                         +  he world*/
Q�'���       worldob.h    39 X          WORLDOB_FLAG_SPECIAL_PHYS               = 0x00
Q�'���                         +000800, /* If set, motion_Simulate will not be called*
Q�'���                         +/
Q�(���       worldob.h    40 X          WORLDOB_FLAG_AI_AVOID                   = 0x00
Q�(���                         +001000, /* Tells AI to avoid this object*/
Q�)���       worldob.h    41 X          WORLDOB_FLAG_FIND_PATH                  = 0x00
Q�)���                         +002000, /* Tells boat to be moved by a path instance*/
Q�*���       worldob.h    42 X          WORLDOB_FLAG_DELETED                    = 0x00
Q�*���                         +008000, /* Just a status bit that's set whenever world
Q�*���                         +ob_Delete() is called*/
Q�+���       worldob.h    43 X  
Q�,���       worldob.h    44 X          /* Drawing Flags:                       */
Q�-���       worldob.h    45 X          WORLDOB_FLAG_DONT_DRAW                  = 0x00
Q�-���                         +000002, /* Don't draw this object (collisions and ligh
Q�-���                         +ts are still enabled)*/
Q�.���       worldob.h    46 X          WORLDOB_FLAG_POSTER_Y                   = 0x00
Q�.���                         +000020, /* Poster around Y axis*/
Q�/���       worldob.h    47 X          WORLDOB_FLAG_DRAW_REFLECTED             = 0x00
Q�/���                         +000040, /* Draw this object reflected (expensive!)*/
Q�0���       worldob.h    48 X          WORLDOB_FLAG_DRAW_AFTER_WATER   = 0x00004000, 
Q�0���                         +  /* Tells World system to draw this object after wate
Q�0���                         +  r instead of before*/
Q�1���       worldob.h    49 X  
Q�2���       worldob.h    50 X          /* Lighting Flags:                            
Q�2���                         +  */
Q�3���       worldob.h    51 X          WORLDOB_FLAG_SAMPLE_LIGHT               = 0x00
Q�3���                         +000100, /* At draw time, sample the sector ambient and
Q�3���                         + celestial light at the*/
Q�4���       worldob.h    52 X                                                        
Q�4���                         +                                                /*   o
Q�4���                         +rigin of the object and store in the SensedLight field
Q�4���                         +.*/
Q�5���       worldob.h    53 X          WORLDOB_FLAG_LIT_BY_DIR_ONLY    = 0x00000080, 
Q�5���                         +  /* This object is to be lit by directional light onl
Q�5���                         +  y*/
Q�6���       worldob.h    54 X  
Q�7���       worldob.h    55 X          /* Unused Flags:*/
Q�8���       worldob.h    56 X          WORLDOB_FLAG_17                               
Q�8���                         +  = 0x00010000, /* Unused*/
Q�9���       worldob.h    57 X          WORLDOB_FLAG_18                               
Q�9���                         +  = 0x00020000, /* Unused*/
Q�:���       worldob.h    58 X          WORLDOB_FLAG_19                               
Q�:���                         +  = 0x00040000, /* Unused*/
Q�;���       worldob.h    59 X          WORLDOB_FLAG_20                               
Q�;���                         +  = 0x00080000, /* Unused*/
Q�<���       worldob.h    60 X          WORLDOB_FLAG_21                               
Q�<���                         +  = 0x00100000, /* Unused*/
Q�=���       worldob.h    61 X          WORLDOB_FLAG_22                               
Q�=���                         +  = 0x00200000, /* Unused*/
Q�>���       worldob.h    62 X          WORLDOB_FLAG_23                               
Q�>���                         +  = 0x00400000, /* Unused*/
Q�?���       worldob.h    63 X          WORLDOB_FLAG_24                               
Q�?���                         +  = 0x00800000, /* Unused*/
Q�@���       worldob.h    64 X          WORLDOB_FLAG_25                               
Q�@���                         +  = 0x01000000, /* Unused*/
Q�A���       worldob.h    65 X          WORLDOB_FLAG_26                               
Q�A���                         +  = 0x02000000, /* Unused*/
Q�B���       worldob.h    66 X          WORLDOB_FLAG_27                               
Q�B���                         +  = 0x04000000, /* Unused*/
Q�C���       worldob.h    67 X          WORLDOB_FLAG_28                               
Q�C���                         +  = 0x08000000, /* Unused*/
Q�D���       worldob.h    68 X          WORLDOB_FLAG_29                               
Q�D���                         +  = 0x10000000, /* Unused*/
Q�E���       worldob.h    69 X          WORLDOB_FLAG_30                               
Q�E���                         +  = 0x20000000, /* Unused*/
Q�F���       worldob.h    70 X          WORLDOB_FLAG_31                               
Q�F���                         +  = 0x40000000, /* Unused*/
Q�G���       worldob.h    71 X          WORLDOB_FLAG_32                               
Q�G���                         +  = 0x80000000, /* Unused*/
Q�H���       worldob.h    72 X  
Q�I���       worldob.h    73 X          WORLDOB_FLAG_COLLIDE_INVIEW             = WORL
Q�I���                         +DOB_FLAG_17,    /*PAB This object is not in view, so i
Q�I���                         +gnore collisions!!! */
Q�J���       worldob.h    74 X  
Q�K���       worldob.h    75 X          WORLDOB_FLAG_NONE                             
Q�K���                         +  = 0
Q�L���       worldob.h    76 X  } WorldObFlags;
Q�M���       worldob.h    77 X  
Q�N���       worldob.h    78 X  struct _WorldOb_s;
Q�O���       worldob.h    79 X  typedef struct _WorldOb_s WorldOb_t;
Q�P���       worldob.h    80 X  
Q�Q���       worldob.h    81 X  #include "floatation.h"
Q�R���       worldob.h    82 X  #include "worldcoll.h"
Q�S���       worldob.h    83 X  
Q�T���       worldob.h    84 X  typedef void WorldobMoveFcn_t( WorldOb_t *pWorldOb );
Q�U���       worldob.h    85 X  typedef void WorldobDrawFcn_t( WorldOb_t *pWorldOb );
Q�V���       worldob.h    86 X  
Q�W���       worldob.h    87 X  struct _WorldOb_s {
Q�X���       worldob.h    88 X          u32 nFlags;                                   
Q�X���                         +        /* See WORLDOB_FLAG_* for info*/
Q�Y���       worldob.h    89 X  
Q�Z���       worldob.h    90 X          u32 nGameId;                                  
Q�Z���                         +  /* Way to identify different type worldobs( 0=none )
Q�Z���                         +  */
Q�[���       worldob.h    91 X          u16 nUserId;                                  
Q�[���                         +  /* User ID field( 0=none )*/
Q�\���       worldob.h    92 X          u16 nUserArg;                                 
Q�\���                         +  /* User argument( generally depends on nUserId )*/
Q�]���       worldob.h    93 X  
Q�^���       worldob.h    94 X          Mesh3d_t *pMesh;                              
Q�^���                         +  /* Pointer to the mesh (NULL=none)*/
Q�_���       worldob.h    95 X          void *pUserObject;                            
Q�_���                         +  /* Pointer to user-defined object*/
Q�`���       worldob.h    96 X          Motion_t *pMotion;                            
Q�`���                         +  /* Pointer to Motion_t data, could be NULL if it is 
Q�`���                         +  not used*/
Q�a���       worldob.h    97 X          WorldColl_t *pWorldColl;                /* Poi
Q�a���                         +nter to WorldColl_t data (NULL if object can't collide
Q�a���                         +)*/
Q�b���       worldob.h    98 X          Floatation_t *pFloatation;              /* Poi
Q�b���                         +nter to Floatation_t data, could be NULL if it is not 
Q�b���                         +used*/
Q�c���       worldob.h    99 X          void *pSoundData;                             
Q�c���                         +  /* Pointer to app specific sound data, NULL if there
Q�c���                         +   is not a sound attached to this worldob*/
Q�d���       worldob.h   100 X  
Q�e���       worldob.h   101 X          LinkRoot_t LightList;                   /* Lis
Q�e���                         +t of WorldLt_t's attached to this world object*/
Q�f���       worldob.h   102 X                                                        
Q�f���                         +                /* These fields used when WORLDOB_FLAG
Q�f���                         +_SAMPLE_LIGHT flag set:*/
Q�g���       worldob.h   103 X          ARGBf_t SensedLight;                    /* Las
Q�g���                         +t sampled sector light for this world object*/
Q�h���       worldob.h   104 X          Vec3_t SensorPos;                             
Q�h���                         +  /* Model space sensor location*/
Q�i���       worldob.h   105 X          Vec3_t SensorDir;                             
Q�i���                         +  /* Points in the direction to sense (model space)*/
Q�j���       worldob.h   106 X  
Q�k���       worldob.h   107 X          Orient_t Orient;                              
Q�k���                         +  /* Position and orientation*/
Q�l���       worldob.h   108 X          float fScale;                                 
Q�l���                         +  /* Scale of object (none = 1.0f)*/
Q�m���       worldob.h   109 X  
Q�n���       worldob.h   110 X          Vec3_t ModelBoundCenter;                /* Mod
Q�n���                         +el bounding sphere center*/
Q�o���       worldob.h   111 X          float fModelBoundRadius;                /* Mod
Q�o���                         +el bounding sphere radius (not including fScale)*/
Q�p���       worldob.h   112 X          Tws_t Tws;                                    
Q�p���                         +        /* Tracking World Sphere object*/
Q�q���       worldob.h   113 X  
Q�r���       worldob.h   114 X          u16 nGameFrameDrawn;                    /* The
Q�r���                         + game frame this object was last drawn*/
Q�s���       worldob.h   115 X          u16 nGameFrameWork;                           
Q�s���                         +  /* The game frame this object was last drawn*/
Q�t���       worldob.h   116 X          Link_t Link;                                  
Q�t���                         +  /* Link to next and previous world objects*/
Q�u���       worldob.h   117 X  
Q�v���       worldob.h   118 X          WorldobMoveFcn_t *pWorkFcn;             /* Poi
Q�v���                         +nter to function responsible for doing work on this ob
Q�v���                         +ject*/
Q�w���       worldob.h   119 X                                                        
Q�w���                         +                /*   (NULL = no move function)*/
Q�x���       worldob.h   120 X          WorldobDrawFcn_t *pDrawFcn;             /* Poi
Q�x���                         +nter to function responsible for drawing this object*/
Q�y���       worldob.h   121 X                                                        
Q�y���                         +                /*   (NULL = pMesh automatically drawn
Q�y���                         +)*/
Q�z���       worldob.h   122 X  };
Q�{���       worldob.h   123 X  
Q�|���       worldob.h   124 X  #include "worldlt.h"
Q�}���       worldob.h   125 X  
Q�~���       worldob.h   126 X  
Q�?���       worldob.h   127 X  #if defined(__cplusplus)
Q�€���       worldob.h   128 X  extern "C" {
Q����       worldob.h   129 X  #endif
Q�‚���       worldob.h   130 X  
Q�ƒ���       worldob.h   131 X  extern LinkRoot_t Worldob_List;         /* Linklist of
Q�ƒ���                         + all objects in world*/
Q�„���       worldob.h   132 X  
Q�…���       worldob.h   133 X  extern BOOL worldob_ModuleInit( void );
Q�†���       worldob.h   134 X  extern void worldob_InitSystem( void );
Q�‡���       worldob.h   135 X  extern void worldob_Free( void );
Q�ˆ���       worldob.h   136 X  extern void worldob_Draw( WorldOb_t *pWorldOb, BOOL bF
Q�ˆ���                         +laggedAsBeforeWater, BOOL bFlaggedAsAfterWater );
Q�‰���       worldob.h   137 X  extern void worldob_ObjectSort_Init( void );
Q�Š���       worldob.h   138 X  extern void worldob_ObjectSort_Cleanup( void );
Q�‹���       worldob.h   139 X  extern void worldob_ObjectSort_Add( WorldOb_t *pWorldO
Q�‹���                         +b, BOOL bFlaggedAsBeforeWater, BOOL bFlaggedAsAfterWat
Q�‹���                         +er );
Q�Œ���       worldob.h   140 X  extern void worldob_ObjectSort_Draw( void );
Q����       worldob.h   141 X  extern void worldob_DrawObjectsInSector( WorldSector_t
Q����                         + *pSector,
Q�Ž���       worldob.h   142 X                                                        
Q�Ž���                         +         BOOL bFlaggedAsBeforeWater, BOOL bFlaggedAsAf
Q�Ž���                         +terWater, BOOL bSort );
Q����       worldob.h   143 X  extern void worldob_DrawObjectsInSectorDisplayList( Wo
Q����                         +rldSector_t *pSector,
Q����       worldob.h   144 X                                                        
Q����                         +                                BOOL bFlaggedAsBeforeW
Q����                         +ater, BOOL bFlaggedAsAfterWater, BOOL bSort );
Q�‘���       worldob.h   145 X  extern void worldob_DrawAll( BOOL bFlaggedAsBeforeWate
Q�‘���                         +r, BOOL bFlaggedAsAfterWater );
Q�’���       worldob.h   146 X  extern WorldOb_t *worldob_Init( WorldOb_t *pWorldOb );
Q�“���       worldob.h   147 X  extern WorldOb_t *worldob_InitMesh( WorldOb_t *pWorldO
Q�“���                         +b, Mesh3d_t *pMesh );
Q�”���       worldob.h   148 X  extern void worldob_InitBoundsFromMesh( WorldOb_t *pWo
Q�”���                         +rldOb, Mesh3d_t *pMesh );
Q�•���       worldob.h   149 X  extern void worldob_Add( WorldOb_t *pWorldOb, WorldSec
Q�•���                         +tor_t *pHintSector );
Q�–���       worldob.h   150 X  extern void worldob_Delete( WorldOb_t *pWorldOb );
Q�—���       worldob.h   151 X  extern WorldLt_t *worldob_FindLightId( WorldOb_t *pWor
Q�—���                         +ldOb, u32 nLightId );
Q�˜���       worldob.h   152 X  extern void worldob_UpdateAllTrackingWorldSpheres( voi
Q�˜���                         +d );
Q�™���       worldob.h   153 X  extern u32 worldob_UpdateTrackingWorldSphere( WorldOb_
Q�™���                         +t *pWorldOb, BOOL bForceIntersectBuild );
Q�š���       worldob.h   154 X  extern BOOL worldob_AttachLightsFromMesh( WorldOb_t *p
Q�š���                         +WorldOb, Mesh3d_t *pMesh );
Q�›���       worldob.h   155 X  extern void worldob_AttachWorldLight( WorldOb_t *pWorl
Q�›���                         +dOb, WorldLt_t *pWorldLight );
Q�œ���       worldob.h   156 X  extern void worldob_DeleteLights( WorldOb_t *pWorldOb 
Q�œ���                         +);
Q����       worldob.h   157 X  extern void worldob_TransformAllObjectLights( void );
Q�ž���       worldob.h   158 X  extern void worldob_EnableObjectLights( WorldOb_t *pWo
Q�ž���                         +rldOb, BOOL bEnable );
Q�Ÿ���       worldob.h   159 X  extern void worldob_CallAllWorkFcns( u32 nNum30ths, u3
Q�Ÿ���                         +2 nFrameCounter );
Q� ���       worldob.h   160 X  
Q�¡���       worldob.h   161 X  #if defined(__cplusplus)
Q�¢���       worldob.h   162 X  }
Q�£���       worldob.h   163 X  #endif
Q�¤���       worldob.h   164 X  
Q�¥���       worldob.h   165 X  
Q�¦���       worldob.h   166 X  
Q�§���       worldob.h   167    #endif

sky.h

Begins at 0x3F9E4C0 but more fragments can be found throughout the track.


s�����           sky.h     1    /*////////////////////////////////////////////////////
s�����                         +///////////////////*/
s�����           sky.h     2    /*  FILE:               sky.h                         
s�����                         +                         //*/
s�����           sky.h     3    /*      CREATED BY: Michael Starich                   
s�����                         +                     //*/
s�����           sky.h     4    /*                                                    
s�����                         +                 //*/
s�����           sky.h     5    /*////////////////////////////////////////////////////
s�����                         +///////////////////*/
s�����           sky.h     6    /*      THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HO
s�����                        +ME ENTERTAINMENT     //*/
s�����           sky.h     7    /*      Copyright (c) 1997, All Rights Reserved.      
s�����                         +                     //*/
s�����           sky.h     8    /*                                                    
s�����                         +                     //*/
s�	���           sky.h     9    /*      The contents of this file may not be disclosed
s�	���                         + to third            //*/
s�
���           sky.h    10    /*  parties, copied or duplicated in any form, in whol
s�
���                         +e or in part,    //*/
s�����           sky.h    11    /*  without the prior written permission of Midway Hom
s�����                         +e Entertainment  //*/
s�����           sky.h    12    /*////////////////////////////////////////////////////
s�����                         +///////////////////*/
s�
���           sky.h    13    /*      MODIFICATION HISTORY:                         
s�
���                         +                     //*/
s�����           sky.h    14    /*                                                    
s�����                         +                 //*/
s�����           sky.h    15    /*      DATE    WHO             DESCRIPTION           
s�����                         +                             //*/
s�����           sky.h    16    /*  --------------------------------------------------
s�����                         +-----------------//*/
s�����           sky.h    17    /*      4/22/97 STARICH                               
s�����                         +                     //*/
s�����           sky.h    18    /*  7/07/97 sranck      Added code to draw a solid red
s�����                         + sky if all sky      //*/
s�����           sky.h    19    /*                  textures couldn't be loaded into t
s�����                         +mem.             //*/
s�����           sky.h    20    /*////////////////////////////////////////////////////
s�����                         +///////////////////*/
s�����           sky.h    21    #ifndef _SKY_H_
s�����           sky.h    22    #define _SKY_H_ 1
s�����           sky.h    23    
s�����           sky.h    24    #include "gendefs.h"
s�����           sky.h    25    #include "xmath.h"
s�����           sky.h    26    #include "worldob.h"

s�����           sky.h    27    
s�����           sky.h    28    #if defined(__cplusplus)
s�����           sky.h    29 X  extern "C" {
s�����           sky.h    30    #endif
s�����           sky.h    31    
s� ���           sky.h    32  E extern int sky_ModuleInit( void );
s�!���           sky.h    33  E extern void sky_LoadSkyForATrack( int bLoad1SkyOnly );
s�"���           sky.h    34    extern void sky_Work( int nYaw, int nPitch, int nRoll 
s�"���                         +);
s�#���           sky.h    35    extern void sky_Draw( void );
s�$���           sky.h    36    extern void sky_SetColorEffects( f32 fR, f32 fG, f32 f
s�$���                         +B, f32 fColorIntensity, f32 fWhiteSat , u32 nPlayer);
s�%���           sky.h    37    extern void sky_SetWhiteSat( f32 fWhiteSat );
s�&���           sky.h    38    extern f32 sky_GetDefaultHorizonPoint( u32 nTrackNum )
s�&���                         +; 
s�'���           sky.h    39    extern f32 sky_GetDefaultPivotPoint( u32 nTrackNum ); 
s�(���           sky.h    40    extern void sky_ChangeHorizonPoint( f32 fNewHorizon );
s�)���           sky.h    41    extern void sky_ChangePivotPoint( f32 fNewPivot );
s�*���           sky.h    42    extern void sky_ChangeViewport( void );
s�+���           sky.h    43  E extern void sky_LoadSky( u32 nTrackNum, int bLoad1SkyO
s�+���                         +nly );
s�,���           sky.h    44    extern void sky_Init( f32 fPivotDY, f32 fHorizonDY );
s�-���           sky.h    45  E extern void sky_TW_SwitchSky( WorldOb_t *pWorldOb, u32
s�-���                         + nParm1, int bForward );
s�.���           sky.h    46  E extern void sky_TW_FadeOutSky( WorldOb_t *pWorldOb, u3
s�.���                         +2 nStep, int bForward );
s�/���           sky.h    47  E extern void sky_TW_FadeInSky( WorldOb_t *pWorldOb, u32
s�/���                         + nStep, int bForward );
s�0���           sky.h    48  E extern void sky_TW_ToggleBlackSky( WorldOb_t *pWorldOb
s�0���                         +, u32 nParm1, int bForward );
s�1���           sky.h    49    
s�2���           sky.h    50    #if defined(__cplusplus)
s�3���           sky.h    51 X  }
s�4���           sky.h    52    #endif
s�5���           sky.h    53    
s�6���           sky.h    54    #endif
s�7���           sky.h    55    
s�8���           sky.h    56    
s�9���           sky.h    57    
s�:���           sky.h    58    
s�;���           sky.h    59    
s�<���           sky.h    60    

gendefs.h

Found at 0x3F9F310:


������       gendefs.h     1    /*////////////////////////////////////////////////////
������                         +////////////////////////////////*/
������       gendefs.h     2    /* gendefs.h - General purpose definitions and macros*
������                         +/
������       gendefs.h     3    /**/
������       gendefs.h     4    /* Author: Steve Ranck*/
������       gendefs.h     5    /*////////////////////////////////////////////////////
������                         +////////////////////////////////*/
������       gendefs.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
������                         +TERTAINMENT.*/
������       gendefs.h     7    /* Copyright (c) 1997*/
������       gendefs.h     8    /**/
��	���       gendefs.h     9    /* The contents of this file may not be disclosed to t
��	���                         +hird*/
��
���       gendefs.h    10    /* parties, copied or duplicated in any form, in whole
��
���                         + or in part,*/
������       gendefs.h    11    /* without the prior written permission of Midway Home
������                         + Entertainment.*/
������       gendefs.h    12    /*////////////////////////////////////////////////////
������                         +////////////////////////////////*/
��
���       gendefs.h    13    /* Modification History:*/
������       gendefs.h    14    /**/
������       gendefs.h    15    /* Date         Who                     Description*/
������       gendefs.h    16    /* --------     ----------      ----------------------
������                         +----------------------------------------*/
������       gendefs.h    17    /* 01-17-97     Ranck           Created.*/
������       gendefs.h    18    /*////////////////////////////////////////////////////
������                         +////////////////////////////////*/
������       gendefs.h    19    
������       gendefs.h    20    #ifndef _GENDEFS_H_
������       gendefs.h    21 X  #define _GENDEFS_H_ 1
������       gendefs.h    22 X  
������       gendefs.h    23 X  #include "eurocom.h"                            /* PAB
������                         + Do this BEFORE anything else */
������       gendefs.h    24 X  #include "gentypes.h"
������       gendefs.h    25 X  
������       gendefs.h    26 X  #if TARGET==ULTRA64                                   
������                         +  /* Extra includes */
������       gendefs.h    27 X  #include "system.h"
������       gendefs.h    28 X  
������       gendefs.h    29 X  
������       gendefs.h    30 X  
������       gendefs.h    31 X  
�� ���       gendefs.h    32 X  #undef TARGET_PLATFORM
��!���       gendefs.h    33 X  #define TARGET_PLATFORM                 1       /* Ass
��!���                         +ume arcade defaults */
��"���       gendefs.h    34 X  #endif  /*ULTRA64 */
��#���       gendefs.h    35 X  
��$���       gendefs.h    36 X  #if TARGET==DREAMCAST
��%���       gendefs.h    37 X          #ifdef INCLUDE_SYSTEM_H
��&���       gendefs.h    38 X                  #include "system.h"
��'���       gendefs.h    39 X          #endif
��(���       gendefs.h    40 X          #undef TARGET_PLATFORM
��)���       gendefs.h    41 X          #define TARGET_PLATFORM                 1     
��)���                         +  /* Assume arcade defaults */
��*���       gendefs.h    42 X  #endif  /*DREAMCAST*/
��+���       gendefs.h    43 X  
��,���       gendefs.h    44 X  
��-���       gendefs.h    45 X  /* Use this macro to allocate memory, shows where code
��-���                         + alloc'd with file id :) */
��.���       gendefs.h    46 X  #define SYSMEM_ALLOC(var)                       sysmem
��.���                         +_Alloc(__FILE__, __LINE__,var)
��/���       gendefs.h    47 X  #define SYSMEM_ALLOCANDZERO(var)        sysmem_AllocAn
��/���                         +dZero(__FILE__, __LINE__,var)
��0���       gendefs.h    48 X  
��1���       gendefs.h    49 X  #if SYS_PRODUCTION_BUILD
��2���       gendefs.h    50 X  #       define SYS_PRINTF                             
��2���                         +  0     /* 1 = enable printf support (coinop or PC)*/
��3���       gendefs.h    51 X  #else
��4���       gendefs.h    52 X  #       define SYS_PRINTF                             
��4���                         +  1     /* 1 = enable printf support (coinop or PC)*/
��5���       gendefs.h    53 X  #endif
��6���       gendefs.h    54 X  
��7���       gendefs.h    55 X  
��8���       gendefs.h    56 X  /*----------------------------------------------------
��8���                         +--------------------------------*/
��9���       gendefs.h    57 X  /*----------------------------------------------------
��9���                         +--------------------------------*/
��:���       gendefs.h    58 X  /* NOTE:*/
��;���       gendefs.h    59 X  /**/
��<���       gendefs.h    60 X  /*   These definitions must be set up via the compiler
��<���                         + command line. Do NOT use these*/
��=���       gendefs.h    61 X  /*   as compile-time switches.*/
��>���       gendefs.h    62 X  /**/
��?���       gendefs.h    63 X  /*     _DEBUG:*/
��@���       gendefs.h    64 X  /*       defined = debug compilation.*/
��A���       gendefs.h    65 X  /*       undefined = release compilation.*/
��B���       gendefs.h    66 X  /**/
��C���       gendefs.h    67 X  /*     NDEBUG:*/
��D���       gendefs.h    68 X  /*       defined = release compilation.*/
��E���       gendefs.h    69 X  /*       undefined = debug compilation.*/
��F���       gendefs.h    70 X  /**/
��G���       gendefs.h    71 X  /*     TARGET_PLATFORM:*/
��H���       gendefs.h    72 X  /*       0 = target is Win95-based dev system (emulati
��H���                         +on of coinop hardware).*/
��I���       gendefs.h    73 X  /*       1 = target is actual coinop hardware (MIPS pr
��I���                         +ocessor).*/
��J���       gendefs.h    74 X  /*       2 = target is Win95-based static library.*/
��K���       gendefs.h    75 X  /**/
��L���       gendefs.h    76 X  /*     __MSC__:*/
��M���       gendefs.h    77 X  /*       defined = compiling with Microsoft C/C++ comp
��M���                         +iler (used for Glide).*/
��N���       gendefs.h    78 X  /*       undefined = not compiling with Microsoft C/C+
��N���                         ++ compiler.*/
��O���       gendefs.h    79 X  /**/
��P���       gendefs.h    80 X  /**/
��Q���       gendefs.h    81 X  /*   These compile-time definitions are set up here. U
��Q���                         +se these as compile-time switches.*/
��R���       gendefs.h    82 X  /**/
��S���       gendefs.h    83 X  /*      SYS_PLATFORM:*/
��T���       gendefs.h    84 X  /*        SYS_PLATFORM_WINDEV   = target is Win95-base
��T���                         +d dev system (emulation of coinop hardware).*/
��U���       gendefs.h    85 X  /*        SYS_PLATFORM_COINOPHW = target is actual coi
��U���                         +nop hardware (MIPS processor).*/
��V���       gendefs.h    86 X  /*        SYS_PLATFORM_WINLIB   = target is Win95-base
��V���                         +d static library.*/
��W���       gendefs.h    87 X  /**/
��X���       gendefs.h    88 X  /*      SYS_DEBUG:*/
��Y���       gendefs.h    89 X  /*        1 = debug compilation.*/
��Z���       gendefs.h    90 X  /*        0 = release compilation.*/
��[���       gendefs.h    91 X  /**/
��\���       gendefs.h    92 X  /*      SYS_RELEASE:*/
��]���       gendefs.h    93 X  /*        1 = release compilation.*/
��^���       gendefs.h    94 X  /*        0 = debug compilation.*/
��_���       gendefs.h    95 X  /**/
��`���       gendefs.h    96 X  /*      SYS_COINOPHW_TARGET:*/
��a���       gendefs.h    97 X  /*        1 = target is actual coinop hardware (MIPS p
��a���                         +rocessor).*/
��b���       gendefs.h    98 X  /*        0 = target is not coinop hardware.*/
��c���       gendefs.h    99 X  /**/
��d���       gendefs.h   100 X  /*      SYS_WINDEV_TARGET:*/
��e���       gendefs.h   101 X  /*        1 = target is Win95-based dev system (emulat
��e���                         +ion of coinop hardware).*/
��f���       gendefs.h   102 X  /*        0 = target is not dev system.*/
��g���       gendefs.h   103 X  /**/
��h���       gendefs.h   104 X  /*      SYS_WINLIB_TARGET:*/
��i���       gendefs.h   105 X  /*        1 = target is Win95-based static library.*/
��j���       gendefs.h   106 X  /*        0 = target is not static library.*/
��k���       gendefs.h   107 X  /**/
��l���       gendefs.h   108 X  /*      SYS_COINOPHW_DEBUG:*/
��m���       gendefs.h   109 X  /*        1 = debug compilation for the coinop hardwar
��m���                         +e target.*/
��n���       gendefs.h   110 X  /*        0 = any other configuration.*/
��o���       gendefs.h   111 X  /**/
��p���       gendefs.h   112 X  /*      SYS_COINOPHW_RELEASE:*/
��q���       gendefs.h   113 X  /*        1 = release compilation for the coinop hardw
��q���                         +are target.*/
��r���       gendefs.h   114 X  /*        0 = any other configuration.*/
��s���       gendefs.h   115 X  /**/
��t���       gendefs.h   116 X  /*      SYS_WINDEV_DEBUG:*/
��u���       gendefs.h   117 X  /*        1 = debug compilation for the Win95-based de
��u���                         +v system.*/
��v���       gendefs.h   118 X  /*        0 = any other configuration.*/
��w���       gendefs.h   119 X  /**/
��x���       gendefs.h   120 X  /*      SYS_WINDEV_RELEASE:*/
��y���       gendefs.h   121 X  /*        1 = release compilation for the Win95-based 
��y���                         +dev system.*/
��z���       gendefs.h   122 X  /*        0 = any other configuration.*/
��{���       gendefs.h   123 X  /**/
��|���       gendefs.h   124 X  /*      SYS_WINLIB_DEBUG:*/
��}���       gendefs.h   125 X  /*        1 = debug compilation for the Win95-based st
��}���                         +atic library.*/
��~���       gendefs.h   126 X  /*        0 = any other configuration.*/
��?���       gendefs.h   127 X  /**/
��€���       gendefs.h   128 X  /*      SYS_WINLIB_RELEASE:*/
�����       gendefs.h   129 X  /*        1 = release compilation for the Win95-based 
�����                         +static library.*/
��‚���       gendefs.h   130 X  /*        0 = any other configuration.*/
��ƒ���       gendefs.h   131 X  
��„���       gendefs.h   132 X  #define SYS_PLATFORM_WINDEV             0
��…���       gendefs.h   133 X  #define SYS_PLATFORM_COINOPHW   1
��†���       gendefs.h   134 X  #define SYS_PLATFORM_WINLIB             2
��‡���       gendefs.h   135 X  
��ˆ���       gendefs.h   136 X  #define SYS_PLATFORM                    (TARGET_PLATFO
��ˆ���                         +RM)
��‰���       gendefs.h   137 X  
��Š���       gendefs.h   138 X  #define SYS_WINDEV_TARGET               (SYS_PLATFORM=
��Š���                         +=SYS_PLATFORM_WINDEV)
��‹���       gendefs.h   139 X  #define SYS_COINOPHW_TARGET             (SYS_PLATFORM=
��‹���                         +=SYS_PLATFORM_COINOPHW)
��Œ���       gendefs.h   140 X  #define SYS_WINLIB_TARGET               (SYS_PLATFORM=
��Œ���                         +=SYS_PLATFORM_WINLIB)
�����       gendefs.h   141 X  
��Ž���       gendefs.h   142 X  #ifdef _DEBUG
�����       gendefs.h   143 X  /* Debug build flags...*/
�����       gendefs.h   144 X  #define SYS_DEBUG                               1
��‘���       gendefs.h   145 X  #define SYS_RELEASE                             0
��’���       gendefs.h   146 X  #define SYS_COINOPHW_DEBUG              (SYS_COINOPHW_
��’���                         +TARGET)
��“���       gendefs.h   147 X  #define SYS_COINOPHW_RELEASE    0
��”���       gendefs.h   148 X  #define SYS_WINDEV_DEBUG                (SYS_WINDEV_TA
��”���                         +RGET)
��•���       gendefs.h   149 X  #define SYS_WINDEV_RELEASE              0
��–���       gendefs.h   150 X  #define SYS_WINLIB_DEBUG                (SYS_WINLIB_TA
��–���                         +RGET)
��—���       gendefs.h   151 X  #define SYS_WINLIB_RELEASE              0
��˜���       gendefs.h   152 X  
��™���       gendefs.h   153 X  #else
��š���       gendefs.h   154 X  /* Release build flags...*/
��›���       gendefs.h   155 X  #define SYS_DEBUG                               0
��œ���       gendefs.h   156 X  #define SYS_RELEASE                             1
�����       gendefs.h   157 X  #define SYS_COINOPHW_DEBUG              0
��ž���       gendefs.h   158 X  #define SYS_COINOPHW_RELEASE    (SYS_COINOPHW_TARGET)
��Ÿ���       gendefs.h   159 X  #define SYS_WINDEV_DEBUG                0
�� ���       gendefs.h   160 X  #define SYS_WINDEV_RELEASE              (SYS_WINDEV_TA
�� ���                         +RGET)
��¡���       gendefs.h   161 X  #define SYS_WINLIB_DEBUG                0
��¢���       gendefs.h   162 X  #define SYS_WINLIB_RELEASE              (SYS_WINLIB_TA
��¢���                         +RGET)
��£���       gendefs.h   163 X  
��¤���       gendefs.h   164 X  #endif /* _DEBUG*/
��¥���       gendefs.h   165 X  
��¦���       gendefs.h   166 X  /*----------------------------------------------------
��¦���                         +--------------------------------*/
��§���       gendefs.h   167 X  /*----------------------------------------------------
��§���                         +--------------------------------*/
��¨���       gendefs.h   168 X  /* Win95 Dev System GUI support externs and macros...*
��¨���                         +/
��©���       gendefs.h   169 X  
��ª���       gendefs.h   170 X  #define WINGUI_FLAG_READONLY    0x00000001      /* set
��ª���                         +s the control to a read-only state*/
��«���       gendefs.h   171 X  
��¬���       gendefs.h   172 X  #if SYS_WINDEV_TARGET
��­���       gendefs.h   173 X  /* Win95 Dev System present...*/
��®���       gendefs.h   174 X  
��¯���       gendefs.h   175 X  #if defined(__cplusplus)
��°���       gendefs.h   176 X  extern "C" {
��±���       gendefs.h   177 X  #endif
��²���       gendefs.h   178 X  
��³���       gendefs.h   179 X  extern void wintap_InitEdit_s32( cchar *pszTabName, in
��³���                         +t nSlotNum, cchar *pszTitle, u32 nFlags, cchar *pszFor
��³���                         +mat );
��´���       gendefs.h   180 X  extern void wintap_InitEdit_u32( cchar *pszTabName, in
��´���                         +t nSlotNum, cchar *pszTitle, u32 nFlags, cchar *pszFor
��´���                         +mat );
��µ���       gendefs.h   181 X  extern void wintap_InitEdit_f32( cchar *pszTabName, in
��µ���                         +t nSlotNum, cchar *pszTitle, u32 nFlags, cchar *pszFor
��µ���                         +mat );
��¶���       gendefs.h   182 X  extern void wintap_InitCheck_s32( cchar *pszTabName, i
��¶���                         +nt nSlotNum, cchar *pszTitle, u32 nFlags );
��·���       gendefs.h   183 X  extern void wintap_InitCheck_u32( cchar *pszTabName, i
��·���                         +nt nSlotNum, cchar *pszTitle, u32 nFlags );
��¸���       gendefs.h   184 X  extern void wintap_InitCheck_f32( cchar *pszTabName, i
��¸���                         +nt nSlotNum, cchar *pszTitle, u32 nFlags );
��¹���       gendefs.h   185 X  extern void wintap_InitSlider_s32( cchar *pszTabName, 
��¹���                         +int nSlotNum, cchar *pszTitle, u32 nFlags, s32 nMin, s
��¹���                         +32 nMax );
��º���       gendefs.h   186 X  extern void wintap_InitSlider_u32( cchar *pszTabName, 
��º���                         +int nSlotNum, cchar *pszTitle, u32 nFlags, u32 nMin, u
��º���                         +32 nMax );
��»���       gendefs.h   187 X  extern void wintap_InitSlider_f32( cchar *pszTabName, 
��»���                         +int nSlotNum, cchar *pszTitle, u32 nFlags, f32 nMin, f
��»���                         +32 nMax );
��¼���       gendefs.h   188 X  
��½���       gendefs.h   189 X  extern void wintap_ExportEdit_s32( s32 nVar, cchar *ps
��½���                         +zTabName, int nSlotNum );
��¾���       gendefs.h   190 X  extern void wintap_ExportEdit_u32( u32 nVar, cchar *ps
��¾���                         +zTabName, int nSlotNum );
��¿���       gendefs.h   191 X  extern void wintap_ExportEdit_f32( f32 nVar, cchar *ps
��¿���                         +zTabName, int nSlotNum );
��À���       gendefs.h   192 X  extern void wintap_ExportCheck_s32( s32 nVar, cchar *p
��À���                         +szTabName, int nSlotNum );
��Á���       gendefs.h   193 X  extern void wintap_ExportCheck_u32( u32 nVar, cchar *p
��Á���                         +szTabName, int nSlotNum );
�����       gendefs.h   194 X  extern void wintap_ExportCheck_f32( f32 nVar, cchar *p
�����                         +szTabName, int nSlotNum );
�����       gendefs.h   195 X  extern void wintap_ExportSlider_s32( s32 nVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   196 X  extern void wintap_ExportSlider_u32( u32 nVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   197 X  extern void wintap_ExportSlider_f32( f32 nVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   198 X  
�����       gendefs.h   199 X  extern void wintap_ImportEdit_s32( s32 *pVar, cchar *p
�����                         +szTabName, int nSlotNum );
�����       gendefs.h   200 X  extern void wintap_ImportEdit_u32( u32 *pVar, cchar *p
�����                         +szTabName, int nSlotNum );
�����       gendefs.h   201 X  extern void wintap_ImportEdit_f32( f32 *pVar, cchar *p
�����                         +szTabName, int nSlotNum );
�����       gendefs.h   202 X  extern void wintap_ImportCheck_s32( s32 *pVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   203 X  extern void wintap_ImportCheck_u32( u32 *pVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   204 X  extern void wintap_ImportCheck_f32( f32 *pVar, cchar *
�����                         +pszTabName, int nSlotNum );
�����       gendefs.h   205 X  extern void wintap_ImportSlider_s32( s32 *pVar, cchar 
�����                         +*pszTabName, int nSlotNum );
�����       gendefs.h   206 X  extern void wintap_ImportSlider_u32( u32 *pVar, cchar 
�����                         +*pszTabName, int nSlotNum );
�����       gendefs.h   207 X  extern void wintap_ImportSlider_f32( f32 *pVar, cchar 
�����                         +*pszTabName, int nSlotNum );
�����       gendefs.h   208 X  
�����       gendefs.h   209 X  #if defined(__cplusplus)
�����       gendefs.h   210 X  }
�����       gendefs.h   211 X  #endif
�����       gendefs.h   212 X  
�����       gendefs.h   213 X  #define WINGUI_INIT_EDIT_S32 wintap_InitEdit_s32
�����       gendefs.h   214 X  #define WINGUI_INIT_EDIT_U32 wintap_InitEdit_u32
�����       gendefs.h   215 X  #define WINGUI_INIT_EDIT_F32 wintap_InitEdit_f32
�����       gendefs.h   216 X  #define WINGUI_INIT_CHECK_S32 wintap_InitCheck_s32
�����       gendefs.h   217 X  #define WINGUI_INIT_CHECK_U32 wintap_InitCheck_u32
�����       gendefs.h   218 X  #define WINGUI_INIT_CHECK_F32 wintap_InitCheck_f32
�����       gendefs.h   219 X  #define WINGUI_INIT_SLIDER_S32 wintap_InitSlider_s32
�����       gendefs.h   220 X  #define WINGUI_INIT_SLIDER_U32 wintap_InitSlider_u32
�����       gendefs.h   221 X  #define WINGUI_INIT_SLIDER_F32 wintap_InitSlider_f32
�����       gendefs.h   222 X  
�����       gendefs.h   223 X  #define WINGUI_EXPORT_EDIT_S32 wintap_ExportEdit_s32
����       gendefs.h   224 X  #define WINGUI_EXPORT_EDIT_U32 wintap_ExportEdit_u32
����       gendefs.h   225 X  #define WINGUI_EXPORT_EDIT_F32 wintap_ExportEdit_f32
����       gendefs.h   226 X  #define WINGUI_EXPORT_CHECK_S32 wintap_ExportCheck_s32
����       gendefs.h   227 X  #define WINGUI_EXPORT_CHECK_U32 wintap_ExportCheck_u32
����       gendefs.h   228 X  #define WINGUI_EXPORT_CHECK_F32 wintap_ExportCheck_f32
����       gendefs.h   229 X  #define WINGUI_EXPORT_SLIDER_S32 wintap_ExportSlider_s
����                         +32
����       gendefs.h   230 X  #define WINGUI_EXPORT_SLIDER_U32 wintap_ExportSlider_u
����                         +32
����       gendefs.h   231 X  #define WINGUI_EXPORT_SLIDER_F32 wintap_ExportSlider_f
����                         +32
����       gendefs.h   232 X  
����       gendefs.h   233 X  #define WINGUI_IMPORT_EDIT_S32 wintap_ImportEdit_s32
����       gendefs.h   234 X  #define WINGUI_IMPORT_EDIT_U32 wintap_ImportEdit_u32
����       gendefs.h   235 X  #define WINGUI_IMPORT_EDIT_F32 wintap_ImportEdit_f32
����       gendefs.h   236 X  #define WINGUI_IMPORT_CHECK_S32 wintap_ImportCheck_s32
����       gendefs.h   237 X  #define WINGUI_IMPORT_CHECK_U32 wintap_ImportCheck_u32
����       gendefs.h   238 X  #define WINGUI_IMPORT_CHECK_F32 wintap_ImportCheck_f32
����       gendefs.h   239 X  #define WINGUI_IMPORT_SLIDER_S32 wintap_ImportSlider_s
����                         +32
���       gendefs.h   240 X  #define WINGUI_IMPORT_SLIDER_U32 wintap_ImportSlider_u
���                         +32
���       gendefs.h   241 X  #define WINGUI_IMPORT_SLIDER_F32 wintap_ImportSlider_f
���                         +32
���       gendefs.h   242 X  
���       gendefs.h   243 X  #else
���       gendefs.h   244 X  /* No Win95 Dev System...*/
��õ���       gendefs.h   245 X  
��ö���       gendefs.h   246 X  #define WINGUI_INIT_EDIT_S32
��÷���       gendefs.h   247 X  #define WINGUI_INIT_EDIT_U32
��ø���       gendefs.h   248 X  #define WINGUI_INIT_EDIT_F32
��ù���       gendefs.h   249 X  #define WINGUI_INIT_CHECK_S32
��ú���       gendefs.h   250 X  #define WINGUI_INIT_CHECK_U32
��û���       gendefs.h   251 X  #define WINGUI_INIT_CHECK_F32
��ü���       gendefs.h   252 X  #define WINGUI_INIT_SLIDER_S32
��ý���       gendefs.h   253 X  #define WINGUI_INIT_SLIDER_U32
��þ���       gendefs.h   254 X  #define WINGUI_INIT_SLIDER_F32
��ÿ���       gendefs.h   255 X  
������       gendefs.h   256 X  #define WINGUI_EXPORT_EDIT_S32
������       gendefs.h   257 X  #define WINGUI_EXPORT_EDIT_U32
������       gendefs.h   258 X  #define WINGUI_EXPORT_EDIT_F32
������       gendefs.h   259 X  #define WINGUI_EXPORT_CHECK_S32
������       gendefs.h   260 X  #define WINGUI_EXPORT_CHECK_U32
������       gendefs.h   261 X  #define WINGUI_EXPORT_CHECK_F32
������       gendefs.h   262 X  #define WINGUI_EXPORT_SLIDER_S32
������       gendefs.h   263 X  #define WINGUI_EXPORT_SLIDER_U32
������       gendefs.h   264 X  #define WINGUI_EXPORT_SLIDER_F32
��	���       gendefs.h   265 X  
��
���       gendefs.h   266 X  #define WINGUI_IMPORT_EDIT_S32
������       gendefs.h   267 X  #define WINGUI_IMPORT_EDIT_U32
������       gendefs.h   268 X  #define WINGUI_IMPORT_EDIT_F32
��
���       gendefs.h   269 X  #define WINGUI_IMPORT_CHECK_S32
������       gendefs.h   270 X  #define WINGUI_IMPORT_CHECK_U32
������       gendefs.h   271 X  #define WINGUI_IMPORT_CHECK_F32
������       gendefs.h   272 X  #define WINGUI_IMPORT_SLIDER_S32
������       gendefs.h   273 X  #define WINGUI_IMPORT_SLIDER_U32
������       gendefs.h   274 X  #define WINGUI_IMPORT_SLIDER_F32
������       gendefs.h   275 X  
������       gendefs.h   276 X  #endif
������       gendefs.h   277 X  
������       gendefs.h   278 X  
������       gendefs.h   279 X  
������       gendefs.h   280 X  /*----------------------------------------------------
������                         +--------------------------------*/
������       gendefs.h   281 X  /*----------------------------------------------------
������                         +--------------------------------*/
������       gendefs.h   282 X  /* Debugging support definitions and externs...*/
������       gendefs.h   283 X  
������       gendefs.h   284 X  #if defined(__cplusplus)
������       gendefs.h   285 X  extern "C" {
������       gendefs.h   286 X  #endif
������       gendefs.h   287 X  
�� ���       gendefs.h   288 X  
��!���       gendefs.h   289 X  /* HALTGAME stuff...*/
��"���       gendefs.h   290 X  #define HALTGAME(s) gerr_Halt( s, __FILE__, __LINE__ )
��#���       gendefs.h   291 X  extern void gerr_Halt( const char *s, const char *fnam
��#���                         +e, int linenum );
��$���       gendefs.h   292 X  
��%���       gendefs.h   293 X  #if SYS_COINOPHW_TARGET
��&���       gendefs.h   294 X          /* XASSERT macro for coinop hardware...*/
��'���       gendefs.h   295 X          #if SYS_DEBUG
��(���       gendefs.h   296 X                  #define XASSERT(b) if( (!(b)) ) gerr_A
��(���                         +ssert( b, __FILE__, __LINE__ )
��)���       gendefs.h   297 X                  extern void gerr_Assert( int b, const 
��)���                         +char *fname, int linenum );
��*���       gendefs.h   298 X          #else
��+���       gendefs.h   299 X                  #define XASSERT(b)
��,���       gendefs.h   300 X          #endif
��-���       gendefs.h   301 X  #endif
��.���       gendefs.h   302 X  #if SYS_WINDEV_TARGET
��/���       gendefs.h   303 X          /* XASSERT macro for Win95...*/
��0���       gendefs.h   304 X          #if SYS_DEBUG
��1���       gendefs.h   305 X                  /* Route asserts to our print box...*/
��2���       gendefs.h   306 X                  #define XASSERT(b) if( (!(b)) ) gerr_A
��2���                         +ssert( b, __FILE__, __LINE__ )
��3���       gendefs.h   307 X                  extern void gerr_Assert( int b, const 
��3���                         +char *fname, int linenum );
��4���       gendefs.h   308 X          #else
��5���       gendefs.h   309 X                  #define XASSERT(b)
��6���       gendefs.h   310 X          #endif
��7���       gendefs.h   311 X  #endif
��8���       gendefs.h   312 X  #if SYS_WINLIB_TARGET
��9���       gendefs.h   313 X          /* XASSERT macro for static library...*/
��:���       gendefs.h   314 X          #if SYS_DEBUG
��;���       gendefs.h   315 X                  /* Route asserts to external handler..
��;���                         +.*/
��<���       gendefs.h   316 X                  #define XASSERT(b) if( (!(b)) ) gerr_A
��<���                         +ssert( b, __FILE__, __LINE__ )
��=���       gendefs.h   317 X                  extern void gerr_Assert( int b, const 
��=���                         +char *fname, int linenum );
��>���       gendefs.h   318 X          #else
��?���       gendefs.h   319 X                  #define XASSERT(b)
��@���       gendefs.h   320 X          #endif
��A���       gendefs.h   321 X  #endif
��B���       gendefs.h   322 X  #define XASSERT_NOW XASSERT(0)
��C���       gendefs.h   323 X  #define XASSERT_UNIT_FLOAT( q ) XASSERT( ((q)>=0.0f &&
��C���                         + (q)<=1.0f) )
��D���       gendefs.h   324 X  #define XASSERT_BOOL( b ) XASSERT( ((b)==0 || (b)==1) 
��D���                         +)
��E���       gendefs.h   325 X  
��F���       gendefs.h   326 X  
��G���       gendefs.h   327 X  #if defined(__cplusplus)
��H���       gendefs.h   328 X  }
��I���       gendefs.h   329 X  #endif
��J���       gendefs.h   330 X  
��K���       gendefs.h   331 X  
��L���       gendefs.h   332 X  
��M���       gendefs.h   333 X  /*----------------------------------------------------
��M���                         +--------------------------------*/
��N���       gendefs.h   334 X  /*----------------------------------------------------
��N���                         +--------------------------------*/
��O���       gendefs.h   335 X  /* Printf support macros...*/
��P���       gendefs.h   336 X  
��Q���       gendefs.h   337 X  #if SYS_WINDEV_TARGET
��R���       gendefs.h   338 X          #include "wintap.h"
��S���       gendefs.h   339 X  #endif
��T���       gendefs.h   340 X  
��U���       gendefs.h   341 X  #if SYS_COINOPHW_TARGET
��V���       gendefs.h   342 X  #if TARGET!=ULTRA64 && TARGET!=DREAMCAST        /* Thi
��V���                         +s file doesn't actually exist! Doh! */
��W���       gendefs.h   343 X          #include "commport_driver.h"
��X���       gendefs.h   344 X  #endif  /*ULTRA64 */
��Y���       gendefs.h   345 X  #endif
��Z���       gendefs.h   346 X  
��[���       gendefs.h   347 X  #if SYS_WINDEV_TARGET
��\���       gendefs.h   348 X          #define _printf_target wintap_Printf
��]���       gendefs.h   349 X          #define _printferr_target wintap_Printferr
��^���       gendefs.h   350 X  #endif
��_���     ­  gendefs.h   351 X  #if SYS_COINOPHW_TARGET
��`���       gendefs.h   352 X  #if TARGET==ULTRA64||TARGET==DREAMCAST  /* Re-direct p
��`���                         +rintf's to host I/O */
��a���       gendefs.h   353 X          #define _printf_target          CONSOLE
��b���       gendefs.h   354 X          #define _printferr_target       CONSOLE
��c���       gendefs.h   355 X  #else   /*ULTRA64 */
��d���       gendefs.h   356 X          #define _printf_target commport_driver_Printf
��e���       gendefs.h   357 X          #define _printferr_target commport_driver_Prin
��e���                         +tf
��f���       gendefs.h   358 X  #endif  /*ULTRA64 */
��g���       gendefs.h   359 X  #endif
��h���       gendefs.h   360 X  #if SYS_WINLIB_TARGET
��i���       gendefs.h   361 X          #define _printf_target
��j���       gendefs.h   362 X          #define _printferr_target
��k���       gendefs.h   363 X  #endif
��l���       gendefs.h   364 X  
��m���       gendefs.h   365 X  #if SYS_PRINTF
��n���       gendefs.h   366 X          #define xprintf _printf_target
��o���       gendefs.h   367 X          #define xprintferr _printferr_target
��p���       gendefs.h   368 X  #else
��q���       gendefs.h   369 X          #define xprintf 1 ? (void)0 : _printf_target
��r���       gendefs.h   370 X          #define xprintferr 1 ? (void)0 : _printferr_ta
��r���                         +rget
��s���       gendefs.h   371 X  #endif
��t���       gendefs.h   372 X  
��u���       gendefs.h   373 X  
��v���       gendefs.h   374 X  
��w���       gendefs.h   375 X  /*----------------------------------------------------
��w���                         +--------------------------------*/
��x���       gendefs.h   376 X  /*----------------------------------------------------
��x���                         +--------------------------------*/
��y���       gendefs.h   377 X  /* Other macros...*/
��z���       gendefs.h   378 X  
��{���       gendefs.h   379 X  #if TARGET==ULTRA64 || TARGET==DREAMCAST
��|���       gendefs.h   380 X          #define SYS_ENABLE_INLINE_CODE  1
��}���       gendefs.h   381 X          #define XINLINE 
��~���       gendefs.h   382 X  #else   /*ULTRA64*/
��?���       gendefs.h   383 X  
��€���       gendefs.h   384 X  #endif  /*ULTRA64*/
�����       gendefs.h   385 X  
��‚���       gendefs.h   386    #endif
��ƒ���       gendefs.h   387    

xmath.h

Found at 0x3FA7D90:


G�����         xmath.h     1    /*////////////////////////////////////////////////////
G�����                         +////////////////////////////////*/
G�����         xmath.h     2    /* xmath.h*/
G�����         xmath.h     3    /**/
G�����         xmath.h     4    /* Author: Steve Ranck*/
G�����         xmath.h     5    /*////////////////////////////////////////////////////
G�����                         +////////////////////////////////*/
G�����         xmath.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
G�����                         +TERTAINMENT.*/
G�����         xmath.h     7    /* Copyright (c) 1997*/
G�����         xmath.h     8    /**/
G�	���         xmath.h     9    /* The contents of this file may not be disclosed to t
G�	���                         +hird*/
G�
���         xmath.h    10    /* parties, copied or duplicated in any form, in whole
G�
���                         + or in part,*/
G�����         xmath.h    11    /* without the prior written permission of Midway Home
G�����                         + Entertainment.*/
G�����         xmath.h    12    /*////////////////////////////////////////////////////
G�����                         +////////////////////////////////*/
G�
���         xmath.h    13    /* Modification History:*/
G�����         xmath.h    14    /**/
G�����         xmath.h    15    /* Date         Who                     Description*/
G�����         xmath.h    16    /* --------     ----------      ----------------------
G�����                         +----------------------------------------*/
G�����         xmath.h    17    /* 01-17-97     Ranck           Created.*/
G�����         xmath.h    18    /* 09-10-97 Starich             Added lookup var for s
G�����                         +in 90 degree increments, instead of */
G�����         xmath.h    19    /*                                              using 
G�����                         +sin.  Also created a function to index into this table
G�����                         +*/
G�����         xmath.h    20    /*                                              and ma
G�����                         +intain an index.*/
G�����         xmath.h    21    /*////////////////////////////////////////////////////
G�����                         +////////////////////////////////*/
G�����         xmath.h    22    
G�����         xmath.h    23    #ifndef _XMATH_H_
G�����         xmath.h    24 X  #define _XMATH_H_ 1
G�����         xmath.h    25 X  
G�����         xmath.h    26 X  #include "gendefs.h"
G�����         xmath.h    27 X  
G�����         xmath.h    28 X  
G�����         xmath.h    29 X  #if TARGET==ULTRA64     || TARGET==DREAMCAST /* Don't 
G�����                         +use arcade sin table, use own version */
G�����         xmath.h    30 X  /* 'sinfulltbl' is 0x50000 bytes in hex! Bugger that! 
G�����                         +*/
G�����         xmath.h    31 X  #define XMATH_USE_FULL_SINTBL           0
G� ���         xmath.h    32 X  #else   /*ULTRA64 */
G�!���         xmath.h    33 X  #define XMATH_USE_FULL_SINTBL           1
G�"���         xmath.h    34 X  #endif  /*ULTRA64 */
G�#���         xmath.h    35 X  #define XMATH_USE_INTELASM_TRIG         0             
G�#���                         +  /* XMATH_USE_FULL_SINTBL must be 0 when this flag is
G�#���                         +   1*/
G�$���         xmath.h    36 X  
G�%���         xmath.h    37 X  #if XMATH_USE_FULL_SINTBL
G�&���         xmath.h    38 X  #define xmath_sin( nAngle ) (sinfulltbl[ (nAngle)&0xff
G�&���                         +ff ])
G�'���         xmath.h    39 X  #define xmath_cos( nAngle ) (sinfulltbl[ 16384 + ((nAn
G�'���                         +gle)&0xffff) ])
G�(���         xmath.h    40 X  #endif
G�)���         xmath.h    41 X  
G�*���         xmath.h    42 X  
G�+���         xmath.h    43 X  /* Useful constants...*/
G�,���         xmath.h    44 X  #define XMATH_SIN0                      0.0f
G�-���         xmath.h    45 X  #define XMATH_SIN15                     0.258819045f
G�.���         xmath.h    46 X  #define XMATH_SIN30                     0.5f
G�/���         xmath.h    47 X  #define XMATH_SIN45                     0.707106781f
G�0���         xmath.h    48 X  #define XMATH_SIN60                     0.866025404f
G�1���         xmath.h    49 X  #define XMATH_SIN75                     0.965925826f
G�2���         xmath.h    50 X  #define XMATH_SIN90                     1.0f
G�3���         xmath.h    51 X  #define XMATH_COS0                      1.0f
G�4���         xmath.h    52 X  #define XMATH_COS15                     0.965925826f
G�5���         xmath.h    53 X  #define XMATH_COS30                     0.866025404f
G�6���         xmath.h    54 X  #define XMATH_COS45                     0.707106781f
G�7���         xmath.h    55 X  #define XMATH_COS60                     0.5f
G�8���         xmath.h    56 X  #define XMATH_COS75                     0.258819045f
G�9���         xmath.h    57 X  #define XMATH_COS90                     0.0f
G�:���         xmath.h    58 X  
G�;���         xmath.h    59 X  /* Angle macros...*/
G�<���         xmath.h    60 X  #define XMATH_PI (3.1415926536f)
G�=���         xmath.h    61 X  #define XMATH_2PI (XMATH_PI*2.0f)
G�>���         xmath.h    62 X  #define XMATH_RADIANS_TO_BRADIANS( r ) ( (int)((r)*(65
G�>���                         +536.0f/XMATH_2PI)+0.5f) )
G�?���         xmath.h    63 X  #define XMATH_BRADIANS_TO_RADIANS( b ) ( (float)(b)*(X
G�?���                         +MATH_2PI/65536.0f) )
G�@���         xmath.h    64 X  #define XMATH_DEGREES_TO_BRADIANS( d ) ( (int)((d)*(65
G�@���                         +536.0f/360.0f)) & 0xffff)
G�A���         xmath.h    65 X  #define XMATH_BRADIANS_TO_DEGREES( r ) ( (float)(r)*(3
G�A���                         +60.0f/65536.0f) )       /*PAB Arcade bug! Was 'b'*/
G�B���         xmath.h    66 X  #define XMATH_NORMALIZE_BRADIANS( b ) ((b) & 0xffff)
G�C���         xmath.h    67 X  #define XMATH_POS2NEG_BRADIANS( b ) ( ((b)&0xffff < 32
G�C���                         +768) ? ((b)&0xffff) : ((b)&0xffff)-65536 )
G�D���         xmath.h    68 X  #define XMATH_NORM2NEG_BRADIANS( b ) ( ((b) < 32768) ?
G�D���                         + (b) : ((b)-65536) )
G�E���         xmath.h    69 X  
G�F���         xmath.h    70 X  /* Some common angles in bradians ...*/
G�G���         xmath.h    71 X  #define XMATH_1_BRADIANS        ( 65536/360 )
G�H���         xmath.h    72 X  #define XMATH_5_BRADIANS        ( 65536/72 )
G�I���         xmath.h    73 X  #define XMATH_10_BRADIANS   ( 65536/36 )
G�J���         xmath.h    74 X  #define XMATH_15_BRADIANS       ( 65536/24 )
G�K���         xmath.h    75 X  #define XMATH_25_BRADIANS       ( XMATH_10_BRADIANS + 
G�K���                         +XMATH_15_BRADIANS )
G�L���         xmath.h    76 X  #define XMATH_30_BRADIANS       ( 65536/12)
G�M���         xmath.h    77 X  #define XMATH_35_BRADIANS       ( XMATH_30_BRADIANS + 
G�M���                         +XMATH_5_BRADIANS )
G�N���         xmath.h    78 X  #define XMATH_45_BRADIANS       ( 65536/8 )
G�O���         xmath.h    79 X  #define XMATH_60_BRADIANS       ( 65536/6 )
G�P���         xmath.h    80 X  #define XMATH_75_BRADIANS       ( XMATH_60_BRADIANS + 
G�P���                         +XMATH_15_BRADIANS )
G�Q���         xmath.h    81 X  #define XMATH_90_BRADIANS       ( 65536/4 )
G�R���         xmath.h    82 X  #define XMATH_105_BRADIANS      ( XMATH_90_BRADIANS + 
G�R���                         +XMATH_15_BRADIANS )
G�S���         xmath.h    83 X  #define XMATH_120_BRADIANS      ( XMATH_90_BRADIANS + 
G�S���                         +XMATH_30_BRADIANS )
G�T���         xmath.h    84 X  #define XMATH_135_BRADIANS      ( XMATH_90_BRADIANS + 
G�T���                         +XMATH_45_BRADIANS )
G�U���         xmath.h    85 X  #define XMATH_150_BRADIANS      ( XMATH_90_BRADIANS + 
G�U���                         +XMATH_60_BRADIANS )
G�V���         xmath.h    86 X  #define XMATH_180_BRADIANS      ( 65536/2 )
G�W���         xmath.h    87 X  #define XMATH_225_BRADIANS      ( XMATH_180_BRADIANS +
G�W���                         + XMATH_45_BRADIANS )
G�X���         xmath.h    88 X  #define XMATH_270_BRADIANS      ( (65536/4) * 3 )
G�Y���         xmath.h    89 X  #define XMATH_300_BRADIANS      ( XMATH_270_BRADIANS +
G�Y���                         + XMATH_30_BRADIANS )
G�Z���         xmath.h    90 X  #define XMATH_315_BRADIANS      ( XMATH_270_BRADIANS +
G�Z���                         + XMATH_45_BRADIANS )
G�[���         xmath.h    91 X  #define XMATH_330_BRADIANS      ( XMATH_315_BRADIANS +
G�[���                         + XMATH_15_BRADIANS )
G�\���         xmath.h    92 X  #define XMATH_345_BRADIANS      ( XMATH_330_BRADIANS +
G�\���                         + XMATH_15_BRADIANS )
G�]���         xmath.h    93 X  
G�^���         xmath.h    94 X  /* Converison ...*/
G�_���         xmath.h    95 X  #define XMATH_TIME2INT( m, s, cs )      ( (m)*6000 + (
G�_���                         +s)*100 + (cs) )
G�`���         xmath.h    96 X  #define XMATH_MIN_TIME                          ( XMAT
G�`���                         +H_TIME2INT( -99, 59, 99 ) )
G�a���         xmath.h    97 X  #define XMATH_MAX_TIME                          ( XMAT
G�a���                         +H_TIME2INT(  99, 59, 99 ) )
G�b���         xmath.h    98 X  #define XMATH_TIME2MIN( x )                     ( (int
G�b���                         +)( (x)*(1.0f/60.0f) ) )
G�c���         xmath.h    99 X  #define XMATH_TIME2SECS( x )            ( (int)( (x) )
G�c���                         + )
G�d���         xmath.h   100 X  #define XMATH_TIME2CSEC( x )            ( (int)( (x)*1
G�d���                         +00.0f) )
G�e���         xmath.h   101 X  #define XMATH_FEETPERSEC_TO_MILESPERHOUR (3600.0f/5280
G�e���                         +.0f)    /* Multiply by ft/sec to yield mi/hr*/
G�f���         xmath.h   102 X  #define XMATH_MILESPERHOUR_TO_FEETPERSEC (5280.0f/3600
G�f���                         +.0f)    /* Multiply by mi/hr to yield ft/sec*/
G�g���         xmath.h   103 X  #define XMATH_TRUNCATE_FLOAT( s, x )    ( ((f32)( (s32
G�g���                         +)((s)*(x)) ))*(1.0f/(x)) )      /* x is assumed to be 
G�g���                         +a multipule of 10 (eg. 10.0f, 100.0f...)*/
G�h���         xmath.h   104 X  
G�i���         xmath.h   105 X  /* Common math macros...*/
G�j���         xmath.h   106 X  #define XMATH_IABS( a ) ( (a)>=0 ? (a) : -(a) )
G�k���         xmath.h   107 X  #define XMATH_FABS( a ) ( (a)>=0.0f ? (a) : -(a) )
G�l���         xmath.h   108 X  #define XMATH_ISIGN( a ) ( (a)>=0 ? 1 : -1 )
G�m���         xmath.h   109 X  #define XMATH_FSIGN( a ) ( (a)>=0.0f ? 1.0f : -1.0f )
G�n���         xmath.h   110 X  #define XMATH_MIN( a, b ) ( (a)<(b) ? (a) : (b) )
G�o���         xmath.h   111 X  #define XMATH_MAX( a, b ) ( (a)>(b) ? (a) : (b) )
G�p���         xmath.h   112 X  #define XMATH_CLAMPMIN( v, min ) { if((v)<(min)) v=(mi
G�p���                         +n); }
G�q���         xmath.h   113 X  #define XMATH_CLAMPMAX( v, max ) { if((v)>(max)) v=(ma
G�q���                         +x); }
G�r���         xmath.h   114 X  #define XMATH_CLAMP( v, min, max ) { if((v)<(min)) v=(
G�r���                         +min); else if((v)>(max)) v=(max); }
G�s���         xmath.h   115 X  #define XMATH_BIPOLAR_CLAMPMIN( v, min ) { if((v)>=0) 
G�s���                         +{ XMATH_CLAMPMIN(v,min) } else { XMATH_CLAMPMAX(v,-min
G�s���                         +) } }
G�t���         xmath.h   116 X  #define XMATH_BIPOLAR_CLAMPMAX( v, max ) { if((v)>=0) 
G�t���                         +{ XMATH_CLAMPMAX(v,max) } else { XMATH_CLAMPMIN(v,-max
G�t���                         +) } }
G�u���         xmath.h   117 X  #define XMATH_BIPOLAR_CLAMP( v, min, max ) { if((v)>=0
G�u���                         +) { XMATH_CLAMP(v,min,max) } else { XMATH_CLAMP(v,-max
G�u���                         +,-min) } }
G�v���         xmath.h   118 X  #define XMATH_FPOT( control, v0, v1 ) ( (control)*(v1)
G�v���                         + + (1.0f-(control))*(v0) )
G�w���         xmath.h   119 X  #define XMATH_FPOTD( control, v0, dv ) ( (control)*(dv
G�w���                         +) + (v0) )
G�x���         xmath.h   120 X  #define XMATH_ISWAP( i1, i2 ) { int tmp; tmp=i1; i1=i2
G�x���                         +; i2=tmp; }
G�y���         xmath.h   121 X  #define XMATH_FSWAP( f1, f2 ) { float tmp; tmp=f1; f1=
G�y���                         +f2; f2=tmp; }
G�z���         xmath.h   122 X  #define XMATH_ISAMESIGN( i1, i2 ) ( ((s32)(i1) ^ (s32)
G�z���                         +(i2)) >= 0 )
G�{���         xmath.h   123 X  #define XMATH_FSAMESIGN( f1, f2 ) ( ((*(s32 *)&(f1)) ^
G�{���                         + (*(s32 *)&(f2))) >= 0 )
G�|���         xmath.h   124 X  #define XMATH_MPH2KPH( fMph ) ((fMph)*(1.0f/0.621f))
G�}���         xmath.h   125 X  #define XMATH_KPH2MPH( fKph ) ((fKph)*0.621f)
G�~���         xmath.h   126 X  #define XMATH_SQUARE( k ) ( (k) * (k) )
G�?���         xmath.h   127 X  #define XMATH_CUBE( k ) ( (k) * (k) * (k) )
G�€���         xmath.h   128 X  #define XMATH_SETBIT( var, bitmask ) (var |= (bitmask)
G�€���                         +)
G����         xmath.h   129 X  #define XMATH_CLEARBIT( var, bitmask ) (var &= ~(bitma
G����                         +sk))
G�‚���         xmath.h   130 X  
G�ƒ���         xmath.h   131 X  /* Alignment macros...*/
G�„���         xmath.h   132 X  /* Returns the adjusted address.*/
G�…���         xmath.h   133 X  /* For byte alignment, alignment_byte must be a power 
G�…���                         +of 2 that's greater than 0.*/
G�†���         xmath.h   134 X  /* For bit alignment, alignment_bit must be greater th
G�†���                         +an or equal to 0.*/
G�‡���         xmath.h   135 X  #define XMATH_BYTE_ALIGN_UP( address, alignment_byte )
G�‡���                         + ( ((address) + (alignment_byte)-1) & (~((alignment_by
G�‡���                         +te)-1)) )
G�ˆ���         xmath.h   136 X  #define XMATH_BYTE_ALIGN_DOWN( address, alignment_byte
G�ˆ���                         + ) ( (address) & (~((alignment_byte)-1)) )
G�‰���         xmath.h   137 X  #define XMATH_BIT_ALIGN_UP( address, alignment_bit ) X
G�‰���                         +MATH_BYTE_ALIGN_UP( address, 1<<(alignment_bit) )
G�Š���         xmath.h   138 X  #define XMATH_BIT_ALIGN_DOWN( address, alignment_bit )
G�Š���                         + XMATH_BYTE_ALIGN_DOWN( address, 1<<(alignment_bit) )
G�‹���         xmath.h   139 X  
G�Œ���         xmath.h   140 X  /* These macros provide safe handling of numbers dange
G�Œ���                         +rously close to zero...*/
G����         xmath.h   141 X  #define XMATH_CLOSEST_TO_ZERO (1.0E-20f)
G�Ž���         xmath.h   142 X  #define XMATH_POS_CLOSEST_TO_ZERO XMATH_CLOSEST_TO_ZER
G�Ž���                         +O
G����         xmath.h   143 X  #define XMATH_NEG_CLOSEST_TO_ZERO (-XMATH_CLOSEST_TO_Z
G����                         +ERO)
G����         xmath.h   144 X  #define XMATH_POS_ONE_OVER_ZERO (1.0f / XMATH_POS_CLOS
G����                         +EST_TO_ZERO)
G�‘���         xmath.h   145 X  #define XMATH_NEG_ONE_OVER_ZERO (1.0f / XMATH_NEG_CLOS
G�‘���                         +EST_TO_ZERO)
G�’���         xmath.h   146 X  #define XMATH_ZERO_CLAMP(v) if((v)<XMATH_POS_CLOSEST_T
G�’���                         +O_ZERO && (v)>XMATH_NEG_CLOSEST_TO_ZERO) v=0.0f
G�“���         xmath.h   147 X  #define XMATH_SAFE_INV(v) ((v)>=XMATH_POS_CLOSEST_TO_Z
G�“���                         +ERO || (v)<=XMATH_NEG_CLOSEST_TO_ZERO ? 1.0f/(v)      
G�“���                         +                                                : ((v)
G�“���                         +>=0 ? XMATH_POS_ONE_OVER_ZERO : XMATH_NEG_ONE_OVER_ZER
G�“���                         +O))
G�•���         xmath.h   149 X  #define XMATH_TOOSMALL_ASSERT(v) XASSERT((v)>=XMATH_PO
G�•���                         +S_CLOSEST_TO_ZERO || (v)<=XMATH_NEG_CLOSEST_TO_ZERO)
G�–���         xmath.h   150 X  
G�—���         xmath.h   151 X  
G�˜���         xmath.h   152 X  
G�™���         xmath.h   153 X  /* Return values for xmath_Fcheck()*/
G�š���         xmath.h   154 X  enum XMATH_FCHECK_RESULT {
G�›���         xmath.h   155 X      XMATH_FCHECK_RESULT_OK = 0, /* Floating point bina
G�›���                         +ry format is ok*/
G�œ���         xmath.h   156 X      XMATH_FCHECK_RESULT_SNAN,   /* Not-a-number*/
G����         xmath.h   157 X      XMATH_FCHECK_RESULT_QNAN,   /* Quiet-not-a-number*
G����                         +/
G�ž���         xmath.h   158 X      XMATH_FCHECK_RESULT_INF,    /* Infinity*/
G�Ÿ���         xmath.h   159 X      XMATH_FCHECK_RESULT_NINF,   /* Negative infinity*/
G� ���         xmath.h   160 X      XMATH_FCHECK_RESULT_DEN,    /* Denormalized*/
G�¡���         xmath.h   161 X      XMATH_FCHECK_RESULT_NDEN,   /* Negative denormaliz
G�¡���                         +ed*/
G�¢���         xmath.h   162 X  
G�£���         xmath.h   163 X          XMATH_FCHECK_RESULT_COUNT
G�¤���         xmath.h   164 X  };
G�¥���         xmath.h   165 X  
G�¦���         xmath.h   166 X  /* SSP - the RangeMapping_t structure is used by the x
G�¦���                         +math_RangeTransfer function*/
G�§���         xmath.h   167 X  typedef struct {
G�¨���         xmath.h   168 X          f32 fInputHigh;
G�©���         xmath.h   169 X          f32 fInputLow;
G�ª���         xmath.h   170 X          f32 fOutputHigh;
G�«���         xmath.h   171 X          f32 fOutputLow;
G�¬���         xmath.h   172 X          BOOL bInvert;
G�­���         xmath.h   173 X  }RangeMapping_t;
G�®���         xmath.h   174 X  
G�¯���         xmath.h   175 X  #if SYS_DEBUG
G�°���         xmath.h   176 X  #define XMATH_DEBUG_FCHECK(f) xmath_Fcheck(f)
G�±���         xmath.h   177 X  #else
G�²���         xmath.h   178 X  #define XMATH_DEBUG_FCHECK(f)
G�³���         xmath.h   179 X  #endif
G�´���         xmath.h   180 X  
G�µ���         xmath.h   181 X  
G�¶���         xmath.h   182 X  
G�·���         xmath.h   183 X  #if defined(__cplusplus)
G�¸���         xmath.h   184 X  extern "C" {
G�¹���         xmath.h   185 X  #endif
G�º���         xmath.h   186 X  
G�»���         xmath.h   187 X  extern f32 Xmath_Sin90Lookup[4];
G�¼���         xmath.h   188 X  
G�½���         xmath.h   189 X  #if SYS_WINDEV_TARGET || SYS_WINLIB_TARGET
G�¾���         xmath.h   190 X          /* For the WinDev environment, xmath_sqrt is d
G�¾���                         +efined in wintap.cpp...*/
G�¿���         xmath.h   191 X          extern float xmath_sqrt( float fValue );
G�À���         xmath.h   192 X  #else
G�Á���         xmath.h   193 X          /* For the Coinop environment, xmath_sqrt is a
G�Á���                         +n R5000 assembly function...*/
G����         xmath.h   194 X          extern float xmath_sqrt( float fValue ); /* fo
G����                         +und in sqrtf_s.s*/
G����         xmath.h   195 X  #endif
G����         xmath.h   196 X  
G����         xmath.h   197 X  extern BOOL xmath_ModuleInit( void );
G����         xmath.h   198 X  
G����         xmath.h   199 X  #if XMATH_USE_FULL_SINTBL
G����         xmath.h   200 X          #include "sinfulltbl.h"
G����         xmath.h   201 X  #else
G����         xmath.h   202 X  #if !XMATH_USE_INTELASM_TRIG
G����         xmath.h   203 X  
G����         xmath.h   204 X  #if TARGET==ULTRA64 || TARGET==DREAMCAST        /* Don
G����                         +'t use arcade sin table, use own version */
G����         xmath.h   205 X          /* N64 Sin tables! */
G����         xmath.h   206 X          #define SIN_TABLE_BRADIANS              8192
G����         xmath.h   207 X          #define SIN_TABLE_BRADIANS_MASK (SIN_TABLE_BRA
G����                         +DIANS-1)
G����         xmath.h   208 X          extern float SinTableBradianN64[SIN_TABLE_BRAD
G����                         +IANS];  /* 32k */
G����         xmath.h   209 X  
G����         xmath.h   210 X          #define xmath_sin(nAngle)       ( SinTableBrad
G����                         +ianN64[((int)(nAngle)>>3)&SIN_TABLE_BRADIANS_MASK] )
G����         xmath.h   211 X          #define xmath_cos(nAngle)       ( SinTableBrad
G����                         +ianN64[(((int)(nAngle)+16384)>>3)&SIN_TABLE_BRADIANS_M
G����                         +ASK] )
G����         xmath.h   212 X  #else   /*ULTRA64 */
G����         xmath.h   213 X          extern float xmath_sin( int nAngle );
G����         xmath.h   214 X          extern float xmath_cos( int nAngle );
G����         xmath.h   215 X  #endif  /*ULTRA64 */
G����         xmath.h   216 X  
G����         xmath.h   217 X  #else
G����         xmath.h   218 X  XINLINE float xmath_sin( int nAngle ) {
G����         xmath.h   219 X          static const float fBradiansToRadiansMult = (X
G����                         +MATH_2PI/65536.0f);
G����         xmath.h   220 X          float fRetValue;
G����         xmath.h   221 X  
G����         xmath.h   222 X          __asm {
G����         xmath.h   223 X                  fild nAngle                           
G����                         +        ; Convert nAngle to floating point and put int
G����                         +o ST(0)
G���         xmath.h   224 X                  fmul fBradiansToRadiansMult     ; Conv
G���                         +ert bradians to radians and put into ST(0)
G���         xmath.h   225 X                  fsin                                  
G���                         +        ; Compute sine and put into ST(0)
G���         xmath.h   226 X                  fstp fRetValue;
G���         xmath.h   227 X          }
G���         xmath.h   228 X          return fRetValue;
G���         xmath.h   229 X  }
G���         xmath.h   230 X  XINLINE float xmath_cos( int nAngle ) {
G���         xmath.h   231 X          static const float fBradiansToRadiansMult = (X
G���                         +MATH_2PI/65536.0f);
G���         xmath.h   232 X          float fRetValue;
G���         xmath.h   233 X  
G���         xmath.h   234 X          __asm {
G���         xmath.h   235 X                  fild nAngle                           
G���                         +        ; Convert nAngle to floating point and put int
G���                         +o ST(0)
G���         xmath.h   236 X                  fmul fBradiansToRadiansMult     ; Conv
G���                         +ert bradians to radians and put into ST(0)
G���         xmath.h   237 X                  fcos                                  
G���                         +        ; Compute cosine and put into ST(0)
G���         xmath.h   238 X                  fstp fRetValue;
G���         xmath.h   239 X          }
G��         xmath.h   240 X          return fRetValue;
G��         xmath.h   241 X  }
G��         xmath.h   242 X  #endif
G��         xmath.h   243 X  #endif
G��         xmath.h   244 X  
G�õ���         xmath.h   245 X  extern void xmath_sincos( int nAngle, float *pfSin, fl
G�õ���                         +oat *pfCos );
G�ö���         xmath.h   246 X  extern int xmath_atan( float fNumeratorY, float fDenom
G�ö���                         +inatorX );
G�÷���         xmath.h   247 X  extern u16 xmath_AngleInterpolate( u16 nAngleStart, u1
G�÷���                         +6 nAngleEnd, float fUnitPercentage );
G�ø���         xmath.h   248 X  extern u32 xmath_RandomInt( void );
G�ù���         xmath.h   249 X  extern float xmath_RandomFloat( void );
G�ú���         xmath.h   250 X  extern int xmath_RandomChoice( u32 nChoice );
G�û���         xmath.h   251 X  extern int xmath_RandomRange( s32 min, s32 max );
G�ü���         xmath.h   252 X  extern BOOL xmath_RandomChance( float fChanceOfSuccess
G�ü���                         + );
G�ý���         xmath.h   253 X  extern int xmath_Log2( u32 n );
G�þ���         xmath.h   254 X  extern u32 xmath_TableLookup_u32( const u32 *pnTable, 
G�þ���                         +float fIndex, int nTableEntries );
G�ÿ���         xmath.h   255 X  extern s32 xmath_TableLookup_s32( const s32 *pnTable, 
G�ÿ���                         +float fIndex, int nTableEntries );
G�����         xmath.h   256 X  extern float xmath_TableLookup_f32( const f32 *pfTable
G�����                         +, float fIndex, int nTableEntries );
G�����         xmath.h   257 X  extern f32 xmath_NextSin90Value ( void );
G�����         xmath.h   258 X  extern int xmath_Fcheck( float f );
G�����         xmath.h   259 X  extern f32 xmath_LimitRange( f32 fGoal, f32 fLowLimit,
G�����                         + f32 fHighLimit );
G�����         xmath.h   260 X  extern f32 xmath_LimitChange( f32 fGoal, f32 fCurrent,
G�����                         + f32 fDeltaMax );
G�����         xmath.h   261 X  extern f32 xmath_RangeTransfer( RangeMapping_t *pRange
G�����                         +Mapping, f32 fInput );
G�����         xmath.h   262 X  extern void xmath_ConvertAFloatSecs2NumOfMinSecCSec( f
G�����                         +32 fTime, int *pMin, int *pSecs, int *pCSecs );
G�����         xmath.h   263 X  extern BOOL xmath_IsFloatInARange( f32 fNum2Test, f32 
G�����                         +fNum1, f32 fNum2 );
G�����         xmath.h   264 X  
G�	���         xmath.h   265 X  #if defined(__cplusplus)
G�
���         xmath.h   266 X  }
G�����         xmath.h   267 X  #endif
G�����         xmath.h   268 X  
G�
���         xmath.h   269    #endif

audio.h

Begins at 0x3FB5110 but more fragments can be found throughout the track.


t�����         audio.h     1    /*////////////////////////////////////////////////////
t�����                         +////////////////////////////////*/
t�����         audio.h     2    /* audio.h - interface to game audio system*/
t�����         audio.h     3    /**/
t�����         audio.h     4    /* Author: Scott Patterson */
t�����         audio.h     5    /*////////////////////////////////////////////////////
t�����                         +////////////////////////////////*/
t�����         audio.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
t�����                         +TERTAINMENT.*/
t�����         audio.h     7    /* Copyright (c) 1998*/
t�����         audio.h     8    /**/
t�	���         audio.h     9    /* The contents of this file may not be disclosed to t
t�	���                         +hird*/
t�
���         audio.h    10    /* parties, copied or duplicated in any form, in whole
t�
���                         + or in part,*/
t�����         audio.h    11    /* without the prior written permission of Midway Home
t�����                         + Entertainment.*/
t�����         audio.h    12    /*////////////////////////////////////////////////////
t�����                         +////////////////////////////////*/
t�
���         audio.h    13    /* Modification History:*/
t�����         audio.h    14    /**/
t�����         audio.h    15    /* Date     Who         Description*/
t�����         audio.h    16    /* -------- ----------  ------------------------------
t�����                         +--------------------------------*/
t�����         audio.h    17    /* 02/17/98 Patterson   Created.*/
t�����         audio.h    18    /*////////////////////////////////////////////////////
t�����                         +////////////////////////////////*/
t�����         audio.h    19    #ifndef _AUDIO_H_
t�����         audio.h    20    #define _AUDIO_H_ 1
t�����         audio.h    21    
t�����         audio.h    22    #include "eurocom.h"    /* PAB */
t�����         audio.h    23    #include "gentypes.h"
t�����         audio.h    24    
t�����         audio.h    25    #if defined(__cplusplus)
t�����         audio.h    26 X  extern "C" {
t�����         audio.h    27    #endif
t�����         audio.h    28    
t�����         audio.h    29    #define AUDIO_VOLUME_MAX                255
t�����         audio.h    30    #define AUDIO_VOLUME_MIN                0
t�����         audio.h    31    
t� ���         audio.h    32    #define AUDIO_PAN_CENTER                127
t�!���         audio.h    33    #define AUDIO_PAN_CABINET               0
t�"���         audio.h    34    #define AUDIO_PAN_WOOFER                255
t�#���         audio.h    35    
t�$���         audio.h    36    #define AUDIO_ENGINE_VOLUME_MAX         255
t�%���         audio.h    37    #define AUDIO_ENGINE_VOLUME_MIN         0
t�&���         audio.h    38    
t�'���         audio.h    39    #define AUDIO_ENGINE_PAN_CENTER         127
t�(���         audio.h    40    #define AUDIO_ENGINE_PAN_CABINET        0
t�)���         audio.h    41    #define AUDIO_ENGINE_PAN_WOOFER         255
t�*���         audio.h    42    
t�+���         audio.h    43    #define AUDIO_ENGINE_PITCH_MAX  255
t�,���         audio.h    44    #define AUDIO_ENGINE_PITCH_MIN  0
t�-���         audio.h    45    
t�.���         audio.h    46    #define AUDIO_ENGINE_TYPE_MAIN          0
t�/���         audio.h    47    #define AUDIO_ENGINE_TYPE_DRONE1        1
t�0���         audio.h    48    #define AUDIO_ENGINE_TYPE_DRONE2        2
t�1���         audio.h    49    
t�2���         audio.h    50    #define AUDIO_MASTER_VOLUME_MAX 255
t�3���         audio.h    51    #define AUDIO_MASTER_VOLUME_MIN 0
t�4���         audio.h    52    
t�5���         audio.h    53    #define AUDIO_PAN_MODE_MONO             0
t�6���         audio.h    54    #define AUDIO_PAN_MODE_NORMAL   1
t�7���         audio.h    55    #define AUDIO_PAN_MODE_SWAPLR   2
t�8���         audio.h    56    
t�9���         audio.h    57    enum audio_Types
t�:���         audio.h    58    {
t�;���         audio.h    59            AUDIO_TYPE_MUSIC,
t�<���         audio.h    60            AUDIO_TYPE_AMBIENT,
t�=���         audio.h    61            AUDIO_TYPE_BOOST,
t�>���         audio.h    62            AUDIO_TYPE_PLUNGE,
t�?���         audio.h    63            AUDIO_TYPE_COLLISION,                   /* res
t�?���                         +erved for use by scraping sounds*/
t�@���         audio.h    64            AUDIO_TYPE_GENERAL,
t�A���         audio.h    65            AUDIO_TYPE_CONCURRENT_SPEECH,   /* reserved fo
t�A���                         +r use by the audio_mgr system*/
t�B���         audio.h    66            AUDIO_TYPE_SPEECH,                            
t�B���                         +  /* reserved for use by the audio_mgr system*/
t�C���         audio.h    67            AUDIO_TYPE_POWERUP,
t�D���         audio.h    68            AUDIO_TYPE_BULLHORN,
t�E���         audio.h    69            AUDIO_TYPE_WATERFALL,
t�F���         audio.h    70            AUDIO_TYPE_SPEAKER1,                    /* res
t�F���                         +erved for use by the audio_spkr system*/
t�G���         audio.h    71            AUDIO_TYPE_SPEAKER2,                    /* res
t�G���                         +erved for use by the audio_spkr system*/
t�H���         audio.h    72            AUDIO_TYPE_SPEAKER3,                    /* res
t�H���                         +erved for use by the audio_spkr system*/
t�I���         audio.h    73            AUDIO_TYPE_WRAPPER1,                    /* use
t�I���                         +d by the wrapper system*/
t�J���         audio.h    74            AUDIO_TYPE_WRAPPER2,                    /* use
t�J���                         +d by the wrapper system*/
t�K���         audio.h    75            AUDIO_TYPE_FINISHLINE,                  /* use
t�K���                         +d for the finishline crowd*/
t�L���         audio.h    76            AUDIO_TYPE_LIGHTNING,
t�M���         audio.h    77            AUDIO_TYPE_COINDROP,                    /* use
t�M���                         +d for coin drop sound*/
t�N���         audio.h    78            AUDIO_TYPE_SECRET_SOUND                 /* use
t�N���                         +d for secret boat gunning*/
t�O���         audio.h    79    };
t�P���         audio.h    80    
t�Q���         audio.h    81    enum audio_Priority
t�R���         audio.h    82    {
t�S���         audio.h    83            AUDIO_PRIORITY_MUSIC = 127,
t�T���         audio.h    84            AUDIO_PRIORITY_AMBIENT = 126,
t�U���         audio.h    85            AUDIO_PRIORITY_BOOST = 121,
t�V���         audio.h    86            AUDIO_PRIORITY_PLUNGE = 120,
t�W���         audio.h    87            AUDIO_PRIORITY_COLLISION = 119,
t�X���         audio.h    88            AUDIO_PRIORITY_GENERAL = 110,
t�Y���         audio.h    89            AUDIO_PRIORITY_CONCURRENT_SPEECH = 106,
t�Z���         audio.h    90            AUDIO_PRIORITY_SPEECH = 105,
t�[���         audio.h    91            AUDIO_PRIORITY_POWERUP = 100,
t�\���         audio.h    92            AUDIO_PRIORITY_BULLHORN = 95,
t�]���         audio.h    93            AUDIO_PRIORITY_WATERFALL = 90,
t�^���         audio.h    94            AUDIO_PRIORITY_SPEAKER1 = 104,
t�_���         audio.h    95            AUDIO_PRIORITY_SPEAKER2 = 103,
t�`���         audio.h    96            AUDIO_PRIORITY_SPEAKER3 = 102,
t�a���         audio.h    97            AUDIO_PRIORITY_WRAPPER1 = 104,
t�b���         audio.h    98            AUDIO_PRIORITY_WRAPPER2 = 103,
t�c���         audio.h    99            AUDIO_PRIORITY_FINISHLINE = 111,
t�d���         audio.h   100            AUDIO_PRIORITY_LIGHTNING = 112,
t�e���         audio.h   101            AUDIO_PRIORITY_COINDROP = 113,
t�f���         audio.h   102            AUDIO_PRIORITY_SECRET_SOUND = 102
t�g���         audio.h   103    };
t�h���         audio.h   104    
t�i���         audio.h   105    enum audio_Bank
t�j���         audio.h   106    {
t�k���         audio.h   107            AUDIO_BANK_TRACK_AMAZON,
t�l���         audio.h   108            AUDIO_BANK_TRACK_ARCTIC_CIRCLE,
t�m���         audio.h   109            AUDIO_BANK_TRACK_LAKE_POWELL,
t�n���         audio.h   110            AUDIO_BANK_TRACK_NEWYORK,
t�o���         audio.h   111            AUDIO_BANK_TRACK_NILE,
t�p���         audio.h   112            AUDIO_BANK_TRACK_CHINA,
t�q���         audio.h   113            AUDIO_BANK_TRACK_SHIP_GRAVEYARD,
t�r���         audio.h   114            AUDIO_BANK_TRACK_VENICE,
t�s���         audio.h   115            AUDIO_BANK_TRACK_GREECE,
t�t���         audio.h   116            AUDIO_BANK_BOAT_BANSHEE,
t�u���         audio.h   117            AUDIO_BANK_BOAT_CUT_THROAT,
t�v���         audio.h   118            AUDIO_BANK_BOAT_DAMN_THE_TORPEDOES,
t�w���         audio.h   119            AUDIO_BANK_BOAT_MIDWAY,
t�x���         audio.h   120            AUDIO_BANK_BOAT_MISS_BEHAVE,
t�y���         audio.h   121            AUDIO_BANK_BOAT_RAD_HAZARD,
t�z���         audio.h   122            AUDIO_BANK_BOAT_RAZORBACK,
t�{���         audio.h   123            AUDIO_BANK_BOAT_TIDAL_BLADE,
t�|���         audio.h   124            AUDIO_BANK_BOAT_THRESHER,
t�}���         audio.h   125            AUDIO_BANK_BOAT_SECRET1,
t�~���         audio.h   126            AUDIO_BANK_BOAT_SECRET2,
t�?���         audio.h   127            AUDIO_BANK_BOAT_SECRET3,
t�€���         audio.h   128            AUDIO_BANK_BOAT_SECRET4,
t����         audio.h   129            AUDIO_BANK_WRAPPERS,
t�‚���         audio.h   130            AUDIO_BANK_GAME_COMMON,
t�ƒ���         audio.h   131            AUDIO_BANK_COMMON,
t�„���         audio.h   132            AUDIO_BANK_DIAGNOSTIC,
t�…���         audio.h   133            AUDIO_BANK_TRACK_LOOP_1,
t�†���         audio.h   134            AUDIO_BANK_TRACK_LOOP_2,
t�‡���         audio.h   135            AUDIO_BANK_COUNT
t�ˆ���         audio.h   136    };
t�‰���         audio.h   137    
t�Š���         audio.h   138    enum audio_EngineSample
t�‹���         audio.h   139    {
t�Œ���         audio.h   140            AUDIO_ENGINE_SAMPLE_BANSHEE_HIGH,
t����         audio.h   141            AUDIO_ENGINE_SAMPLE_BANSHEE_MEDIUM,
t�Ž���         audio.h   142            AUDIO_ENGINE_SAMPLE_BANSHEE_LOW,
t����         audio.h   143            AUDIO_ENGINE_SAMPLE_CUT_THROAT_HIGH,
t����         audio.h   144            AUDIO_ENGINE_SAMPLE_CUT_THROAT_MEDIUM,
t�‘���         audio.h   145            AUDIO_ENGINE_SAMPLE_CUT_THROAT_LOW,
t�’���         audio.h   146            AUDIO_ENGINE_SAMPLE_DAMN_THE_TORPEDOES_HIGH,
t�“���         audio.h   147            AUDIO_ENGINE_SAMPLE_DAMN_THE_TORPEDOES_MEDIUM,
t�”���         audio.h   148            AUDIO_ENGINE_SAMPLE_DAMN_THE_TORPEDOES_LOW,
t�•���         audio.h   149            AUDIO_ENGINE_SAMPLE_MIDWAY_HIGH,
t�–���         audio.h   150            AUDIO_ENGINE_SAMPLE_MIDWAY_MEDIUM,
t�—���         audio.h   151            AUDIO_ENGINE_SAMPLE_MIDWAY_LOW,
t�˜���         audio.h   152            AUDIO_ENGINE_SAMPLE_MISS_BEHAVE_HIGH,
t�™���         audio.h   153            AUDIO_ENGINE_SAMPLE_MISS_BEHAVE_MEDIUM,
t�š���         audio.h   154            AUDIO_ENGINE_SAMPLE_MISS_BEHAVE_LOW,
t�›���         audio.h   155            AUDIO_ENGINE_SAMPLE_RAD_HAZARD_HIGH,
t�œ���         audio.h   156            AUDIO_ENGINE_SAMPLE_RAD_HAZARD_MEDIUM,
t����         audio.h   157            AUDIO_ENGINE_SAMPLE_RAD_HAZARD_LOW,
t�ž���         audio.h   158            AUDIO_ENGINE_SAMPLE_RAZORBACK_HIGH,
t�Ÿ���         audio.h   159            AUDIO_ENGINE_SAMPLE_RAZORBACK_MEDIUM,
t� ���         audio.h   160            AUDIO_ENGINE_SAMPLE_RAZORBACK_LOW,
t�¡���         audio.h   161            AUDIO_ENGINE_SAMPLE_TIDAL_BLADE_HIGH,
t�¢���         audio.h   162            AUDIO_ENGINE_SAMPLE_TIDAL_BLADE_MEDIUM,
t�£���         audio.h   163            AUDIO_ENGINE_SAMPLE_TIDAL_BLADE_LOW,
t�¤���         audio.h   164            AUDIO_ENGINE_SAMPLE_THRESHER_HIGH,
t�¥���         audio.h   165            AUDIO_ENGINE_SAMPLE_THRESHER_MEDIUM,
t�¦���         audio.h   166            AUDIO_ENGINE_SAMPLE_THRESHER_LOW,
t�§���         audio.h   167            AUDIO_ENGINE_SAMPLE_SECRET1_HIGH,
t�¨���         audio.h   168            AUDIO_ENGINE_SAMPLE_SECRET1_MEDIUM,
t�©���         audio.h   169            AUDIO_ENGINE_SAMPLE_SECRET1_LOW,
t�ª���         audio.h   170            AUDIO_ENGINE_SAMPLE_SECRET2_HIGH,
t�«���         audio.h   171            AUDIO_ENGINE_SAMPLE_SECRET2_MEDIUM,
t�¬���         audio.h   172            AUDIO_ENGINE_SAMPLE_SECRET2_LOW,
t�­���         audio.h   173            AUDIO_ENGINE_SAMPLE_SECRET3_HIGH,
t�®���         audio.h   174            AUDIO_ENGINE_SAMPLE_SECRET3_MEDIUM,
t�¯���         audio.h   175            AUDIO_ENGINE_SAMPLE_SECRET3_LOW,
t�°���         audio.h   176            AUDIO_ENGINE_SAMPLE_SECRET4_HIGH,
t�±���         audio.h   177            AUDIO_ENGINE_SAMPLE_SECRET4_MEDIUM,
t�²���         audio.h   178            AUDIO_ENGINE_SAMPLE_SECRET4_LOW,
t�³���         audio.h   179            AUDIO_ENGINE_SAMPLE_DRONE_A,
t�´���         audio.h   180            AUDIO_ENGINE_SAMPLE_DRONE_B,
t�µ���         audio.h   181            AUDIO_ENGINE_SAMPLE_DRONE_C,
t�¶���         audio.h   182            AUDIO_ENGINE_SAMPLE_DRONE_D,
t�·���         audio.h   183            AUDIO_ENGINE_SAMPLE_DRONE_E,
t�¸���         audio.h   184            AUDIO_ENGINE_SAMPLE_DRONE_F,
t�¹���         audio.h   185            AUDIO_ENGINE_SAMPLE_DRONE_G,
t�º���         audio.h   186            AUDIO_ENGINE_SAMPLE_DRONE_H,
t�»���         audio.h   187            AUDIO_ENGINE_SAMPLE_COUNT
t�¼���         audio.h   188    };
t�½���         audio.h   189    
t�¾���         audio.h   190    typedef struct {
t�¿���         audio.h   191            u32 nFlags;
t�À���         audio.h   192    }AudioInitParams_t;
t�Á���         audio.h   193    
t����         audio.h   194    /* audio module init & close*/
t����         audio.h   195  E extern int audio_ModuleInit( void );
t����         audio.h   196    extern void audio_ModuleClose( void );
t����         audio.h   197    
t����         audio.h   198    /* audio system init & shutdown*/
t����         audio.h   199    typedef void (*AudioErrorCallbackProc)( char *errstrin
t����                         +g, int errnum1, int errnum2 );
t����         audio.h   200    
t����         audio.h   201    extern void audio_Set_ErrorCallback( AudioErrorCallbac
t����                         +kProc errcall );
t����         audio.h   202    
t����         audio.h   203  E extern int audio_Init( AudioInitParams_t *pAIP );
t����         audio.h   204  E extern int audio_Shutdown( void );
t����         audio.h   205    extern void audio_Work( void );
t����         audio.h   206    
t����         audio.h   207    /* audio sound calls*/
t����         audio.h   208  E extern int      audio_Trigger( u32 nGameID, u32 nVolum
t����                         +e, u32 nPan, u32 nType, u32 nPriority );
t����         audio.h   209  E extern int      audio_TriggerAndFadeIn( u32 nGameID, u
t����                         +32 nDestVol, f32 fRampTime, u32 nPan, u32 nType, u32 n
t����                         +Priority );
t����         audio.h   210    
t����         audio.h   211  E extern int      audio_GameIDFadeOutAndStop( u32 nGameI
t����                         +D, f32 fRampTime );
t����         audio.h   212  E extern int      audio_GameIDFadeTo( u32 nGameID, u32 n
t����                         +DestVol, f32 fRampTime );
t����         audio.h   213  E extern int audio_GameIDPanTo( u32 nGameID, u32 nDestPa
t����                         +n, f32 fRampTime );
t����         audio.h   214  E extern int audio_GameIDVolume( u32 nGameID, u32 nVol )
t����                         +;
t����         audio.h   215  E extern int audio_GameIDPan( u32 nGameID, u32 nPan );
t����         audio.h   216  E extern int audio_GameIDStop( u32 nGameID );
t����         audio.h   217    
t����         audio.h   218  E extern int      audio_TypeFadeOutAndStop( u32 nType, f
t����                         +32 fRampTime );
t����         audio.h   219  E extern int      audio_TypeFadeTo( u32 nType, u32 nDest
t����                         +Vol, f32 fRampTime );
t����         audio.h   220  E extern int audio_TypePanTo( u32 nType, u32 nDestPan, f
t����                         +32 fRampTime );
t����         audio.h   221  E extern int audio_TypeVolume( u32 nType, u32 nVol );
t����         audio.h   222  E extern int audio_TypePan( u32 nType, u32 nPan );
t����         audio.h   223  E extern int audio_TypeStop( u32 nType );
t���         audio.h   224    
t���         audio.h   225  E extern int      audio_FadeOutAndStopAll( f32 fRampTime
t���                         + );
t���         audio.h   226  E extern int audio_StopAll( void );
t���         audio.h   227    
t���         audio.h   228    /* audio status calls*/
t���         audio.h   229  E extern int audio_Status_GetGameIDPlaybackTime( u32 nGa
t���                         +meID, f32 *pfPlaybackTime );
t���         audio.h   230  E extern int audio_Status_IsGameIDPlaying( u32 nGameID )
t���                         +;
t���         audio.h   231  E extern int audio_Status_IsTypePlaying( u32 nType );
t���         audio.h   232    /*extern u32    audio_Status_GetActiveBits( void ); //
t���                         + if a bit is set, that channel is active*/
t���         audio.h   233  E extern void audio_Status_EnableDraw( int bEnableDraw )
t���                         +; /* enable drawing sound status lines on the hud*/
t���         audio.h   234    
t���         audio.h   235    /* audio bank load & unload*/
t���         audio.h   236  E extern int audio_LoadBank( u32 nBankNum );
t���         audio.h   237    extern void audio_UnloadToBank( u32 nBankNum );
t���         audio.h   238    extern void audio_UnloadAllBanks( void );
t���         audio.h   239    extern void audio_CacheAllBanks( void );
t��         audio.h   240    
t��         audio.h   241    /* audio engine calls*/
t��         audio.h   242  E extern int a

eorocom.h

Found at 0x3FB5A10:


������       eurocom.h     1    /*****************************************************
������                         +***********************/
������       eurocom.h     2    /*
������       eurocom.h     3        EUROCOM.H
������       eurocom.h     4        Common header file of definitions for HydroThunder
������                         +/MK4DC
������       eurocom.h     5        Original Author :   Mark Hetherington
������       eurocom.h     6        Created         :   24 August 1998
������       eurocom.h     7        Last Revision   :   24 August 1998
������       eurocom.h     8        Description     :   Defines target and other commo
������                         +n defs.
��	���       eurocom.h     9    */
��
���       eurocom.h    10    /*****************************************************
��
���                         +***********************/
������       eurocom.h    11    #ifndef _EUROCOM_H_
������       eurocom.h    12 X  #define _EUROCOM_H_
��
���       eurocom.h    13 X  /*****************************************************
��
���                         +***********************/
������       eurocom.h    14 X  /*    TARGET DEFINITIONS  -   Set compilation hardware
������                         + target               */
������       eurocom.h    15 X  /*****************************************************
������                         +***********************/
������       eurocom.h    16 X  #define ARCADE      0   /* Specific for Hydro/MK4 if n
������                         +eeded */
������       eurocom.h    17 X  #define IBMPC       1
������       eurocom.h    18 X  #define SONYPSX     2
������       eurocom.h    19 X  #define ULTRA64     3
������       eurocom.h    20 X  #define DREAMCAST   4
������       eurocom.h    21 X  #define UNKNOWN     -1  /* Generate compile error on n
������                         +o target defined */
������       eurocom.h    22 X  
������       eurocom.h    23 X  /* N64 output string */
������       eurocom.h    24 X  #if TARGET!=DREAMCAST
������       eurocom.h    25 X          #ifndef CONSOLE 
������       eurocom.h    26 X          #define CONSOLE
������       eurocom.h    27 X          #endif
������       eurocom.h    28 X  #endif // DREAMCAST
������       eurocom.h    29 X  
������       eurocom.h    30 X  /*
������       eurocom.h    31 X  
�� ���       eurocom.h    32 X  TARGET must be defined on the compiler command line e.
�� ���                         +g. /DTARGET=2 would
��!���       eurocom.h    33 X  define TARGET=SONYPSX for the compiler. (In MSVC use p
��!���                         +roject options)
��"���       eurocom.h    34 X  
��#���       eurocom.h    35 X  To use:
��$���       eurocom.h    36 X  #if TARGET==SONYPSX
��%���       eurocom.h    37 X  ...some code...
��&���       eurocom.h    38 X  [#elif TARGET==ULTRA64
��'���       eurocom.h    39 X  .. some more code
��(���       eurocom.h    40 X  ]
��)���       eurocom.h    41 X  [#else // TARGET
��*���       eurocom.h    42 X  .. some more code
��+���       eurocom.h    43 X  ]
��,���       eurocom.h    44 X  #endif // TARGET
��-���       eurocom.h    45 X  
��.���       eurocom.h    46 X  ([] - Optional, Always comment #else, #endif for legib
��.���                         +ility)
��/���       eurocom.h    47 X  
��0���       eurocom.h    48 X  TARGETSTRUCTS is defined if we are using different gam
��0���                         +e structures.
��1���       eurocom.h    49 X  ie. HComp needs to save data out using defines as for 
��1���                         +PC/ARCADE but structures are for N64
��2���       eurocom.h    50 X  So, define TARGET as UNKNOWN(ie don't care) and TARGET
��2���                         +STRUCTS as ULTRA64 (or UNKNOWN for arcade/dreamcast)
��3���       eurocom.h    51 X  */
��4���       eurocom.h    52 X  
��5���       eurocom.h    53 X  /*****************************************************
��5���                         +***********************/
��6���       eurocom.h    54 X  /* Default Target value to unknown. Generate compilati
��6���                         +on error! */
��7���       eurocom.h    55 X  #ifndef TARGET
��8���       eurocom.h    56 X          #define TARGET  UNKNOWN
��9���       eurocom.h    57 X  #endif
��:���       eurocom.h    58 X  #ifndef TARGETSTRUCTS
��;���       eurocom.h    59 X          #define TARGETSTRUCTS  UNKNOWN
��<���       eurocom.h    60 X  #endif
��=���       eurocom.h    61 X  /* TARGET */
��>���       eurocom.h    62 X  /*****************************************************
��>���                         +***********************/
��?���       eurocom.h    63 X  
��@���       eurocom.h    64 X  #define NTSC        0
��A���       eurocom.h    65 X  #define PAL         1
��B���       eurocom.h    66 X  
��C���       eurocom.h    67 X  #define USA         0
��D���       eurocom.h    68 X  #define EUROPE      1
��E���       eurocom.h    69 X  #define JAPAN       2
��F���       eurocom.h    70 X  
��G���       eurocom.h    71 X  #define TERRITORY   USA
��H���       eurocom.h    72 X  
��I���       eurocom.h    73 X  #define VIDEOTYPE   NTSC
��J���       eurocom.h    74 X  
��K���       eurocom.h    75 X  /*****************************************************
��K���                         +***********************/
��L���       eurocom.h    76    #endif /* _EUROCOM_H_ */
��M���       eurocom.h    77    /*****************************************************
��M���                         +***********************/
��N���       eurocom.h    78    
��O���       eurocom.h    79    extern void StartDebugTimer(void);
��P���       eurocom.h    80    extern void EndDebugTimer(void);
��Q���       eurocom.h    81    
��R���       eurocom.h    82    #define GAMMA_CORRECT_VALUE     0.75                  
��R���                         +  /* Gamma correction value to restore N64 'colours' *
��R���                         +  /
��S���       eurocom.h    83    
��T���       eurocom.h    84  E #if 4==3
��U���       eurocom.h    85 X          #define SYS_PRODUCTION_BUILD                  
��U���                         +  /* More Hydro code defines... */
��V���       eurocom.h    86 X          #define ULTRA64_HARDWAREROTATION              
��V���                         +  /* Use hardware to rotate meshes */
��W���       eurocom.h    87 X  //      #define EUROCOM_SKIPWRAPPER                   
��W���                         +        /* Skip attract mode and go straight into chos
��W���                         +en level(statemgr.c) */
��X���       eurocom.h    88 X          #define EUROCOM_NOTIMERS                      
��X���                         +        /* No in-game countdown timers */
��Y���       eurocom.h    89 X          #define EUROCOM_SELECTALL                     
��Y���                         +        /* Select any track/boat */
��Z���       eurocom.h    90 X  //      #define EUROCOM_NODRONES                      
��Z���                         +        /* No drones */
��[���       eurocom.h    91 X          #define EUROCOM_WORLDOBWORKFUNCS              
��[���                         +  /* Only process work functions for objects in view! 
��[���                         +  */
��\���       eurocom.h    92 X          #define EUROCOM_SECTORSCANPHYS                
��\���                         +  /* Scan to see if water collision mesh is inside a s
��\���                         +  ingle sector */
��]���       eurocom.h    93 X          #define EUROCOM_COLLSCANINVIEW                
��]���                         +  /* Only scan collision objects in view */
��^���       eurocom.h    94 X          #define EUROCOM_PHYSSKIPHULLPOINTS            
��^���                         +  /* Skip every other hull point */
��_���       eurocom.h    95 X          #define EUROCOM_PLAYERSPRAYONLY               
��_���                         +  /* Just have waterspray on player boat(faster) */
��`���       eurocom.h    96 X          #define EUROCOM_DONTDRAWTRACKINGICONS   /* Don
��`���                         +'t draw yellow/blue tracking icons along bottom of scr
��`���                         +een */
��a���       eurocom.h    97 X  //      #define EUROCOM_SPLITSCREEN                   
��a���                         +        /* Split screen version - ouch!!! */
��b���       eurocom.h    98    #endif  /* ULTRA64 */
��c���       eurocom.h    99    
��d���       eurocom.h   100  E #if 4==4
��e���       eurocom.h   101            #define SYS_PRODUCTION_BUILD    1             
��e���                         +  /* More Hydro code defines... */
��f���       eurocom.h   102    //      #define EUROCOM_SKIPWRAPPER                   
��f���                         +  /* Skip attract mode and go straight into chosen lev
��f���                         +  el(statemgr.c) */
��g���       eurocom.h   103    //      #define EUROCOM_SELECTALL                     
��g���                         +        /* Select any track/boat */
��h���       eurocom.h   104    
��i���       eurocom.h   105            extern int      bEUROCOM_NODRONES;            
��i���                         +                /* No drones */
��j���       eurocom.h   106            extern int      bEUROCOM_WORLDOBWORKFUNCS;    
��j���                         +  /* Only process work functions for objects in view! 
��j���                         +  */
��k���       eurocom.h   107            extern int      bEUROCOM_SECTORSCANPHYS;      
��k���                         +        /* Scan to see if water collision mesh is insi
��k���                         +de a single sector */
��l���       eurocom.h   108            extern int  bEUROCOM_COLLSCANINVIEW;          
��l���                         +  /* Only scan collision objects in view */
��m���       eurocom.h   109            extern int  bEUROCOM_PHYSSKIPHULLPOINTS;      
��m���                         +  /* Skip every other hull point */
��n���       eurocom.h   110            extern int      bEUROCOM_SPLITSCREEN;         
��n���                         +                /* Split screen version - ouch!!! */
��o���       eurocom.h   111            extern int  bEUROCOM_NOTIMERS;                
��o���                         +        
��p���       eurocom.h   112    
��q���       eurocom.h   113    #endif  /* ULTRA64 */
��r���       eurocom.h   114    

gentypes.h

Found at 0x3FB8880:


������      gentypes.h     1    
������      gentypes.h     2    /* gentypes.h - generic types used by lots 'o hydro st
������                         +uff*/
������      gentypes.h     3    
������      gentypes.h     4    #ifndef _GENTYPES_H_
������      gentypes.h     5 X  #define _GENTYPES_H_
������      gentypes.h     6 X  
������      gentypes.h     7 X  #if TARGET!=ULTRA64     /* Define s8,s16 types etc... 
������                         +*/
������      gentypes.h     8 X  typedef unsigned char u8;
��	���      gentypes.h     9 X  typedef unsigned short u16;
��
���      gentypes.h    10 X  typedef unsigned int u32;
������      gentypes.h    11 X  typedef signed char s8;
������      gentypes.h    12 X  typedef signed short s16;
��
���      gentypes.h    13 X  typedef signed int s32;
������      gentypes.h    14 X  typedef float f32;
������      gentypes.h    15 X  typedef double f64;
������      gentypes.h    16 X  typedef const unsigned char cu8;
������      gentypes.h    17 X  typedef const unsigned short cu16;
������      gentypes.h    18 X  typedef const unsigned int cu32;
������      gentypes.h    19 X  typedef const signed char cs8;
������      gentypes.h    20 X  typedef const signed short cs16;
������      gentypes.h    21 X  typedef const signed int cs32;
������      gentypes.h    22 X  typedef const float cf32;
������      gentypes.h    23 X  typedef const double cf64;
������      gentypes.h    24 X  #endif  /*ULTRA64 */
������      gentypes.h    25 X  
������      gentypes.h    26 X  typedef unsigned int uint;
������      gentypes.h    27 X  typedef const char cchar;
������      gentypes.h    28 X  typedef const int cint;
������      gentypes.h    29 X  typedef const unsigned int cuint;
������      gentypes.h    30 X  
������      gentypes.h    31 X  #ifndef __NO_EXTRA_DEFINES__
�� ���      gentypes.h    32 X  
��!���      gentypes.h    33 X  #ifndef __NO_NULL_DEFINE__
��"���      gentypes.h    34 X  
��#���      gentypes.h    35 X  #ifndef NULL
��$���      gentypes.h    36 X  #define NULL 0
��%���      gentypes.h    37 X  #endif
��&���      gentypes.h    38 X  
��'���      gentypes.h    39 X  #endif  /*__NO_EXTRA_DEFINES__*/
��(���      gentypes.h    40 X  
��)���      gentypes.h    41 X  #ifndef __NO_LOGIC_DEFINES__
��*���      gentypes.h    42 X  
��+���      gentypes.h    43 X  #ifndef FALSE
��,���      gentypes.h    44 X  #define FALSE 0
��-���      gentypes.h    45 X  #endif
��.���      gentypes.h    46 X  
��/���      gentypes.h    47 X  #ifndef TRUE
��0���      gentypes.h    48 X  #define TRUE 1
��1���      gentypes.h    49 X  #endif
��2���      gentypes.h    50 X  
��3���      gentypes.h    51 X  #endif  /*__NO_LOGIC_DEFINES__*/
��4���      gentypes.h    52 X  
��5���      gentypes.h    53 X  #ifndef __NO_BOOL_DEFINES__
��6���      gentypes.h    54 X  
��7���      gentypes.h    55 X  #ifndef BOOL
��8���      gentypes.h    56 X  #define BOOL int
��9���      gentypes.h    57 X  #endif
��:���      gentypes.h    58 X  
��;���      gentypes.h    59 X  #ifndef BOOL8
��<���      gentypes.h    60 X  #define BOOL8 s8
��=���      gentypes.h    61 X  #endif
��>���      gentypes.h    62 X  
��?���      gentypes.h    63 X  #ifndef CBOOL
��@���      gentypes.h    64 X  #define CBOOL const int
��A���      gentypes.h    65 X  #endif
��B���      gentypes.h    66 X  
��C���      gentypes.h    67 X  #ifndef CBOOL8
��D���      gentypes.h    68 X  #define CBOOL8 cs8
��E���      gentypes.h    69 X  #endif
��F���      gentypes.h    70 X  
��G���      gentypes.h    71 X  #endif  /*__NO_BOOL_DEFINES__*/
��H���      gentypes.h    72 X  
��I���      gentypes.h    73 X  #endif  /*__NO_EXTRA_DEFINES__*/
��J���      gentypes.h    74 X  
��K���      gentypes.h    75 X  
��L���      gentypes.h    76    #endif  /*_GENTYPES_H_*/
��M���      gentypes.h    77    

world.h

Begins at 0xB354CB0 but more fragments can be found throughout the track.

////////////////////////////////////////////
j�����                         +////////////////////////////////*/
j�����         world.h    20    
j�����         world.h    21    #ifndef __WORLD_H__
j�����         world.h    22 X  #define __WORLD_H__
j�����         world.h    23 X  
j�����         world.h    24 X  #include "gendefs.h"
j�����         world.h    25 X  #include "gfxdefs.h"
j�����         world.h    26 X  #include "mesh3d.h"
j�����         world.h    27 X  #include "vec2.h"
j�����         world.h    28 X  #include "linklist.h"
j�����         world.h    29 X  #include "paths.h"
j�����         world.h    30 X  #include "colldef.h"
j�����         world.h    31 X  #include "fog.h"
j� ���         world.h    32 X  
j�!���         world.h    33 X  
j�"���         world.h    34 X  typedef enum {
j�#���         world.h    35 X          WORLD_INTERSECT_TYPE_WORLDOB = 0,
j�$���         world.h    36 X          WORLD_INTERSECT_TYPE_LIGHT,
j�%���         world.h    37 X          WORLD_INTERSECT_TYPE_WATERFALL,
j�&���         world.h    38 X          WORLD_INTERSECT_TYPE_COUNT
j�'���         world.h    39 X  } WorldIntersectType_t;
j�(���         world.h    40 X  
j�)���         world.h    41 X  
j�*���         world.h    42 X  struct _tag_WorldSector_t;
j�+���         world.h    43 X  typedef struct _tag_WorldSector_t WorldSector_t;      
j�+���                         +  /* _tag_WorldSector_t redefined later.*/
j�,���         world.h    44 X  
j�-���         world.h    45 X  #include "tws.h"
j�.���         world

.h   185 X          WORLD_EDGE_FLAG_FLARE_WATERFALL_EDGES = 0x0000
@�¹���                         +0004,           /* If this edge is a waterfall, flare 
@�¹���                         +its edges */
@�º���         world.h   186 X          WORLD_EDGE_FLAG_FOG_SKY = 0x00000008,         
@�º���                         +                        /* If set, fog the sky (ignore
@�º���                         +d if pFogTable is NULL) */
@�»���         world.h   187 X  
@�¼���         world.h   188 X          WORLD_EDGE_FLAG_NONE = 0
@�½���         world.h   189 X  } WorldEdgeFlags;
@�¾���         world.h   190 X  
@�¿���         world.h   191 X  typedef struct {
@�À���         world.h   192 X          XZ_t start;
@�Á���         world.h   193 X          XZ_t dir;
@����         world.h   194 X          float length;
@����         world.h   195 X          u32 water_type;                 /* See WorldWa
@����                         +terType_t for info */
@����         world.h   196 X          float height;
@����         world.h   197 X          XZ_t WaterUnitDir;              /* NULL vector
@����                         + not allowed. */
@����         world.h   198 X          float fWaterSpeed;              /* 0=water not
@����                         + moving */
@����         world.h   199 X          float fWavePeriod;              /* 1.0=normal,
@����                         + <1.0=low freq, >1.0=high freq */
@����         world.h   200 X          int nWaveOrientation;   /* (0-15) Wave rotatio
@����                         +n about world Y */
@����         world.h   201 X          float fWaveSpeed;               /* 1.0=normal,
@����                         + <1.0=slower, >1.0=faster */
@����         world.h   202 X          float fWaterfallLeft;   /* (0->1), 0=left edge
@����                         + (facing backwards, looking at waterfall) */
@����         world.h   203 X          float fWaterfallRight;  /* (0->1), 1=right edg
@����                         +e (facing backwards, looking at waterfall) */
@
              +dges;           /* count of PathEdge_t array*/

    +  /* Object starts floating on water */
@���         world.h   231 X          INSTANCE_FLAG_FLOATS                    = 0x00
@���                         +10,     /* Object floats on water */
@���         world.h   232 X          INSTANCE_FLAG_DRAW_REFLECTED    = 0x0020,     
@���                         +  /* Object will be drawn reflected */
@���         world.h   233 X          INSTANCE_FLAG_STATIONARY                = 0x00
@���                         +40,     /* Object will not be moved by a collision */
@���         world.h   234 X          INSTANCE_FLAG_TETHER                    = 0x00
@���                         +80,     /* Object will tether to its original location
@���                         + */
@���         world.h   235 X          INSTANCE_FLAG_STABILIZE                 = 0x01
@���                         +00,     /* Object will stabilize roll and pitch */
@���         world.h   236 X          INSTANCE_FLAG_UPRIGHT                   = 0x02
@���                         +00,     /* Object will try to stay right side up */
@���         world.h   237 X          INSTANCE_FLAG_AI_AVOID                  = 0x04
@���                         +00,     /* Ai will try to avoid this object */
@���         world.h   238 X          INSTANCE_FLAG_FIND_PATH                 = 0x08
@���                         +00,     /* This object will be moved by the closest pa
@���                         +th instance */
@���         world.h   239 X         INSTANCE_FLAG_DRAW_AFTER_WATER  = 0x1000,     
@���                         +  /* This object should be drawn after water is drawn 
@���                         +  */
@��         world.h   240 X          
@��         world.h   241 X          INSTANCE_FLAG_NONE                            
@��                         +  = 0
@��         world.h   242 X  } WorldInstanceFlags;
@��         world.h   243 X  
@��         world.h   244 X  typedef enum {
@�õ���         world.h   245 X          COLLISION_TYPES_FAST                    = 1,  
@�õ���                         +  /* test object with the racing boats   */
@�ö���         world.h   246 X          COLLISION_TYPES_MEDIUM                  = 2,  
@�ö���                         +  /* test object with the racing boats and terrain */
@�÷���         world.h   247 X          COLLISION_TYPES_POWERUPS                = 3,  
@�÷���                         +  /* x z test (used for powerup objects) */
@�ø���         world.h   248 X          COLLISION_TYPES_ACCURATE                = 4,  
@�ø���                         +  /* test object with the racing boats, terrain, and o
@�ø���                         +  ther collidable worldobs       */
@�ù���         world.h   249 X  
@�ú���         world.h   250 X          COLLISION_TYPES_NONE                    = 0
@�û���         world.h   251 X  } WorldCollisionTypes;
@�ü���         world.h   252 X  
@�ý���         world.h   253 X  typedef enum {
@�þ���         world.h   254 X          WORLD_COLLISION_FLAG_TERRAIN = 0x00000001,    
@�þ���                         +        /* Collide this object with the terrain */
@�ÿ���         world.h   255 X  
@�����         world.h   256 X          WORLD_COLLISION_FLAG_NONE = 0x00000000
@�����         world.h   257 X  } WorldCollisionFlags_t;
@�����         world.h   258 X  
@�����         world.h   259 X  typedef enum {
@�����         world.h   260 X          WORLD_COLLISION_CLASS_NONE,                   
@�����                         +  /* No object-to-object collisions for this object */
@�����         world.h   261 X          WORLD_COLLISION_CLASS_SIMPLE,           /* Sim
@�����                         +ple classifiction: can collide only with objects of co
@�����                         +mplex classification */
@�����         world.h   262 X          WORLD_COLLISION_CLASS_COMPLEX,          /* Com
@�����                         +plex classification: can collide with objects of eithe
@�����                         +r simple or complex class */
@�����         world.h   263 X  
@�����         world.h   264 X          WORLD_COLLISION_CLASS_COUNT
@�	���         world.h   265 X  } WorldCollisionClass_t;
@�
���         world.h   266 X  
@�����         world.h   267 X  #define WORLD_COLLISION_ID_STRING_LENGTH        4
@�����         world.h   268 X  
@�
���         world.h   269 X  typedef struct {
@�����         world.h   270 X          Vec3_t                                  pos;  
@�����                         +        /* Initial world position */
@�����         world.h   271 X          u16                                           
@�����                         +  angle_x;      /* Initial pitch (bradians) */
@�����         world.h   272 X          u16                                           
@�����                         +  angle_y;      /* Initial heading (bradians) */
@�����         world.h   273 X          u16                                           
@�����                         +  angle_z;      /* Initial roll (bradians) */
@�����         world.h   274 X          u16                                           
@�����                         +  flags;                /* See WorldInstanceFlags */
@�����         world.h   275 X          u32                                           
@�����                         +  nCollisionType;       /* See WorldCollisionTypes */
@�����         world.h   276 X          u16                                           
@�����                         +  id;                   /* Used to identify objects */
@�����         world.h   277 X  
      
+******************************** */
@�+���         world.h   299 X  /*      SectorWalls_t */
@�,���         world.h   300 X  
@�-���         world.h   301 X  typedef struct SectorWalls_s {
@�.���         world.h   302 X          CollTList_t                             CollTL
@�.���                         +ist;                                            /* the
@�.���                         + collision wall list for this sector */
@�/���         world.h   303 X  } SectorWalls_t;
@�0���         world.h   304 X  
@�1���         world.h   305 X  /*****************************************************
@�1���                         +******************************** */
@�2���         world.h   306 X  /*      SectorCollide_t */
@�3���         world.h   307 X  
@�4���         world.h   308 X  typedef struct SectorCollide_s {
@�5���         world.h   309 X          SectorWalls_t                   SectorWalls;  
@�5���                         +                                        /* the collisi
@�5���                         +on wall list for this sector */
@�6���         world.h   310 X  } SectorCollide_t;
@�7���         world.h   311 X  
@�8���         world.h   312 X  /*****************************************************
@�8���                         +******************************** */
@�9���         world.h   313 X  /*      WorldSector_t */
@�:���         world.h   314 X  
@�;���         world.h   315 X  typedef enum {
@�<���         world.h   316 X          SECTOR_FLAG_NWONE                        = 0,
@�=���         world.h   317 X          SECTOR_FLAG_HIGHLIGHT           = 0x00000001
@�>���         world.h   318 X  } WorldSectorFlags;
@�?���         world.h   319 X  
@�@���         world.h   320 X  typedef enum {
@�A���         world.h   321 X          SECTOR_DIRECTION_FORWARD = 0,
@�B���         world.h   322 X          SECTOR_DIRECTION_REVERSE,
@�C���         world.h   323 X          SECTOR_DIRECTION_LEFT,
@�D���         world.h   324 X          SECTOR_DIRECTION_RIGHT,
@�E���         world.h   325 X          SECTOR_DIRECTION_COUNT
@�F���         world.h   326 X  } WorldSectorDirections;
@�G���         world.h   327 X  
@�H���         world.h   328 X  struct _tag_WorldSector_t {
@�I���         world.h   329 X          WorldEdge_t *                   leading_edge; 
@�I���                         +                        /* Index of leading edge in ed
@�I���                         +ge list */
@�J���         world.h   330 X          WorldEdge_t *                   trailing_edge;
@�J���                         +                                /* Index of trailing e
@�J���                         +dge in edge list. */
@�K���         world.h   331 X          XZ_t                                    forwar
@�K���                         +d;                                      /* Forward vec
@�K���                         +tor (normalized) */
@�L���         world.h   332 X          Limits_t                                leadin
@�L���                         +g_boundry;                      /* Glass wall */
@�M���         world.h   333 X          Limits_t                                traili
@�M���                         +ng_boundry;                     /* Glass wall */
@�N���         world.h   334 X          Limits_t                                leadin
@�N���                         +g_water;                                /* Water edge 
@�N���                         +*/
@�O���         world.h   335 X          Limits_t                                traili
@�O���                         +ng_water;                               /* Water edge 
@�O���                         +*/
@�P���         world.h   336 X          Limits_t                                leadin
@�P���                         +g_extents;                      /* Sector outer bounda
@�P���                         +ry */
@�Q���         world.h   337 X          Limits_t                                traili
@�Q���                         +ng_extents;                     /* Sector outer bounda
@�Q���                         +ry */
@�R���         world.h   338 X          u32                                           
@�R���                         +  flags;                                              
@�R���                         +  /* See WorldSectorFlags */
@�S���         world.h   339 X          f32                                           
@�S���                         +  fractal_factor;                               /* fra
@�S���                         +ctalizing factor for auto-tessilation. */
@�T���         world.h   340 X          float                                   water_
@�T���                         +opacity;                                /* Water Opaci
@�T���                         +ty magnitude */
@�U���         world.h   341 X          float                                   water_
@�U���                         +reflect;                                /* Water Refle
@�U���                         +ction magnitude */
@�V���         world.h   342 X          u32                                           
@�V���                         +  group_count;                          /* Display lis
@�V���                         +t */
@�W���         world.h   343 X          Mesh3dGrpDef_t *                groups;
@�X���         world.h   344 X          u32                                           
@�X���                         +  instance_count;
@�Y���         world.h   345 X          WorldInstance_t *               instances;
@�Z���         world.h   346 X          WorldSectorList_t               display[SE

j����         world.h   479            u32                                     nPathS
j����                         +ectorChoices; /* count of PathSectorChoices_t array*/
j���         world.h   480            u32                                     nPathS
j���                         +ectorList; /* count of PathSector_t pointer array*/
j���         world.h   481            u32                                     nPathS
j���                         +ectorGroups; /* count of PathSectorGroup_t array*/
j���         world.h   482            u32                                     nPathL
j���                         +oopInstances; /* count of PathLoopInstance_t array*/
j���         world.h   483            u32                                     nFogTa
j���                         +bleCount;       /* Number of fog tables in array pFogT
j���                         +ables*/
j���         world.h   484    
j���         world.h   485            WorldSector_t *         pSectors;             
j���                         +  /* pointer to start of WorldSector_t array*/
j���         world.h   486            WorldEdge_t *           pEdges;               
j���                         +  /* pointer to start of WorldEdge_t array*/
j���         world.h   487            WorldConnection_t *     pConnections;   /* poi
j���                         +nter to start of WorldConnection_t array*/
j���         world.h   488            WorldInstance_t *       pInstances;           
j���                         +  /* pointer to start of WorldInstance_t array*/
j���         world.h   489            WorldWaterfall_t *      pWaterfalls;    /* poi
j���                         +nter to start of WorldWaterfall_t array*/
j���         world.h   490            WorldFx_t *                     pFxs;         
j���                         +        /* pointer to start of WorldFx_t array*/
j���         world.h   491            WorldCollide_tWorldCollide;   /* the
j���                         + world collision data*/
j���         world.h   492            PathSector_t *          pPathSector;    /* poi
j���                         +nter to start of PathSector_t array*/
j���         world.h   493            PathEdge_t *            pPathEdge;            
j���                         +  /* pointer to start of PathEdge_t array*/
j���         world.h   494            PathSectorChoices_t *pPathSectorChoices; /* po
j���                         +inter to start of PathSectorChoices_t array*/
j���         world.h   495            PathSector_t **         pPathSectorList; /* po
j���                         +inter to start of PathSector_t pointer array*/
j��         world.h   496            PathSectorGroup_t *     pPathSectorGroups; /* 
j��                         +pointer to start of PathSectorGroup_t array*/
j��         world.h   497            PathLoopInstance_t *pPathLoopInstances; /* poi
j��                         +nter to start of PathLoopInstance_t array*/
j��         world.h   498            FogTable_t *pFogTables;                       
j��                         +  /* Points to an array of fog tables*/
j��         world.h   499    
j��         world.h   500            /* These lists set-up 1-to-N relationships bet
j��                         +ween objects.*/
j�õ���         world.h   501            u32                                     nSecto
j�õ���                         +rList;          /* count of WorldSector_t pointer arra
j�õ���                         +y*/
j�ö���         world.h   502            u32                                     nConne
j�ö���                         +ctionList;      /* count of WorldSector_t pointer arra
j�ö���                         +y*/
j�÷���         world.h   503    
j�ø���         world.h   504            WorldSector_t **        pSectorList;          
j�ø���                         +  /* pointer to start of WorldSector_t pointer array*/
j�ù���         world.h   505            WorldConnection_t**     pConnectionList;      
j�ù���                         +  /* pointer to start of WorldConnection_t pointer arr
j�ù���                         +  ay*/
j�ú���         world.h   506    
j�û���         world.h   507            /* Following is the geometry*/
j�ü���         world.h   508            Mesh3d_t                        mesh;
j�ý���         world.h   509    
j�þ���         world.h   510    } World_t;
j�ÿ���         world.h   511    
j�����         world.h   512    typedef struct {
j�����         world.h   513            WorldSector_t *pSector;
j�����         world.h   514            Vec3_t WorldPos;
j�����         world.h   515    } WorldPoint_t;
j�����         world.h   516    
j�����         world.h   517  E typedef void WorldTripwireCallbackFcn_t( u32 nTripwire
j�����                         +Id, int bForward );
j�����         world.h   518    
j�����         world.h   519    
j�����         world.h   520    #include "worldlt.h"

worldit.h

Found at 0xB3562E0:


p�����       worldlt.h     1    /*////////////////////////////////////////////////////
p�����                         +////////////////////////////////*/
p�����       worldlt.h     2    /* worldlt.h - World lighting module.*/
p�����       worldlt.h     3    /**/
p�����       worldlt.h     4    /* Author: Steve Ranck     */
p�����       worldlt.h     5    /*////////////////////////////////////////////////////
p�����                         +////////////////////////////////*/
p�����       worldlt.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
p�����                         +TERTAINMENT.*/
p�����       worldlt.h     7    /* Copyright (c) 1997*/
p�����       worldlt.h     8    /**/
p�	���       worldlt.h     9    /* The contents of this file may not be disclosed to t
p�	���                         +hird*/
p�
���       worldlt.h    10    /* parties, copied or duplicated in any form, in whole
p�
���                         + or in part,*/
p�����       worldlt.h    11    /* without the prior written permission of Midway Home
p�����                        + Entertainment.*/
p�����       worldlt.h    12    /*////////////////////////////////////////////////////
p�����                         +////////////////////////////////*/
p�
���       worldlt.h    13    /* Modification History:*/
p�����       worldlt.h    14    /**/
p�����       worldlt.h    15    /* Date     Who         Description*/
p�����       worldlt.h    16    /* -------- ----------  ------------------------------
p�����                         +--------------------------------*/
p�����       worldlt.h    17    /* 07/16/97 Ranck       Created.*/
p�����       worldlt.h    18    /*////////////////////////////////////////////////////
p�����                         +////////////////////////////////*/
p�����       worldlt.h    19    
p�����       worldlt.h    20    #ifndef _WORLDLT_H_
p�����       worldlt.h    21    #define _WORLDLT_H_ 1
p�����       worldlt.h    22    
p�����       worldlt.h    23    #include "gendefs.h"

mesh3d.h

Found at 1x5F88DA1:

e��                         +  /* private:*/
e��        mesh3d.h   500 X          RGBf_t ScaledColor;             /* Color with 
e��                         +components multiplied by fIntensity (0.0 to 1.0)*/
e�õ���        mesh3d.h   501 X          u32 nScaledOpaqueness;  /* (0<<24 to 255<<24)*
e�õ���                         +/
e�ö���        mesh3d.h   502 X  } Mesh3dAmbient_t;
e�÷���        mesh3d.h   503 X  
e�ø���        mesh3d.h   504 X  #include "light.h"
e�ù���        mesh3d.h   505 X  
e�ú���        mesh3d.h   506 X  
e�û���        mesh3d.h   507 X  #if MESH3D_TRI_HIGHLIGHT_CODE
e�ü���        mesh3d.h   508 X  /* Return code:*/
e�ý���        mesh3d.h   509 X  /*   FALSE: Engine should not draw this triangle nor i
e�ý���                         +ts wireframe.*/
e�þ���        mesh3d.h   510 X  /*   TRUE: Engine should draw the triangle and, if app
e�þ���                         +ropriate, its wireframe.*/
e�ÿ���        mesh3d.h   511 X  typedef BOOL Mesh3dPolyDrawFcn_t(
e�����        mesh3d.h   512 X                                  BOOL bClipped, const M
e�����                         +esh3dMtlDef_t *pMaterial, u32 nTriIndex,
e�����        mesh3d.h   513 X                                  int nNumClippedVerts, 
e�����                         +const Mesh3dVtxCache_t *apClippedVtxCache[],
e�����        mesh3d.h   514 X                                  const Mesh3dVtxCache_t
e�����                         + *apUnclippedVtxCache[3]
e�����        mesh3

vec2.h

Found at 1xA93C780:


.�����          vec2.h     1    /*****************************************************
.�����                         +******************************** */
.�����          vec2.h     2    /* vec2.h */
.�����          vec2.h     3    /* */
.�����          vec2.h     4    /* Author: Steve Ranck */
.�����          vec2.h     5    /*****************************************************
.�����                         +******************************** */
.�����          vec2.h     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
.�����                         +TERTAINMENT. */
.�����          vec2.h     7    /* Copyright (c) 1997 */
.�����          vec2.h     8    /* */
.�	���          vec2.h     9    /* The contents of this file may not be disclosed to t
.�	���                         +hird */
.�
���          vec2.h    10    /* parties, copied or duplicated in any form, in whole
.�
���                         + or in part, */
.�����          vec2.h    11    /* without the prior written permission of Midway Home
.�����                         + Entertainment. */
.�����          vec2.h    12    /*****************************************************
.�����                         +******************************** */
.�
���          vec2.h    13    /* Modification History: */
.�����          vec2.h    14    /* */
.�����          vec2.h    15    /* Date         Who                     Description */
.�����          vec2.h    16    /* --------     ----------      ----------------------
.�����                         +---------------------------------------- */
.�����          vec2.h    17    /* 01-17-97     Ranck           Created. */
.�����          vec2.h    18    /****************************************************
.�����                         +******************************** */
.�����          vec2.h    19    
.�����          vec2.h    20    #ifndef _VEC2_H_
.�����          vec2.h    21    #define _VEC2_H_ 1
.�����          vec2.h    22    
.�����          vec2.h    23    #include "gendefs.h"

wpr_attract.c

Found at 1xA8D62F0:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:23:10  PAGE    1

************ OBJECT LISTING ************

FILE NAME: wpr_attract.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

      wpr_attrac     1    /*****************************************************
                         +******************************** */
      wpr_attrac     2    /* wpr_attract.c -  */
      wpr_attrac     3    /* */
      wpr_attrac     4    /* Author: Michael Starich    */
      wpr_attrac     5    /*****************************************************
                         +******************************** */
      wpr_attrac     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
      wpr_attrac     7    /* Copyright (c) 1998 */
      wpr_attrac     8    /* */
      wpr_attrac     9    /* The contents of this file may not be disclosed to t
                         +hird */
      wpr_attrac    10    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
      wpr_attrac    11    /* without the prior written permission of Midway Home
                         + Entertainment. */
      wpr_attrac    12    /*****************************************************
                         +******************************** */
      wpr_attrac    13    /* Modification History: */
      wpr_attrac    14    /* */
      wpr_attrac    15    /* Date     Who         Description */
      wpr_attrac    16    /* -------- ----------  ------------------------------
                         +-------------------------------- */
      wpr_attrac    17    /* 03/30/98 Starich     Created. */
      wpr_attrac    18    /*****************************************************
                         +******************************** */
      wpr_attrac    19    #include "gendefs.h"
      wpr_attrac    20    #include "wpr_attract.h"
      wpr_attrac    21    #include "wpr_defs.h"
      wpr_attrac    22    #include "gutil.h"
      wpr_attrac    23    #include "text.h"
      wpr_attrac    24    #include "controls.h"
      wpr_attrac    25    #include "wpr_memmgr.h"
      wpr_attrac    26    #include "mesh3d.h"
      wpr_attrac    27    #include "obsys.h"
      wpr_attrac    28    #include "blit.h"
      wpr_attrac    29    #include "tracks.h"
      wpr_attrac    30    #include "terrain.h"
      wpr_attrac    31    #include "wpr_hiscore.h"
      wpr_attrac    32    #include "xclib.h"
      wpr_attrac    33    #include "temp.h"
      wpr_attrac    34    #include "gameloop.h"
      wpr_attrac    35    #include "particle.h"
      wpr_attrac    36    #include "tripwire.h"
      wpr_attrac    37    #include "objectid.h"
      wpr_attrac    38    #include "fx.h"
      wpr_attrac    39    #include "fx_splash.h"
      wpr_attrac    40    #include "sky.h"
      wpr_attrac    41    #include "boats.h"
      wpr_attrac    42    #include "anim_fish.h"
      wpr_attrac    43    #include "hud_wrongway.h"
      wpr_attrac    44    #include "collide_obj.h"
      wpr_attrac    45    #include "waterspray.h"
      wpr_attrac    46    /*#include "audio_mgr.h" */
      wpr_attrac    47    #include "anim_air.h"
      wpr_attrac    48    #include "mtx3.h"
      wpr_attrac    49    #include "audio.h"
      wpr_attrac    50    #include "soundcall.h"
      wpr_attrac    51    
      wpr_attrac    52    /*==================== */
      wpr_attrac    53    /* private definitions */
      wpr_attrac    54    
      wpr_attrac    55    #define _FLAG_TRACKDEMO 0x1
      wpr_attrac    56    #define _FLAG_HISCORE   0x2
      wpr_attrac    57    #define _FLAG_CREDITS   0x4
      wpr_attrac    58    
      wpr_attrac    59    #define _FLAG_ACTIVE    ( _FLAG_TRACKDEMO | _FLAG_HISC
                         +ORE | _FLAG_CREDITS )
      wpr_attrac    60    
      wpr_attrac    61    #define _NUM_ATTRACT_RACERS                           
                         +  8
      wpr_attrac    62    #define _MAX_SCREEN_AREA_SUM                    ( 512.
                         +0f * 400.0f * 7.0f )
      wpr_attrac    63    #define _MAX_SPRAY_PARTICLES                    200
      wpr_attrac    64    #define _FRAMES_TO_GET_UP_AND_RUNNING   13
      wpr_attrac    65    
      wpr_attrac    66    typedef enum
      wpr_attrac    67    {
      wpr_attrac    68            _GAME_CAM1 = 0,
      wpr_attrac    69            _GAME_CAM2,
      wpr_attrac    70            _GAME_CAM3,
      wpr_attrac    71            _ESPN_CAM,
      wpr_attrac    72            _MOUNTED_CAM,
      wpr_attrac    73            _CIRCLE_CAM,
      wpr_attrac    74            _ESPN2_CAM,
      wpr_attrac    75            _ESPN3_CAM,
      wpr_attrac    76            _STATIONARY_CAM,
      wpr_attrac    77            _CHASE_CAM,
      wpr_attrac    78    
      wpr_attrac    79            _CAM_COUNT
      wpr_attrac    80    } CamTypes_t;
      wpr_attrac    81    
      wpr_attrac    82    typedef struct
      wpr_attrac    83    {
      wpr_attrac    84            u8        nFlags;
      wpr_attrac    85            u8    nNextStage;
      wpr_attrac    86            u8        nNextActiveStage;
      wpr_attrac    87            u8        nR;
      wpr_attrac    88            u8        nG;
      wpr_attrac    89            u8        nB;
      wpr_attrac    90            u16       nTimeInStage; /* in 60ths of a sec *
                         +/
      wpr_attrac    91            char *pszObName;
      wpr_attrac    92            u16   nParm1;   /* track num */
      wpr_attrac    93            u16   nParm2;   /* start offset */
      wpr_attrac    94            u16       nParm3;       /* ai boat offset */
      wpr_attrac    95            u16       nParm4;       /*  */
      wpr_attrac    96    } AttractInfo_t;
      wpr_attrac    97    /* in demomode nParm1 = track num, nParm2 = starting p
                         +os offset, nParm3 = ai boat type offset */
      wpr_attrac    98    /* in hiscore  nParm1 = 1st track num, nParm2 = 2nd tr
                         +ack num */
      wpr_attrac    99    
      wpr_attrac   100    /*================= */
      wpr_attrac   101    /* public variables */
      wpr_attrac   102    
      wpr_attrac   103    /*================== */
      wpr_attrac   104    /* private variables */
      wpr_attrac   105    
      wpr_attrac   106    const static AttractInfo_t _StageInfo[WPR_ATTRACT_STAG
                         +E_COUNT] = {
      wpr_attrac   107    /*====================================================
                         +==== */
      wpr_attrac   108    /* WPR_ATTRACT_ENTER */
      wpr_attrac   109            0,                                            
                         +  /* nFlags */
      wpr_attrac   110            WPR_ATTRACT_STAGE_1,    /* nNextStage */
      wpr_attrac   111            WPR_ATTRACT_STAGE_1,    /* nNextActiveStage */
      wpr_attrac   112            0, 0, 255,                              /* nR 
                         +nG, nB */
      wpr_attrac   113            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   114            "BWWLOGOAT10",                  /* pszObName *
                         +/
      wpr_attrac   115            0,                                            
                         +  /* nParm1 */
      wpr_attrac   116            0,                                            
                         +  /* nParm2 */
      wpr_attrac   117            0,                                            
                         +  /* nParm3 */
      wpr_attrac   118            0,                                            
                         +  /* nParm4 */
      wpr_attrac   119    /*====================================================
                         +==== */
      wpr_attrac   120    /* WPR_ATTRACT_HYDRO_LOGO */
      wpr_attrac   121            0,                                            
                        +  /* nFlags */
      wpr_attrac   122            WPR_ATTRACT_STAGE_2,    /* nNextStage */
      wpr_attrac   123            WPR_ATTRACT_STAGE_2,    /* nNextActiveStage */
      wpr_attrac   124            0, 255, 0,                              /* nR 
                         +nG, nB */
      wpr_attrac   125            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   126            "BWWHYDRAT10",                  /* pszObName *
                         +/
      wpr_attrac   127            0,                                            
                         +  /* nParm1 */
      wpr_attrac   128            0,                                            
                         +  /* nParm2 */
      wpr_attrac   129            0,                                            
                         +  /* nParm3 */
      wpr_attrac   130            0,                                            
                         +  /* nParm4 */
      wpr_attrac   131    /*====================================================
                         +==== */
      wpr_attrac   132    /* WPR_ATTRACT_3DFX_LOGO */
      wpr_attrac   133            0,                                            
                         +  /* nFlags */
      wpr_attrac   134            WPR_ATTRACT_STAGE_3,    /* nNextStage */
      wpr_attrac   135            WPR_ATTRACT_STAGE_3,    /* nNextActiveStage */
      wpr_attrac   136            255, 0, 0,                              /* nR 
                         +nG, nB */
      wpr_attrac   137            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   138            "BWW3DFXAT10",                  /* pszObName *
                         +/
      wpr_attrac   139            0,                                            
                         +  /* nParm1 */
      wpr_attrac   140            0,                                            
                         +  /* nParm2 */
      wpr_attrac   141            0,                                            
                         +  /* nParm3 */
      wpr_attrac   142            0,                                            
                         +  /* nParm4 */
      wpr_attrac   143    /*====================================================
                         +==== */
      wpr_attrac   144    /* WPR_ATTRACT_HTRA_LOGO */
      wpr_attrac   145            0,                                            
                         +  /* nFlags */
      wpr_attrac   146            WPR_ATTRACT_STAGE_4,    /* nNextStage */
      wpr_attrac   147            WPR_ATTRACT_STAGE_4,    /* nNextActiveStage */
      wpr_attrac   148            0, 255, 255,                    /* nR nG, nB *
                         +/
      wpr_attrac   149            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   150            "BWWHTRAAT10",                  /* pszObName *
                         +/
      wpr_attrac   151            0,                                            
                         +  /* nParm1 */
      wpr_attrac   152            0,                                            
                         +  /* nParm2 */
      wpr_attrac   153            0,                                            
                         +  /* nParm3 */
      wpr_attrac   154            0,                                            
                         +  /* nParm4 */
      wpr_attrac   155    /*====================================================
                         +==== */
      wpr_attrac   156    /* WPR_ATTRACT_BANSHEE   */
      wpr_attrac   157            0,                                            
                         +  /* nFlags */
      wpr_attrac   158            WPR_ATTRACT_STAGE_5,    /* nNextStage    */
      wpr_attrac   159            WPR_ATTRACT_STAGE_5,    /* nNextActiveStage   
                        +   */
      wpr_attrac   160            255, 255, 0,                    /* nR nG, nB *
                         +/
      wpr_attrac   161            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   162            "BWWBANSAT10",                  /* pszObName *
                         +/
      wpr_attrac   163            0,                                            
                         +  /* nParm1 */
      wpr_attrac   164            0,                                            
                         +  /* nParm2 */
      wpr_attrac   165            0,                                            
                         +  /* nParm3 */
      wpr_attrac   166            0,                                            
                         +  /* nParm4 */
      wpr_attrac   167    /*====================================================
                         +==== */
      wpr_attrac   168    /* WPR_ATTRACT_CUT               */
      wpr_attrac   169            0,                                            
                         +  /* nFlags */
      wpr_attrac   170            WPR_ATTRACT_STAGE_6,    /* nNextStage */
      wpr_attrac   171            WPR_ATTRACT_STAGE_6,    /* nNextActiveStage */
      wpr_attrac   172            255, 0, 255,                    /* nR nG, nB *
                         +/
      wpr_attrac   173            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   174            "BWWCUTTAT10",                  /* pszObName *
                         +/
      wpr_attrac   175            0,                                            
                         +  /* nParm1 */
      wpr_attrac   176            0,                                            
                         +  /* nParm2 */
      wpr_attrac   177            0,                                            
                         +  /* nParm3 */
      wpr_attrac   178            0,                                            
                         +  /* nParm4 */
      wpr_attrac   179    /*====================================================
                         +==== */
      wpr_attrac   180    /* WPR_ATTRACT_DAMN                      */
      wpr_attrac   181            0,                                            
                         +  /* nFlags */
      wpr_attrac   182            WPR_ATTRACT_STAGE_7,    /* nNextStage         
                         +   */
      wpr_attrac   183            WPR_ATTRACT_STAGE_7,    /* nNextActiveStage   
                         +   */
      wpr_attrac   184            0, 128, 128,                    /* nR nG, nB  
                         +   */
      wpr_attrac   185            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   186            "BWWDAMNAT10",                  /* pszObName *
                         +/
      wpr_attrac   187            0,                                            
                         +  /* nParm1 */
      wpr_attrac   188            0,                                            
                         +  /* nParm2 */
      wpr_attrac   189            0,                                            
                         +  /* nParm3 */
      wpr_attrac   190            0,                                            
                         +  /* nParm4 */
      wpr_attrac   191    /*====================================================
                         +==== */
      wpr_attrac   192    /* WPR_ATTRACT_MISS                      */
      wpr_attrac   193            0,                                            
                         +  /* nFlags              */
      wpr_attrac   194            WPR_ATTRACT_STAGE_8,    /* nNextStage         
                         +   */
      wpr_attrac   195            WPR_ATTRACT_STAGE_8,    /* nNextActiveStage
+   */
      wpr_attrac   196            128, 128, 0,                    /* nR nG, nB *
                         +/
      wpr_attrac   197            300,                                    /* nTi
                         +meInStage */
      wpr_attrac   198            "BWWMISSAT10",                  /* pszObName  
                         +                                                 */
      wpr_attrac   199            0,                                            
                         +  /* nParm1 */
      wpr_attrac   200            0,                                            
                         +  /* nParm2 */
      wpr_attrac   201            0,                                            
                         +  /* nParm3 */
      wpr_attrac   202            0,                                            
                         +  /* nParm4 */
      wpr_attrac   203    /*====================================================
                         +==== */
      wpr_attrac   204    /* WPR_ATTRACT_RAD               */
      wpr_attrac   205            0,                                            
                         +  /* nFlags */
      wpr_attrac   206            WPR_ATTRACT_STAGE_9,    /* nNextStage */
      wpr_attrac   207            WPR_ATTRACT_STAGE_9,    /* nNextActiveStage */
      wpr_attrac   208            128,    0,              128,    /* nR nG, nB *
                         +/
      wpr_attrac   209            300,                                    /* nTi
                         +meInStage        */
      wpr_attrac   210            "BWWRADHAT10",                  /* pszObName  
                         +                                                 */
      wpr_attrac   211            0,                                            
                         +  /* nParm1 */
      wpr_attrac   212            0,                                            
                         +  /* nParm2 */
      wpr_attrac   213            0,                                          
                         +  /* nParm3 */
      wpr_attrac   214            0,                                            
                         +  /* nParm4 */
      wpr_attrac   215    /*====================================================
                         +==== */
      wpr_attrac   216    /* WPR_ATTRACT_RAZOR             */
      wpr_attrac   217  E         0,                                      /* nFl
                         +ags      */
      wpr_attrac   218            WPR_ATTRACT_STAGE_10,   /* nNextStage    */
      wpr_attrac   219            WPR_ATTRACT_STAGE_10,   /* nNextActiveStage   
                         +         */
      wpr_attrac   220            128,    128,    128,    /* nR nG, nB     */
      wpr_attrac   221            300,                                    /* nTi
                         +meInStage        */
      wpr_attrac   222            "BWWRAZRAT10",                  /* pszObName  
                         +                                                      
                         +   */
      wpr_attrac   223            0,                                            
                         +  /* nParm1 */
      wpr_attrac   224            0,                                            
                         +  /* nParm2 */
      wpr_attrac   225            0,                                            
                         +  /* nParm3 */
      wpr_attrac   226            0,                                            
                         +  /* nParm4 */
      wpr_attrac   227    /*====================================================
                         +==== */
      wpr_attrac   228    /* WPR_ATTRACT_THRESHER          */
      wpr_attrac   229            0,                                            
                         +  /* nFlags      */
      wpr_attrac   230            WPR_ATTRACT_STAGE_11,   /* nNextStage    */
      wpr_attrac   231            WPR_ATTRACT_STAGE_11,   /* nNextActiveStage   
                         +   */
      wpr_attrac   232            255,    128,    64,             /* nR nG, nB  
                         +   */
      wpr_attrac   233            300,                                    /* nTi
                         +meInStage        */
      wpr_attrac   234            "BWWTHREAT10",                  /* pszObName *
                         +/
      wpr_attrac   235            0,                                            
                         +  /* nParm1 */
      wpr_attrac   236            0,                                            
                         +  /* nParm2 */
      wpr_attrac   237            0,                                            
                         +  /* nParm3 */
      wpr_attrac   238            0,                                            
                         +  /* nParm4 */
      wpr_attrac   239    /*====================================================
                         +==== */
      wpr_attrac   240    /* WPR_ATTRACT_TIDAL             */
      wpr_attrac   241            0,                                            
                         +  /* nFlags      */
      wpr_attrac   242            WPR_ATTRACT_STAGE_12,   /* nNextStage         
                         +   */
      wpr_attrac   243            WPR_ATTRACT_STAGE_12,   /* nNextActiveStage   
                         +   */
      wpr_attrac   244            128,    64,             255,    /* nR nG, nB  
                         +         */
      wpr_attrac   245            300,                                    /* nTi
                         +meInStage        */
      wpr_attrac   246            "BWWTIDAAT10",                  /* pszObName  
                         +                                                      
                         +   */
      wpr_attrac   247            0,                                            
                         +  /* nParm1 */
      wpr_attrac   248            0,                                            
                         +  /* nParm2 */
      wpr_attrac   249            0,                                            
                         +  /* nParm3 */
      wpr_attrac   250            0,                                            
                         +  /* nParm4 */
      wpr_attrac   251    /*====================================================
                         +==== */
      wpr_attrac   252    /* WPR_ATTRACT_DIRECTIONS1               */
      wpr_attrac   253            0,                                            
                         +  /* nFlags      */
      wpr_attrac   254            WPR_ATTRACT_STAGE_1,    /* nNextStage         
                         +   */
      wpr_attrac   255            WPR_ATTRACT_STAGE_1,    /* nNextActiveStage   
                         +   */
      wpr_attrac   256            64,             255,    128,    /* nR nG, nB  
                         +   */
      wpr_attrac   257            300,                                    /* nTi
                         +meInStage        */
      wpr_attrac   258            "BWWDIREAT10",                  /* pszObName  
                         +                                                      
                         +         */
      wpr_attrac   259            0,                                            
                         +  /* nParm1 */
      wpr_attrac   260            0,                                            
                         +  /* nParm2 */
      wpr_attrac   261            0,                                            
                         +  /* nParm3 */
      wpr_attrac   262            0,                                            
                         +  /* nParm4 */
      wpr_attrac   263    /*====================================================
                         +==== */
      wpr_attrac   264    /* WPR_ATTRACT_JOIN                      */
      wpr_attrac   265            0,                                            
                         +  /* nFlags      */
      wpr_attrac   266            WPR_ATTRACT_ENTER,              /* nNextStage 
                         +   */
      wpr_attrac   267            WPR_ATTRACT_STAGE_1,    /* nNextActiveStage   
                         +   */
      wpr_attrac   268            0,              0,              0,            
                         +  /* nR nG, nB */
      wpr_attrac   269            0,                                            
                         +  /* nTimeInStage        */
      wpr_attrac   270            "GWWJOINATH0",                  /* pszObName  
                         +   */
      wpr_attrac   271            0,                                            
                         +  /* nParm1 */
      wpr_attrac   272            0,                                            
                         +  /* nParm2 */
      wpr_attrac   273            0,                                            
                         +  /* nParm3 */
      wpr_attrac   274            0,                                            
                         +  /* nParm4 */
      wpr_attrac   275    
      wpr_attrac   276    
      wpr_attrac   277    /*====================================================
                         +==== */
      wpr_attrac   278    /* WPR_ATTRACT_STAGE_1   */
      wpr_attrac   279  E         0x1,            /* nFlags                */
      wpr_attrac   280            WPR_ATTRACT_HYDRO_LOGO, /* nNextStage    */
      wpr_attrac   281            WPR_ATTRACT_STAGE_2,    /* nNextActiveStage */
      wpr_attrac   282            255,    128,    64,             /* nR nG, nB *
                         +/
      wpr_attrac   283            2850,                                   /* nTi
                         +meInStage        */
      wpr_attrac   284            "H2WPWELTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   285            TRACKS_LAKEPOWELL,              /* nParm1 */
      wpr_attrac   286            0,                                            
                         +  /* nParm2 */
      wpr_attrac   287            0,                                            
                         +  /* nParm3 */
      wpr_attrac   288            0,                                            
                         +  /* nParm4 */
      wpr_attrac   289    /*====================================================
                         +==== */
      wpr_attrac   290    /* WPR_ATTRACT_STAGE_2           */
      wpr_attrac   291  E         0x2,                    /* nFlags        */
      wpr_attrac   292            WPR_ATTRACT_3DFX_LOGO,  /* nNextStage         
                         +   */
      wpr_attrac   293            WPR_ATTRACT_STAGE_3,    /* nNextActiveStage */
      wpr_attrac   294            128,    64,             32,             /* nR 
                         +nG, nB */
      wpr_attrac   295            1250,                                   /* nTi
                         +meInStage        */
      wpr_attrac   296            "HWTHISCTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   297            TRACKS_SHIPGRAVEYARD,   /* nParm1 */
      wpr_attrac   298            TRACKS_AMAZON,                  /* nParm2 */
      wpr_attrac   299            0,                                            
                         +  /* nParm3 */
      wpr_attrac   300            0,                                            
                         +  /* nParm4 */
      wpr_attrac   301    /*====================================================
                         +==== */
      wpr_attrac   302    /* WPR_ATTRACT_STAGE_3           */
      wpr_attrac   303  E         0x1,            /* nFlags */
      wpr_attrac   304            WPR_ATTRACT_HTRA_LOGO,  /* nNextStage    */
      wpr_attrac   305            WPR_ATTRACT_STAGE_4,    /* nNextActiveStage */
      wpr_attrac   306            64,             32,             16,           
                         +  /* nR nG, nB */
      wpr_attrac   307            2800,                                   /* nTi
                         +meInStage        */
      wpr_attrac   308            "H1WARCTTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   309            TRACKS_ARTIC,                   /* nParm1 */
      wpr_attrac   310            0,                                            
                         +  /* nParm2 */
      wpr_attrac   311            1,                                            
                         +  /* nParm3 */
      wpr_attrac   312            0,                                            
                         +  /* nParm4 */
      wpr_attrac   313    /*====================================================
                         +==== */
      wpr_attrac   314    /* WPR_ATTRACT_STAGE_4           */
      wpr_attrac   315  E         0x2,                    /* nFlags        */
      wpr_attrac   316            WPR_ATTRACT_BANSHEE,    /* nNextStage    */
      wpr_attrac   317            WPR_ATTRACT_STAGE_5,    /* nNextActiveStage */
      wpr_attrac   318            128,    255,    0,              /* nR nG, nB *
                         +/
      wpr_attrac   319            1250,                                   /* nTi
                         +meInStage        */
      wpr_attrac   320            "HWTHISCTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   321            TRACKS_VENICE,                  /* nParm1 */
      wpr_attrac   322            TRACKS_LAKEPOWELL,              /* nParm2 */
      wpr_attrac   323            0,                                            
                         +  /* nParm3 */
      wpr_attrac   324            0,                                            
                         +  /* nParm4 */
      wpr_attrac   325    /*====================================================
                         +==== */
      wpr_attrac   326    /* WPR_ATTRACT_STAGE_5           */
      wpr_attrac   327  E         0x1,            /* nFlags        */
      wpr_attrac   328            WPR_ATTRACT_CUT,                /* nNextStage 
                         +   */
      wpr_attrac   329            WPR_ATTRACT_STAGE_6,    /* nNextActiveStage */
      wpr_attrac   330            128,    255,    255,    /* nR nG, nB */
      wpr_attrac   331            2950,                                   /* nTi
                         +meInStage        */
      wpr_attrac   332            "H3WAMAZTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   333            TRACKS_AMAZON,                  /* nParm1 */
      wpr_attrac   334            0,                                            
                         +  /* nParm2 */
      wpr_attrac   335            2,                                            
                         +  /* nParm3 */
      wpr_attrac   336            0,                                            
                         +  /* nParm4 */
      wpr_attrac   337    /*====================================================
                         +==== */
      wpr_attrac   338    /* WPR_ATTRACT_STAGE_6           */
      wpr_attrac   339  E         0x2,                    /* nFlags        */
      wpr_attrac   340            WPR_ATTRACT_DAMN,               /* nNextStage 
                         +   */
      wpr_attrac   341            WPR_ATTRACT_STAGE_7,    /* nNextActiveStage */
      wpr_attrac   342            128,    0,              255,    /* nR nG, nB  
                         +         */
      wpr_attrac   343            1250,                                   /* nTi
                         +meInStage                */
      wpr_attrac   344            "HWTHISCTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   345            TRACKS_ARTIC,                   /* nParm1 */
      wpr_attrac   346            TRACKS_NILE,                    /* nParm2 */
      wpr_attrac   347            0,                                            
                         +  /* nParm3 */
      wpr_attrac   348            0,                                            
                         +  /* nParm4 */
      wpr_attrac   349    /*====================================================
                         +==== */
      wpr_attrac   350    /* WPR_ATTRACT_STAGE_7           */
      wpr_attrac   351  E         0x1,            /* nFlags        */
      wpr_attrac   352            WPR_ATTRACT_MISS,               /* nNextStage 
                         +   */
      wpr_attrac   353            WPR_ATTRACT_STAGE_8,    /* nNextActiveStage   
                         +   */
      wpr_attrac   354            255,    0,              255,    /* nR nG, nB  
                         +         */
      wpr_attrac   355            2850,                                   /* nTi
                         +meInStage                        */
      wpr_attrac   356            "H2WPWELTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   357            TRACKS_LAKEPOWELL,              /* nParm1 */
      wpr_attrac   358            0,                                            
                         +  /* nParm2 */
      wpr_attrac   359            0,                                            
                         +  /* nParm3 */
      wpr_attrac   360            0,                                            
                         +  /* nParm4 */
      wpr_attrac   361    /*====================================================
                         +==== */
      wpr_attrac   362    /* WPR_ATTRACT_STAGE_8                   */
      wpr_attrac   363  E         0x2,                    /* nFlags             
                         +   */
      wpr_attrac   364            WPR_ATTRACT_RAD,                /* nNextStage 
                         +         */
      wpr_attrac   365            WPR_ATTRACT_STAGE_9,    /* nNextActiveStage   
                         +         */
      wpr_attrac   366            255,    0,              0,              /* nR 
                         +nG, nB */
      wpr_attrac   367            1250,                                   /* nTi
                         +meInStage        */
      wpr_attrac   368            "HWTHISCTRH0",                  /* pszObName *
                         +/
      wpr_attrac   369            TRACKS_NY,                              /* nPa
                         +rm1 */
      wpr_attrac   370            TRACKS_GREECE,                  /* nParm2 */
      wpr_attrac   371            0,                                            
                         +  /* nParm3 */
      wpr_attrac   372            0,                                            
                         +  /* nParm4 */
      wpr_attrac   373    /*====================================================
                         +==== */
      wpr_attrac   374    /* WPR_ATTRACT_STAGE_9                   */
      wpr_attrac   375  E         0x1,            /* nFlags                     
                         +   */
      wpr_attrac   376            WPR_ATTRACT_RAZOR,              /* nNextStage 
                         +                 */
      wpr_attrac   377            WPR_ATTRACT_STAGE_10,   /* nNextActiveStage   
                         +                 */
      wpr_attrac   378            128,    128,    0,              /* nR nG, nB  
                         +         */
      wpr_attrac   379            2850,                                   /* nTi
                         +meInStage                */
      wpr_attrac   380            "H1WARCTTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   381            TRACKS_ARTIC,                   /* nParm1 */
      wpr_attrac   382            0,                                            
                         +  /* nParm2 */
      wpr_attrac   383            1,                                            
                         +  /* nParm3 */
      wpr_attrac   384            0,                                            
                         +  /* nParm4 */
      wpr_attrac   385    /*====================================================
                         +==== */
      wpr_attrac   386    /* WPR_ATTRACT_STAGE_10                          */
      wpr_attrac   387  E         0x2,                    /* nFlags             
                         +   */
      wpr_attrac   388            WPR_ATTRACT_THRESHER,   /* nNextStage         
                         +         */
      wpr_attrac   389            WPR_ATTRACT_STAGE_11,   /* nNextActiveStage   
                         +                 */
      wpr_attrac   390            0,              0,              255,    /* nR 
                         +nG, nB                   */
      wpr_attrac   391            1250,                                   /* nTi
                         +meInStage                        */
      wpr_attrac   392            "HWTHISCTRH0",                  /* pszObName  
                         +                 */
      wpr_attrac   393            TRACKS_CHINA,                   /* nParm1 */
      wpr_attrac   394            TRACKS_VENICE,                  /* nParm2 */
      wpr_attrac   395            0,                                            
                         +  /* nParm3 */
      wpr_attrac   396            0,                                            
                         +  /* nParm4 */
      wpr_attrac   397    /*====================================================
                         +==== */
      wpr_attrac   398    /* WPR_ATTRACT_STAGE_11                  */
      wpr_attrac   399  E         0x1,            /* nFlags                */
      wpr_attrac   400            WPR_ATTRACT_TIDAL,              /* nNextStage 
                         +                         */
      wpr_attrac   401            WPR_ATTRACT_STAGE_12,   /* nNextActiveStage   
                         +         */
      wpr_attrac   402            128,    0,              128,    /* nR nG, nB  
                         +         */
      wpr_attrac   403            2800,                                   /* nTi
                         +meInStage                */
      wpr_attrac   404            "H3WAMAZTRH0",                  /* pszObName  
                         +   */
      wpr_attrac   405            TRACKS_AMAZON,                  /* nParm1 */
      wpr_attrac   406            0,                                            
                         +  /* nParm2 */
      wpr_attrac   407            2,                                            
                         +  /* nParm3 */
      wpr_attrac   408            0,                                            
                         +  /* nParm4 */
      wpr_attrac   409    /*====================================================
                         +==== */
      wpr_attrac   410    /* WPR_ATTRACT_STAGE_12                          */
      wpr_attrac   411  E         0x2,                    /* nFlags             
                         +   */
      wpr_attrac   412            WPR_ATTRACT_DIRECTIONS1,/* nNextStage         
                         +         */
      wpr_attrac   413            WPR_ATTRACT_STAGE_1,    /* nNextActiveStage   
                         +         */
      wpr_attrac   414            0,              128,    128,    /* nR nG, nB  
                         +   */
      wpr_attrac   415            1250,                                   /* nTi
                         +meInStage                */
      wpr_attrac   416            "HWTHISCTRH0",                  /* pszObName *
                         +/
      wpr_attrac   417            TRACKS_NILE,                    /* nParm1 */
      wpr_attrac   418            TRACKS_LAKEPOWELL,              /* nParm2 */
      wpr_attrac   419            0,                                            
                         +  /* nParm3 */
      wpr_attrac   420            0,                                            
                         +  /* nParm4 */
      wpr_attrac   421    };
      wpr_attrac   422            
      wpr_attrac   423    static WprAttractStage_t _StageNum;
      wpr_attrac   424    static u32 _nR, _nG, _nB;
      wpr_attrac   425  E static int _bActive;
      wpr_attrac   426  E static int _bLoadOk;
      wpr_attrac   427    static Mesh3d_t *_pJoinNetGame;
      wpr_attrac   428    static u8 *_pCurStaticScreen;
      wpr_attrac   429    static TerrainInit_t CurWorld;
      wpr_attrac   430  E static int _bReleaseWorldObs = 0;
      wpr_attrac   431    static ControlState_t _HumanControls;
      wpr_attrac   432    static u32 _nFrameCount;
      wpr_attrac   433    
      wpr_attrac   434    /*=================== */
      wpr_attrac   435    /* private prototypes */
      wpr_attrac   436    
      wpr_attrac   437    static void _DrawOldTextSystem( f32 fTime );
      wpr_attrac   438  E static int _InitDemoMode( u32 nTrack, char *pszObName,
                         + u16 nStartPosOffset, u16 nAiOffSet );
      wpr_attrac   439    static void _EndDemoMode( void );
      wpr_attrac   440    static void _DemoModeWork( void );
      wpr_attrac   441    static void _DemoModeDraw( void );
      wpr_attrac   442    static void _DemoModeCamera( u32 nStageNum, u32 nMode 
                         +);
      wpr_attrac   443    static void _InitCam( u16 nPlayer, u16 nCamType, Vec3_
                         +t *pPos, u16 nAngle, u16 n2ndPlayer );
      wpr_attrac   444    static void _CamWork( void );
      wpr_attrac   445    static void _CamDraw( void );
      wpr_attrac   446    static void _OverLayLoad( void );
      wpr_attrac   447    static void _OverLayWork( void );       
      wpr_attrac   448    static void _OverLayDraw( void );
      wpr_attrac   449    
      wpr_attrac   450    /*================= */
      wpr_attrac   451    /* public functions */
      wpr_attrac   452    
      wpr_attrac   453  E int wpr_attract_ModuleInit( void ) {
P   00000000              _wpr_attract_ModuleInit:         ; function: wpr_attra
                        +                                  ct_ModuleInit
                                                           ; frame size=0
      wpr_attrac   454  E         return 1;
      wpr_attrac   455    }
    00000000 000B                   RTS
    00000002 E001                   MOV         #1,R0
      wpr_attrac   456    
      wpr_attrac   457    /* Call when you would like to make wpr_attract the ac
                         +tive wrapper module */
      wpr_attrac   458    /* loads up no artwork but resets all variables to the
                         +ir default values. */
      wpr_attrac   459    /* only needs to be called once at the beginning of at
                         +tract mode */
      wpr_attrac   460    void wpr_attract_Init( void ) {
    00000004              _wpr_attract_Init:               ; function: wpr_attra
                        +                                  ct_Init
                                                           ; frame size=12
    00000004 2FE6                   MOV.L       R14,@-R15
      wpr_attrac   461            
      wpr_attrac   462  E         _bLoadOk = 0;
    00000006 EE00                   MOV         #0,R14
    00000008 D33F                   MOV.L       L2562+4,R3 ; L2046
    0000000A 4F22                   STS.L       PR,@-R15
    0000000C 23E2                   MOV.L       R14,@R3
      wpr_attrac   463  E         _bActive = 0;
    0000000E D23F                   MOV.L       L2562+8,R2 ; L2045
    00000010 22E2                   MOV.L       R14,@R2
      wpr_attrac   464            _StageNum = WPR_ATTRACT_ENTER;
    00000012 D13F                   MOV.L       L2562+12,R1; L2041
      wpr_attrac   465            /* clear out all old memory */
      wpr_attrac   466            wpr_memmgr_FreeNonCommonStuff();
    00000014 D33F                   MOV.L       L2562+16,
                        +                                  R3; _wpr_memmgr_FreeNonC
                        +                                  ommonStuff
    00000016 430B                   JSR         @R3
    00000018 21E2                   MOV.L       R14,@R1
      wpr_attrac   467    
      wpr_attrac   468  E         _pJoinNetGame = 0;
    0000001A D23F                   MOV.L       L2562+20,R2; L2047
      wpr_attrac   469  E         _pCurStaticScreen = 0;
      wpr_attrac   470  E         _bReleaseWorldObs = 0;
      wpr_attrac   471            _nFrameCount = 0;
      wpr_attrac   472    
      wpr_attrac   473            /* start the attract music */
      wpr_attrac   474  E         audio_Trigger( 330 , 90, 0, AUDIO_TYPE_MUSIC, 
                         +AUDIO_PRIORITY_MUSIC );
    0000001C 66E3                   MOV         R14,R6
    0000001E 67E3                   MOV         R14,R7
    00000020 22E2                   MOV.L       R14,@R2
    00000022 D33E                   MOV.L       L2562+24,R3; L2048
    00000024 23E2                   MOV.L       R14,@R3
    00000026 E37F                   MOV         #127,R3
    00000028 D13D                   MOV.L       L2562+28,R1; L2050
    0000002A 21E2                   MOV.L       R14,@R1
    0000002C D23D                   MOV.L       L2562+32,R2; L2052
    0000002E 22E2                   MOV.L       R14,@R2
    00000030 2F36                   MOV.L       R3,@-R15
    00000032 9467                   MOV.W       L2562,R4   ; H'014A
    00000034 D13C                   MOV.L       L2562+36,R1; _audio_Trigger
    00000036 410B                   JSR         @R1
    00000038 E55A                   MOV         #90,R5
      wpr_attrac   475    }
    0000003A 7F04                   ADD         #4,R15
    0000003C 4F26                   LDS.L       @R15+,PR
    0000003E 000B                   RTS
    00000040 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   476    
      wpr_attrac   477    /* call before leaving the attract module */
      wpr_attrac   478    void wpr_attract_Close( void ) {
    00000042              _wpr_attract_Close:              ; function: wpr_attra
                        +                                  ct_Close
                                                           ; frame size=4
      wpr_attrac   479            if( _bLoadOk ) {
    00000042 D431                   MOV.L       L2562+4,R4 ; L2046
    00000044 4F22                   STS.L       PR,@-R15
    00000046 6342                   MOV.L       @R4,R3
    00000048 2338                   TST         R3,R3
    0000004A 8905                   BT          L2393
      wpr_attrac   480  E                 _bLoadOk = 0;
      wpr_attrac   481                    wpr_hiscore_Close();
    0000004C D237                   MOV.L       L2562+40,R2; _wpr_hiscore_Close
    0000004E E300                   MOV         #0,R3
    00000050 420B                   JSR         @R2
    00000052 2432                   MOV.L       R3,@R4
      wpr_attrac   482                    _EndDemoMode();
    00000054 A43A                   BRA         L2055
    00000056 4F26                   LDS.L       @R15+,PR
    00000058              L2393:                            
      wpr_attrac   483            }
      wpr_attrac   484    }
    00000058 4F26                   LDS.L       @R15+,PR
    0000005A 000B                   RTS
    0000005C 0009                   NOP
      wpr_attrac   485    
      wpr_attrac   486    /* loads a particular stage of attract mode, if we are
                         + loading */
      wpr_attrac   487    /* a static stage we release a allocated memory first,
                         + if we are */
      wpr_attrac   488    /* loading an active stage we will simply load the sta
                         +ge and not */
      wpr_attrac   489    /* free any memory. */
      wpr_attrac   490    /* if the load fails, we will use the old text based s
                         +ystem */
      wpr_attrac   491    void wpr_attract_LoadStage( WprAttractStage_t StageNum
                         + ) {
    0000005E              _wpr_attract_LoadStage:          ; function: wpr_attra
                        +                                  ct_LoadStage
                                                           ; frame size=32
    0000005E 2FE6                   MOV.L       R14,@-R15
      wpr_attrac   492            
      wpr_attrac   493  E         if( (!(StageNum < WPR_ATTRACT_STAGE_COUNT)) ) 
                         +gerr_Assert( StageNum < WPR_ATTRACT_STAGE_COUNT, "wpr_
                         +attract.c", 493 );
    00000060 E31A                   MOV         #26,R3
    00000062 2FD6                   MOV.L       R13,@-R15
    00000064 2FC6                   MOV.L       R12,@-R15
    00000066 6C43                   MOV         R4,R12
    00000068 2FB6                   MOV.L       R11,@-R15
    0000006A 3C33                   CMP/GE      R3,R12
    0000006C 2FA6                   MOV.L       R10,@-R15
    0000006E 2F96                   MOV.L       R9,@-R15
    00000070 4F22                   STS.L       PR,@-R15
    00000072 7FFC                   ADD         #-4,R15
    00000074 8B07                   BF          L2394
    00000076 3C33                   CMP/GE      R3,R12
    00000078 D12E                   MOV.L       L2562+48,R1; _gerr_Assert
    0000007A 0429                   MOVT        R4
    0000007C D52C                   MOV.L       L2562+44,R5; L2071
    0000007E 9642                   MOV.W       L2562+2,R6 ; H'01ED
    00000080 74FF                   ADD         #-1,R4
    00000082 410B                   JSR         @R1
    00000084 644B                   NEG         R4,R4
    00000086              L2394:                            
      wpr_attrac   494    
      wpr_attrac   495            _nR = _StageInfo[StageNum].nR;
    00000086 6EC3                   MOV         R12,R14
    00000088 4E08                   SHLL2       R14
    0000008A 63C3                   MOV         R12,R3
    0000008C 3E3C                   ADD         R3,R14
    0000008E 4E08                   SHLL2       R14
    00000090 DD29                   MOV.L       L2562+52,R13; L2022
    00000092 6EEF                   EXTS.W      R14,R14
    00000094 D329                   MOV.L       L2562+56,R3; L2042
    00000096 64E3                   MOV         R14,R4
    00000098 34DC                   ADD         R13,R4
    0000009A 8443                   MOV.B       @(3,R4),R0
      wpr_attrac   496            _nG = _StageInfo[StageNum].nG;
      wpr_attrac   497            _nB = _StageInfo[StageNum].nB;
      wpr_attrac   498    
      wpr_attrac   499  E         _bLoadOk = 0;
    0000009C E900                   MOV         #0,R9
    0000009E 600C                   EXTU.B      R0,R0
    000000A0 2302                   MOV.L       R0,@R3
    000000A2 8444                   MOV.B       @(4,R4),R0
    000000A4 D226                   MOV.L       L2562+60,R2; L2043
    000000A6 600C                   EXTU.B      R0,R0
    000000A8 2202                   MOV.L       R0,@R2
    000000AA 8445                   MOV.B       @(5,R4),R0
    000000AC D325                   MOV.L       L2562+64,R3; L2044
    000000AE 600C                   EXTU.B      R0,R0
    000000B0 2302                   MOV.L       R0,@R3
    000000B2 DB15                   MOV.L       L2562+4,R11; L2046
    000000B4 2B92                   MOV.L       R9,@R11
      wpr_attrac   500            
      wpr_attrac   501            /* if the requested load is not active, free a
                         +ll memory and then load our screen */
      wpr_attrac   502  E         if( !(_StageInfo[StageNum].nFlags & ( 0x1 | 0x
                         +2 | 0x4 )) ) {
    000000B6 6040                   MOV.B       @R4,R0
    000000B8 600C                   EXTU.B      R0,R0
    000000BA C807                   TST         #7,R0
    000000BC 8F46                   BF/S        L2395
    000000BE EA01                   MOV         #1,R10
      wpr_attrac   503                    wpr_hiscore_Close();
    000000C0 D11A                   MOV.L       L2562+40,R1; _wpr_hiscore_Close
    000000C2 410B                   JSR         @R1
    000000C4 0009                   NOP
      wpr_attrac   504                    _EndDemoMode();
    000000C6 B401                   BSR         L2055
    000000C8 0009                   NOP
      wpr_attrac   505                    wpr_memmgr_FreeNonCommonStuff();
    000000CA D212                   MOV.L       L2562+16,
                        +                                  R2; _wpr_memmgr_FreeNonC
                        +                                  ommonStuff
    000000CC 420B                   JSR         @R2
    000000CE 0009                   NOP
      wpr_attrac   506    
      wpr_attrac   507                    if( StageNum != WPR_ATTRACT_JOIN ) {
    000000D0 60C3                   MOV         R12,R0
    000000D2 0009                   NOP
    000000D4 880D                   CMP/EQ      #13,R0
    000000D6 890A                   BT          L2396
      wpr_attrac   508                            _pCurStaticScreen = obsys_Load
                         +( _StageInfo[StageNum].pszObName );
    000000D8 D31B                   MOV.L       L2562+68,R3; _obsys_Load
    000000DA 64E3                   MOV         R14,R4
    000000DC 34DC                   ADD         R13,R4
    000000DE 430B                   JSR         @R3
    000000E0 5442                   MOV.L       @(8,R4),R4
    000000E2 D20E                   MOV.L       L2562+24,R2; L2048
      wpr_attrac   509                            if( _pCurStaticScreen ) {
    000000E4 2008                   TST         R0,R0
    000000E6 8D67                   BT/S        L2400
    000000E8 2202                   MOV.L       R0,@R2
      wpr_attrac   510  E         
                      _bLoadOk = 1;
    000000EA A065                   BRA         L2400
    000000EC 2BA2                   MOV.L       R10,@R11
    000000EE              L2396:                            
      wpr_attrac   511                            }
      wpr_attrac   512                    } else {
      wpr_attrac   513                            /* load the join netgame stuff
                         + */
      wpr_attrac   514                            _pJoinNetGame = (Mesh3d_t *)ob
                         +sys_Load( _StageInfo[StageNum].pszObName );
    000000EE D316                   MOV.L       L2562+68,R3; _obsys_Load
    000000F0 64E3                   MOV         R14,R4
    000000F2 34DC                   ADD         R13,R4
    000000F4 430B                   JSR         @R3
    000000F6 5442                   MOV.L       @(8,R4),R4
    000000F8 D207                   MOV.L       L2562+20,R2; L2047
      wpr_attrac   515                            if( _pJoinNetGame ) {
    000000FA 2008                   TST         R0,R0
    000000FC 8D5C                   BT/S        L2400
    000000FE 2202                   MOV.L       R0,@R2
      wpr_attrac   516  E                                 _bLoadOk = 1;
    00000100 A05A                   BRA         L2400
    00000102 2BA2                   MOV.L       R10,@R11
    00000104              L2562:                            
    00000104 014A                   .DATA.W     H'014A
    00000106 01ED                   .DATA.W     H'01ED
    00000108 <00000000>             .DATA.L     L2046
    0000010C <00000000>             .DATA.L     L2045
    00000110 <00000000>             .DATA.L     L2041
    00000114 <00000000>             .DATA.L     _wpr_memmgr_FreeNonCommonStuff
    00000118 <00000000>             .DATA.L     L2047
    0000011C <00000000>             .DATA.L     L2048
    00000120 <00000000>             .DATA.L     L2050
    00000124 <00000000>             .DATA.L     L2052
    00000128 <00000000>             .DATA.L     _audio_Trigger
    0000012C <00000000>             .DATA.L     _wpr_hiscore_Close
    00000130 <00000000>             .DATA.L     L2071
    00000134 <00000000>             .DATA.L     _gerr_Assert
    00000138 <00000000>             .DATA.L     L2022
    0000013C <00000000>             .DATA.L     L2042
    00000140 <00000000>             .DATA.L     L2043
    00000144 <00000000>             .DATA.L     L2044
    00000148 <00000000>             .DATA.L     _obsys_Load
    0000014C              L2395:                            
    0000014C D542                   MOV.L       L2563+2,R5 ; L2052
    0000014E 64D3                   MOV         R13,R4
    00000150 60E3                   MOV         R14,R0
    00000152 0009                   NOP
    00000154 004C                   MOV.B       @(R0,R4),R0
    00000156 600C                   EXTU.B      R0,R0
    00000158 C802                   TST         #2,R0
    0000015A 8911                   BT          L2401
      wpr_attrac   517                            }
      wpr_attrac   518                    }
      wpr_attrac   519            } else {
      wpr_attrac   520                    /* the the requested load is active, j
                         +ust load it and don't free any memory */
      wpr_attrac   521                    
      wpr_attrac   522  E                 if( _StageInfo[StageNum].nFlags & 0x2 
                         +) {
      wpr_attrac   523                            _nFrameCount = 0;
      wpr_attrac   524                            terrain_Load( _StageInfo[Stage
                         +Num].pszObName, &CurWorld );
    0000015C 64E3                   MOV         R14,R4
    0000015E 2592                   MOV.L       R9,@R5
    00000160 34DC                   ADD         R13,R4
    00000162 D53E                   MOV.L       L2563+6,R5 ; L2049
    00000164 2F42                   MOV.L       R4,@R15
    00000166 D23E                   MOV.L       L2563+10,R2; _terrain_Load
    00000168 420B                   JSR         @R2
    0000016A 5442                   MOV.L       @(8,R4),R4
      wpr_attrac   525  E                         wpr_hiscore_Init( 0, _StageInf
                         +o[StageNum].nParm1, 0.0f, 0 );
    0000016C 65F2                   MOV.L       @R15,R5
    0000016E E600                   MOV         #0,R6
    00000170 D33C                   MOV.L       L2563+14,R3; _wpr_hiscore_Init
    00000172 8556                   MOV.W       @(12,R5),R0
    00000174 F48D                   FLDI0       FR4
    00000176 650D                   EXTU.W      R0,R5
    00000178 430B                   JSR         @R3
    0000017A 6463                   MOV         R6,R4
      wpr_attrac   526  E                         _bLoadOk = 1;
    0000017C A01C                   BRA         L2400
    0000017E 2BA2                   MOV.L       R10,@R11
    00000180              L2401:                            
      wpr_attrac   527  E                 } else if( _StageInfo[StageNum].nFlags
                         + & 0x1 ) { 
    00000180 34EC                   ADD         R14,R4
    00000182 6140                   MOV.B       @R4,R1
    00000184 611C                   EXTU.B      R1,R1
    00000186 21A8                   TST         R10,R1
    00000188 8916                   BT          L2400
      wpr_attrac   528                            _nFrameCount = 0;
      wpr_attrac   529                            _bLoadOk = _InitDemoMode( _Sta
                         +geInfo[StageNum].nParm1, _StageInfo[StageNum].pszObNam
                         +e, 
      wpr_attrac   530                                                          
                         +                  _StageInfo[StageNum].nParm2, _StageI
                         +nfo[StageNum].nParm3 );
    0000018A 6AE3                   MOV         R14,R10
    0000018C 3ADC                   ADD         R13,R10
    0000018E 2592                   MOV.L       R9,@R5
    00000190 85A8                   MOV.W       @(16,R10),R0
    00000192 55A2                   MOV.L       @(8,R10),R5
    00000194 6703                   MOV         R0,R7
    00000196 85A7                   MOV.W       @(14,R10),R0
    00000198 6603                   MOV         R0,R6
    0000019A 85A6                   MOV.W       @(12,R10),R0
    0000019C B206                   BSR         L2054
    0000019E 640D                   EXTU.W      R0,R4
      wpr_attrac   531                            _DemoModeCamera( StageNum, 0 )
                         +;
    000001A0 7F04                   ADD         #4,R15
    000001A2 2B02                   MOV.L       R0,@R11
    000001A4 4F26                   LDS.L       @R15+,PR
    000001A6 64C3                   MOV         R12,R4
    000001A8 E500                   MOV         #0,R5
    000001AA 69F6                   MOV.L       @R15+,R9
    000001AC 6AF6                   MOV.L       @R15+,R10
    000001AE 6BF6                   MOV.L       @R15+,R11
    000001B0 6CF6                   MOV.L       @R15+,R12
    000001B2 6DF6                   MOV.L       @R15+,R13
    000001B4 A4E8                   BRA         L2058
    000001B6 6EF6                   MOV.L       @R15+,R14
    000001B8              L2400:                            
      wpr_attrac   532                    }
      wpr_attrac   533            }
      wpr_attrac   534            
      wpr_attrac   535    /*      switch( StageNum )
      wpr_attrac   536            {
      wpr_attrac   537            case WPR_ATTRACT_ENTER:
      wpr_attrac   538                    
      wpr_attrac   539                    break;
      wpr_attrac   540            case WPR_ATTRACT_STAGE_1:
      wpr_attrac   541                    
      wpr_attrac   542                    break;
      wpr_attrac   543            case WPR_ATTRACT_STAGE_2:
      wpr_attrac   544                    
      wpr_attrac   545                    break;
      wpr_attrac   546            case WPR_ATTRACT_STAGE_3:
      wpr_attrac   547                    
      wpr_attrac   548                    break;
      wpr_attrac   549            case WPR_ATTRACT_STAGE_4:
      wpr_attrac   550                    
      wpr_attrac   551                    break;
      wpr_attrac   552            case WPR_ATTRACT_STAGE_5:
      wpr_attrac   553                    
      wpr_attrac   554                    break;
      wpr_attrac   555            case WPR_ATTRACT_STAGE_6:
      wpr_attrac   556                    
      wpr_attrac   557                    break;
      wpr_attrac   558            case WPR_ATTRACT_JOIN:
      wpr_attrac   559                    
      wpr_attrac   560                    break;
      wpr_attrac   561            default:
      wpr_attrac   562                    XASSERT_NOW;
      wpr_attrac   563                    break;
      wpr_attrac   564            }
      wpr_attrac   565    */
      wpr_attrac   566    }
    000001B8 7F04                   ADD         #4,R15
    000001BA 4F26                   LDS.L       @R15+,PR
    000001BC 69F6                   MOV.L       @R15+,R9
    000001BE 6AF6                   MOV.L       @R15+,R10
    000001C0 6BF6                   MOV.L       @R15+,R11
    000001C2 6CF6                   MOV.L       @R15+,R12
    000001C4 6DF6                   MOV.L       @R15+,R13
    000001C6 000B                   RTS
    000001C8 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   567    
      wpr_attrac   568    /* returns the current stage that attract mode is in *
                         +/
      wpr_attrac   569    WprAttractStage_t wpr_attract_GetCurrentStage( void ) 
                         +{
    000001CA              _wpr_attract_GetCurrentStage:    ; function: wpr_attra
                        +                                  ct_GetCurrentStage
                                                           ; frame size=0
      wpr_attrac   570            return _StageNum;
    000001CA D327                   MOV.L       L2563+18,R3; L2041
      wpr_attrac   571    }
    000001CC 000B                   RTS
    000001CE 6032                   MOV.L       @R3,R0
      wpr_attrac   572    
      wpr_attrac   573    /* returns the next stage that should be loaded, activ
                         +e or not */
      wpr_attrac   574    WprAttractStage_t wpr_attract_GetNextStage( void ) {
    000001D0              _wpr_attract_GetNextStage:       ; function: wpr_attra
                        +                                  ct_GetNextStage
                                                           ; frame size=0
      wpr_attrac   575    
      wpr_attrac   576            return ( _StageInfo[_StageNum].nNextStage );
    000001D0 D225                   MOV.L       L2563+18,R2; L2041
    000001D2 D126                   MOV.L       L2563+22,R1; H'00000001+L2022
    000001D4 6021                   MOV.W       @R2,R0
    000001D6 6303                   MOV         R0,R3
    000001D8 4008                   SHLL2       R0
    000001DA 303C                   ADD         R3,R0
    000001DC 4008                   SHLL2       R0
    000001DE 600F                   EXTS.W      R0,R0
    000001E0 001C                   MOV.B       @(R0,R1),R0
      wpr_attrac   577    }
    000001E2 000B                   RTS
    000001E4 600C                   EXTU.B      R0,R0
      wpr_attrac   578    
      wpr_attrac   579    /* returns the number of the next ACTIVE stage */
      wpr_attrac   580    WprAttractStage_t wpr_attract_GetNextActiveStage() {
    000001E6              _wpr_attract_GetNextActiveStage: ; function: wpr_attra
                        +                                  ct_GetNextActiveStage
                                                           ; frame size=0
      wpr_attrac   581    
      wpr_attrac   582            return ( _StageInfo[_StageNum].nNextActiveStag
                         +e );
    000001E6 D220                   MOV.L       L2563+18,R2; L2041
    000001E8 D121                   MOV.L       L2563+26,R1; H22
    000001EA 6021                   MOV.W       @R2,R0
    000001EC 6303                   MOV         R0,R3
    000001EE 4008                   SHLL2       R0
    000001F0 303C                   ADD         R3,R0
    000001F2 4008                   SHLL2       R0
    000001F4 600F                   EXTS.W      R0,R0
    000001F6 001C                   MOV.B       @(R0,R1),R0
      wpr_attrac   583    }
    000001F8 000B                   RTS
    000001FA 600C                   EXTU.B      R0,R0
      wpr_attrac   584    
      wpr_attrac   585    /* set the current stage */
      wpr_attrac   586    void wpr_attract_SetCurrentStage( WprAttractStage_t St
                         +ageNum ) {
    000001FC              _wpr_attract_SetCurrentStage:    ; function: wpr_attra
                        +                                  ct_SetCurrentStage
                                                           ; frame size=8
    000001FC 2FE6                   MOV.L       R14,@-R15
      wpr_attrac   587            
      wpr_attrac   588  E         if( (!(StageNum < WPR_ATTRACT_STAGE_COUNT)) ) 
                         +gerr_Assert( StageNum < WPR_ATTRACT_STAGE_COUNT, "wpr_
                         +attract.c", 588 );
    000001FE E31A                   MOV         #26,R3
    00000200 4F22                   STS.L       PR,@-R15
    00000202 6E43                   MOV         R4,R14
    00000204 3E33                   CMP/GE      R3,R14
    00000206 8B07                   BF          L2407
    00000208 3E33                   CMP/GE      R3,R14
    0000020A D11B                   MOV.L       L2563+34,R1; _gerr_Assert
    0000020C 0429                   MOVT        R4
    0000020E D519                   MOV.L       L2563+30,R5; L2071
    00000210 9621                   MOV.W       L2563,R6   ; H'024C
    00000212 74FF                   ADD         #-1,R4
    00000214 410B                   JSR         @R1
    00000216 644B                   NEG         R4,R4
    00000218            ì�‘³���������r¹ºËúQ�Ï+6Žkª�¬€6�Š‡¹a½�ên¶€•…�ŽG{v„ÕÞÊ™� À¦Í¤àáÔ–�l0ª*w²¼j�mfubº‘(ÿ$ÈüUìujnïP1з¬ë¶íUƒ¤ ŸDFór�ú�±�öÒ=;€×ßz²l‚/¿Ó̃+Ù,uK¡æó°Ð'0™Ù±¨ùÃı%'&ý
Kõç$Urk%uûQû
ˆÓ1…ófˆ?nU¤ç牆Öù�÷3¢¹Î�MnlÞß	ö×Ó֎Τg³TKq=�Æ[IV
Ì(€Û�ç�¼vÂj9¦ßŸ�hrMåÄ/¤£V�˸ Nµ=�Rú�Ô«°Éx;½š×^–£GI®µó0k•Çô5[n¬4w1	ñ‡2b�ÿÿÿÿÿÿÿÿÿÿ�©&��  L2407:                            
      wpr_attrac   589    
      wpr_attrac   590            _StageNum = StageNum;
    00000218 D513                   MOV.L       L2563+18,R5; L2041
    0000021A 25E2                   MOV.L       R14,@R5
    0000021C 60E3                   MOV         R14,R0
    0000021E 0009                   NOP
    00000220 4008                   SHLL2       R0
    00000222 63E3                   MOV         R14,R3
    00000224 303C                   ADD         R3,R0
    00000226 D115                   MOV.L       L2563+38,R1; L2022
    00000228 4008                   SHLL2       R0
      wpr_attrac   591            _bActive = wpr_attract_IsCurrentStageActive();
    0000022A D215                   MOV.L       L2563+42,R2; L2045
    0000022C 600F                   EXTS.W      R0,R0
    0000022E 001C                   MOV.B       @(R0,R1),R0
    00000230 E407                   MOV         #7,R4
      wpr_attrac   592    }
    00000232 4F26                   LDS.L       @R15+,PR
    00000234 600C                   EXTU.B      R0,R0
    00000236 2409                   AND         R0,R4
    00000238 2242                   MOV.L       R4,@R2
    0000023A 000B                   RTS
    0000023C 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   593    
      wpr_attrac   594    /* tells us whether we are currently in an active or s
                         +tatic stage */
      wpr_attrac   595  E int wpr_attract_IsCurrentStageActive( void ) {
    0000023E              _wpr_attract_IsCurrentStageActive:
                                                           ; function: wpr_attra
                        +                                  ct_IsCurrentStageActi
                        +                                  ve
                                                           ; frame size=0
      wpr_attrac   596    
      wpr_attrac   597  E         return ( _StageInfo[_StageNum].nFlags & ( 0x1 
                         +| 0x2 | 0x4 ) );
    0000023E D10A                   MOV.L       L2563+18,R1; L2041
    00000240 D20E                   MOV.L       L2563+38,R2; L2022
    00000242 6011                   MOV.W       @R1,R0
    00000244 6303                   MOV         R0,R3
    00000246 4008                   SHLL2       R0
    00000248 303C                   ADD         R3,R0
    0000024A 4008                   SHLL2       R0
    0000024C 600F                   EXTS.W      R0,R0
    0000024E 002C                   MOV.B       @(R0,R2),R0
    00000250 600C                   EXTU.B      R0,R0
      wpr_attrac   598    }
    00000252 000B                   RTS
    00000254 C907                   AND         #7,R0
    00000256              L2563:                            
    00000256 024C                   .DATA.W     H'024C
    00000258 <00000000>             .DATA.L     L2052
    0000025C <00000000>             .DATA.L     L2049
    00000260 <00000000>             .DATA.L     _terrain_Load
    00000264 <00000000>             .DATA.L     _wpr_hiscore_Init
    00000268 <00000000>             .DATA.L     L2041
    0000026C <00000001>             .DATA.L     H'00000001+L2022
    00000270 <00000002>             .DATA.L     H'00000002+L2022
    00000274 <00000000>             .DATA.L     L2071
    00000278 <00000000>             .DATA.L     _gerr_Assert
    0000027C <00000000>             .DATA.L     L2022
    00000280 <00000000>             .DATA.L     L2045
      wpr_attrac   599    
      wpr_attrac   600    void wpr_attract_Work( void ) {
    00000284              _wpr_attract_Work:               ; function: wpr_attra
                        +                                  ct_Work
                                                           ; frame size=0
      wpr_attrac   601            /* there is only work to do if we were able to
                         + load everything that we needed */
      wpr_attrac   602            if( _bLoadOk ) {
    00000284 D245                   MOV.L       L2564+2,R2 ; L2046
    00000286 6322                   MOV.L       @R2,R3
    00000288 2338                   TST         R3,R3
    0000028A 892F                   BT          L2409
    0000028C D144                   MOV.L       L2564+6,R1 ; L2041
    0000028E E407                   MOV         #7,R4
    00000290 6511                   MOV.W       @R1,R5
    00000292 6353                   MOV         R5,R3
    00000294 4508                   SHLL2       R5
    00000296 353C                   ADD         R3,R5
    00000298 D342                   MOV.L       L2564+10,R3; L2022
    0000029A 4508                   SHLL2       R5
    0000029C 655F                   EXTS.W      R5,R5
    0000029E 353C                   ADD         R3,R5
    000002A0 6050                   MOV.B       @R5,R0
    000002A2 600C                   EXTU.B      R0,R0
    000002A4 2409                   AND         R0,R4
    000002A6 2448                   TST         R4,R4
    000002A8 8920                   BT          L2409
      wpr_attrac   603                    /* only active screens have work to be
                         + done... */
      wpr_attrac   604                    if( wpr_attract_IsCurrentStageActive()
                         + ) {
      wpr_attrac   605  E                         if( _StageInfo[_StageNum].nFla
                         +gs & 0x2 ) {
    000002AA 6050                   MOV.B       @R5,R0
    000002AC D43E                   MOV.L       L2564+14,R4; L2052
    000002AE 600C                   EXTU.B      R0,R0
    000002B0 C802                   TST         #2,R0
    000002B2 8915                   BT          L2411
      wpr_attrac   606                                    ++_nFrameCount;
    000002B4 6242                   MOV.L       @R4,R2
    000002B6 7201                   ADD         #1,R2
      wpr_attrac   607                                    if( _nFrameCount == 29
                         +0 ) {
    000002B8 6123                   MOV         R2,R1
    000002BA 2422                   MOV.L       R2,@R4
    000002BC 936D                   MOV.W       L2564,R3   ; H'0122
    000002BE 3130                   CMP/EQ      R3,R1
    000002C0 8B0B                   BF          L2412
      wpr_attrac   608                                            wpr_hiscore_Sw
                         +itchDisplay2NewTrack( _StageInfo[_StageNum].nParm2 );
    000002C2 D037                   MOV.L       L2564+6,R0 ; L2041
    000002C4 6401                   MOV.W       @R0,R4
    000002C6 D039                   MOV.L       L2564+18,R0; H'0000000E+L2022
    000002C8 6243                   MOV         R4,R2
    000002CA 4408                   SHLL2       R4
    000002CC 342C                   ADD         R2,R4
    000002CE D238                   MOV.L       L2564+22,
                        +                                  R2; _wpr_hiscore_SwitchD
                        +                                  isplay2NewTrack
    000002D0 4408                   SHLL2       R4
    000002D2 644F                   EXTS.W      R4,R4
    000002D4 044D                   MOV.W       @(R0,R4),R4
    000002D6 422B                   JMP         @R2
    000002D8 644D                   EXTU.W      R4,R4
    000002DA              L2412:                            
      wpr_attrac   609                                    } else {
      wpr_attrac   610                                            wpr_hiscore_Wo
                         +rk();
    000002DA D236                   MOV.L       L2564+26,R2; _wpr_hiscore_Work
    000002DC 422B                   JMP         @R2
    000002DE 0009                   NOP
    000002E0              L2411:                            
      wpr_attrac   611                                    }
      wpr_attrac   612  E                         } else if( _StageInfo[_StageNu
                         +m].nFlags & 0x1 ) {
    000002E0 C801                   TST         #1,R0
    000002E2 8903                   BT          L2409
      wpr_attrac   613                   
                 ++_nFrameCount;
    000002E4 6242                   MOV.L       @R4,R2
    000002E6 7201                   ADD         #1,R2
      wpr_attrac   614                                    _DemoModeWork();      
    000002E8 A32A                   BRA         L2056
    000002EA 2422                   MOV.L       R2,@R4
    000002EC              L2409:                            
      wpr_attrac   615                            }
      wpr_attrac   616                    }
      wpr_attrac   617            }
      wpr_attrac   618    }
    000002EC 000B                   RTS
    000002EE 0009                   NOP
      wpr_attrac   619    
      wpr_attrac   620    void wpr_attract_Draw( f32 fTime ) {
    000002F0              _wpr_attract_Draw:               ; function: wpr_attra
                        +                                  ct_Draw
                                                           ; frame size=24
    000002F0 2FE6                   MOV.L       R14,@-R15
    000002F2 2FD6                   MOV.L       R13,@-R15
    000002F4 FFFB                   FMOV.S      FR15,@-R15
    000002F6 FFEB                   FMOV.S      FR14,@-R15
      wpr_attrac   621            if( !_bLoadOk ) {
    000002F8 D128                   MOV.L       L2564+2,R1 ; L2046
    000002FA 4F22                   STS.L       PR,@-R15
    000002FC 6312                   MOV.L       @R1,R3
    000002FE 2338                   TST         R3,R3
    00000300 7FFC                   ADD         #-4,R15
    00000302 8B06                   BF          L2416
      wpr_attrac   622                    _DrawOldTextSystem( fTime );    
    00000304 7F04                   ADD         #4,R15
    00000306 4F26                   LDS.L       @R15+,PR
    00000308 FEF9                   FMOV.S      @R15+,FR14
    0000030A FFF9                   FMOV.S      @R15+,FR15
    0000030C 6DF6                   MOV.L       @R15+,R13
    0000030E A0B4                   BRA         L2053
    00000310 6EF6                   MOV.L       @R15+,R14
    00000312              L2416:                            
    00000312 D323                   MOV.L       L2564+6,R3 ; L2041
    00000314 DD23                   MOV.L       L2564+10,R13; L2022
    00000316 6732                   MOV.L       @R3,R7
    00000318 6073                   MOV         R7,R0
    0000031A 0009                   NOP
    0000031C 4008                   SHLL2       R0
    0000031E 6273                   MOV         R7,R2
    00000320 302C                   ADD         R2,R0
    00000322 4008                   SHLL2       R0
    00000324 600F                   EXTS.W      R0,R0
    00000326 00DC                   MOV.B       @(R0,R13),R0
    00000328 600C                   EXTU.B      R0,R0
    0000032A C907                   AND         #7,R0
    0000032C 2F02                   MOV.L       R0,@R15
    0000032E D322                   MOV.L       L2564+30,R3; L2048
    00000330 D222                   MOV.L       L2564+34,R2; L2044
    00000332 D123                   MOV.L       L2564+38,R1; L2043
    00000334 6622                   MOV.L       @R2,R6
    00000336 6203                   MOV         R0,R2
    00000338 6432                   MOV.L       @R3,R4
    0000033A 2228                   TST         R2,R2
    0000033C 6512                   MOV.L       @R1,R5
    0000033E D321                   MOV.L       L2564+42,R3; L2042
    00000340 74FC                   ADD         #-4,R4
    00000342 FF8D                   FLDI0       FR15
    00000344 8F4C                   BF/S        L2418
    00000346 6E32                   MOV.L       @R3,R14
      wpr_attrac   623            } else {
      wpr_attrac   624                    /* current stage is not active, just b
                         +lit the image to the screen */
      wpr_attrac   625                    if( !wpr_attract_IsCurrentStageActive(
                         +) ) {
      wpr_attrac   626                            if( _StageNum != WPR_ATTRACT_J
                         +OIN ) {
    00000348 6073                   MOV         R7,R0
    0000034A 0009                   NOP
    0000034C 880D                   CMP/EQ      #13,R0
    0000034E 8909                   BT          L2419
      wpr_attrac   627                                    blit_Raw( _pCurStaticS
                         +creen-sizeof(u32), 0, 0 );
    00000350 7F04                   ADD         #4,R15
    00000352 D21D                   MOV.L       L2564+46,R2; _blit_Raw
    00000354 4F26                   LDS.L       @R15+,PR
    00000356 E600                   MOV         #0,R6
    00000358 6563                   MOV         R6,R5
    0000035A FEF9                   FMOV.S      @R15+,FR14
    0000035C FFF9                   FMOV.S      @R15+,FR15
    0000035E 6DF6                   MOV.L       @R15+,R13
    00000360 422B                   JMP         @R2
    00000362 6EF6                   MOV.L       @R15+,R14
    00000364              L2419:                            
      wpr_attrac   628                            } else {
      wpr_attrac   629                                    /* clear the frame buf
                         +fer... */
      wpr_attrac   630                                    gutil_ClearFrameBuffer
                         +3( _nR, _nG, _nB );
    00000364 D219                   MOV.L       L2564+50,
                        +                                  R2; _gutil_ClearFrameBuf
                        +                                  fer3
    00000366 420B                   JSR         @R2
    00000368 64E3                   MOV         R14,R4
      wpr_attrac   631                                    
      wpr_attrac   632                                    /* draw the shadow of 
                         +the screen shot window */
      wpr_attrac   633                                    mesh3d_SetOrthoEffects
                         +( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
    0000036A D319                   MOV.L       L2564+54,
                        +                                  R3; _mesh3d_SetOrthoEffe
                        +                                  cts
    0000036C FE9D                   FLDI1       FR14
    0000036E F5EC                   FMOV.S      FR14,FR5
    00000370 F6EC                   FMOV.S      FR14,FR6
    00000372 F8FC                   FMOV.S      FR15,FR8
    00000374 F7EC                   FMOV.S      FR14,FR7
    00000376 430B                   JSR         @R3
    00000378 F4EC                   FMOV.S      FR14,FR4
      wpr_attrac   634  E                                 mesh3d_DrawOrtho( _pJo
                         +inNetGame, 0.0f, 0.0f, 32000.0f, 0, 1.0f );
    0000037A 7F04                   ADD         #4,R15
    0000037C F7EC                   FMOV.S      FR14,FR7
    0000037E 4F26                   LDS.L       @R15+,PR
    00000380 F4FC                   FMOV.S      FR15,FR4
    00000382 C714                   MOVA        L2564+58,R0
    00000384 F5FC                   FMOV.S      FR15,FR5
    00000386 E500                   MOV         #0,R5
    00000388 FEF9                   FMOV.S      @R15+,FR14
    0000038A D313                   MOV.L       L2564+62,R3; L2047
    0000038C FFF9                   FMOV.S      @R15+,FR15
    0000038E D213                   MOV.L       L2564+66,R2; _mesh3d_DrawOrtho
    00000390 6DF6                   MOV.L       @R15+,R13
    00000392 F608                   FMOV.S      @R0,FR6
    00000394 6432                   MOV.L       @R3,R4
    00000396 422B                   JMP         @R2
    00000398 6EF6                   MOV.L       @R15+,R14
    0000039A              L2564:                            
    0000039A 0122                   .DATA.W     H'0122
    0000039C <00000000>             .DATA.L     L2046
    000003A0 <00000000>             .DATA.L     L2041
    000003A4 <00000000>             .DATA.L     L2022
    000003A8 <00000000>             .DATA.L     L2052
    000003AC <0000000E>             .DATA.L     H2022
    000003B0 <00000000>             .DATA.L     _wpr_hiscore_SwitchDisplay2NewTr
                        +                       ack
    000003B4 <00000000>             .DATA.L     _wpr_hiscore_Work
    000003B8 <00000000>             .DATA.L     L2048
    000003BC <00000000>             .DATA.L     L2044
    000003C0 <00000000>             .DATA.L     L2043
    000003C4 <00000000>             .DATA.L     L2042
    000003C8 <00000000>             .DATA.L     _blit_Raw
    000003CC <00000000>             .DATA.L     _gutil_ClearFrameBuffer3
    000003D0 <00000000>             .DATA.L     _mesh3d_SetOrthoEffects
    000003D4 46FA0000               .DATA.L     H'46FA0000
    000003D8 <00000000>             .DATA.L     L2047
    000003DC <00000000>             .DATA.L     _mesh3d_DrawOrtho
    000003E0              L2418:                            
      wpr_attrac   635                            }
      wpr_attrac   636                    } else {        /* the current stage i
                         +s active... */
      wpr_attrac   637                            /* let hiscore draw its stuff 
                         +if it is the active stage */
      wpr_attrac   638  E                         if( _StageInfo[_StageNum].nFla
                         +gs & 0x2 ) {
    000003E0 6073                   MOV         R7,R0
    000003E2 0009                   NOP
    000003E4 4008                   SHLL2       R0
    000003E6 6273                   MOV         R7,R2
    000003E8 302C                   ADD         R2,R0
    000003EA 4008                   SHLL2       R0
    000003EC 600F                   EXTS.W      R0,R0
    000003EE 00DC                   MOV.B       @(R0,R13),R0
    000003F0 600C                   EXTU.B      R0,R0
    000003F2 C802                   TST         #2,R0
    000003F4 8908                   BT          L2422
      wpr_attrac   639                                    wpr_hiscore_Draw( 0.0f
                         + );
    000003F6 7F04                   ADD         #4,R15
    000003F8 F4FC                   FMOV.S      FR15,FR4
    000003FA 4F26                   LDS.L       @R15+,PR
    000003FC D24F                   MOV.L       L2565,R2   ; _wpr_hiscore_Draw
    000003FE FEF9                   FMOV.S      @R15+,FR14
    00000400 FFF9                   FMOV.S      @R15+,FR15
    00000402 6DF6                   MOV.L       @R15+,R13
    00000404 422B                   JMP         @R2
    00000406 6EF6                   MOV.L       @R15+,R14
    00000408              L2422:                            
      wpr_attrac   640  E                         } else if( _StageInfo[_StageNu
                         +m].nFlags & 0x1 ) {
    00000408 6073                   MOV         R7,R0
    0000040A 0009                   NOP
    0000040C 4008                   SHLL2       R0
    0000040E 6273                   MOV         R7,R2
    00000410 302C                   ADD         R2,R0
    00000412 4008                   SHLL2       R0
    00000414 600F                   EXTS.W      R0,R0
    00000416 00DC                   MOV.B       @(R0,R13),R0
    00000418 600C                   EXTU.B      R0,R0
    0000041A C801                   TST         #1,R0
    0000041C 8919                   BT          L2424
      wpr_attrac   641                                    /* just draw the last 
                         +static screen until we are up and running... */
      wpr_attrac   642  E                                 if( _nFrameCount < 13 
                         +) {
    0000041E D348                   MOV.L       L2565+4,R3 ; L2052
    00000420 E20D                   MOV         #13,R2
    00000422 6032                   MOV.L       @R3,R0
    00000424 3022                   CMP/HS      R2,R0
    00000426 890D                   BT          L2425
      wpr_attrac   643                                            blit_Raw( _pCu
                         +rStaticScreen-sizeof(u32), 0, 0 );
    00000428 D346                   MOV.L
    0000042A E600                   MOV         #0,R6
    0000042C 430B                   JSR         @R3
    0000042E 6563                   MOV         R6,R5
      wpr_attrac   644                                            _DemoModeCamer
                         +a( _StageNum, 2 );
    00000430 7F04                   ADD         #4,R15
    00000432 D245                   MOV.L       L2565+12,R2; L2041
    00000434 4F26                   LDS.L       @R15+,PR
    00000436 6422                   MOV.L       @R2,R4
    00000438 E502                   MOV         #2,R5
    0000043A FEF9                   FMOV.S      @R15+,FR14
    0000043C FFF9                   FMOV.S      @R15+,FR15
    0000043E 6DF6                   MOV.L       @R15+,R13
    00000440 A3A2                   BRA         L2058
    00000442 6EF6                   MOV.L       @R15+,R14
    00000444              L2425:                            
      wpr_attrac   645                                    } else {
      wpr_attrac   646                                            _DemoModeDraw(
                         +);
    00000444 7F04                   ADD         #4,R15
    00000446 4F26                   LDS.L       @R15+,PR
    00000448 FEF9                   FMOV.S      @R15+,FR14
    0000044A FFF9                   FMOV.S      @R15+,FR15
    0000044C 6DF6                   MOV.L       @R15+,R13
    0000044E A335                   BRA         L2057
    00000450 6EF6                   MOV.L       @R15+,R14
    00000452              L2424:                            
      wpr_attrac   647                                    }
      wpr_attrac   648                            } else {
      wpr_attrac   649                                    /* clear the frame buf
                         +fer... */
      wpr_attrac   650                                    gutil_ClearFrameBuffer
                         +3( _nR, _nG, _nB );
    00000452 7F04                   ADD         #4,R15
    00000454 D23D                   MOV.L       L2565+16,
                        +                                  R2; _gutil_ClearFrameBuf
                        +                                  fer3
    00000456 4F26                   LDS.L       @R15+,PR
    00000458 64E3                   MOV         R14,R4
    0000045A FEF9                   FMOV.S      @R15+,FR14
    0000045C FFF9                   FMOV.S      @R15+,FR15
    0000045E 6DF6                   MOV.L       @R15+,R13
    00000460 422B                   JMP         @R2
    00000462 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   651                            }
      wpr_attrac   652                    }
      wpr_attrac   653            } 
      wpr_attrac   654    }
      wpr_attrac   655    
      wpr_attrac   656    u32 wpr_attract_GetCurrentStageTimeLimit( void ) {
    00000464              _wpr_attract_GetCurrentStageTimeLimit:
                                                           ; function: wpr_attra
                        +                                  ct_GetCurrentStageTim
                        +                                  eLimit
                                                           ; frame size=0
      wpr_attrac   657            
      wpr_attrac   658            return ( _StageInfo[_StageNum].nTimeInStage );
    00000464 D238                   MOV.L       L2565+12,R2; L2041
    00000466 D13A                   MOV.L       L2565+20,R1; H'00000006+L2022
    00000468 6021                   MOV.W       @R2,R0
    0000046A 6303                   MOV         R0,R3
    0000046C 4008                   SHLL2       R0
    0000046E 303C                   ADD         R3,R0
    00000470 4008                   SHLL2       R0
    00000472 600F                   EXTS.W      R0,R0
    00000474 001D                   MOV.W       @(R0,R1),R0
      wpr_attrac   659    }
    00000476 000B                   RTS
    00000478 600D                   EXTU.W      R0,R0
      wpr_attrac   660
      wpr_attrac   661    /*================== */
      wpr_attrac   662    /* private functions */
      wpr_attrac   663    
      wpr_attrac   664    static void _DrawOldTextSystem( f32 fTime ) {
    0000047A              L2053:                           ; function: _DrawOldT
                        +                                  extSystem
                                                           ; frame size=32
    0000047A 2FE6                   MOV.L       R14,@-R15
    0000047C 2FD6                   MOV.L       R13,@-R15
    0000047E 2FC6                   MOV.L       R12,@-R15
    00000480 FFFB                   FMOV.S      FR15,@-R15
    00000482 4F22                   STS.L       PR,@-R15
    00000484 7FFC                   ADD         #-4,R15
    00000486 FF4A                   FMOV.S      FR4,@R15
      wpr_attrac   665            /* clear the frame buffer */
      wpr_attrac   666            gutil_ClearFrameBuffer3( _nR, _nG, _nB );
    00000488 D332                   MOV.L       L2565+24,R3; L2044
    0000048A D233                   MOV.L       L2565+28,R2; L2043
    0000048C 6632                   MOV.L       @R3,R6
    0000048E 6522                   MOV.L       @R2,R5
    00000490 D132                   MOV.L       L2565+32,R1; L2042
    00000492 D32E                   MOV.L       L2565+16,
                        +                                  R3; _gutil_ClearFrameBuf
                        +                                  fer3
    00000494 430B                   JSR         @R3
    00000496 6412                   MOV.L       @R1,R4
      wpr_attrac   667            
      wpr_attrac   668            /* for join mode, draw something a little diff
                         +erent */
      wpr_attrac   669            if( _StageNum == WPR_ATTRACT_JOIN ) {
    00000498 D22B                   MOV.L       L2565+12,R2; L2041
    0000049A DE33                   MOV.L       L2565+44,R14; _text_SetFont
    0000049C 6022                   MOV.L       @R2,R0
    0000049E DC30                   MOV.L       L2565+36,R12; _text_PrintStr
    000004A0 DD30                   MOV.L       L2565+40,R13; _Text_fScale
    000004A2 880D                   CMP/EQ      #13,R0
    000004A4 8B0D                   BF          L2429
      wpr_attrac   670                    text_SetFont( TEXT_FONT_LARGE );
    000004A6 4E0B                   JSR         @R14
    000004A8 E400                   MOV         #0,R4
      wpr_attrac   671                    Text_fScale = 1.25f;
    000004AA C730                   MOVA        L2565+48,R0
    000004AC F308                   FMOV.S      @R0,FR3
      wpr_attrac   672                    text_PrintStr( 75.0f, 150.0f, "Join Ne
                         +twork Game\n" );
    000004AE C731                   MOVA        L2565+56,R0
    000004B0 FD3A                   FMOV.S      FR3,@R13
    000004B2 F508                   FMOV.S      @R0,FR5
    000004B4 C730                   MOVA        L2565+60,R0
    000004B6 D42E                   MOV.L       L2565+52,R4; L2110
    000004B8 4C0B                   JSR         @R12
    000004BA F408                   FMOV.S      @R0,FR4
      wpr_attrac   673                    Text_fScale = 1.0f;
    000004BC F39D                   FLDI1       FR3
    000004BE A036                   BRA         L2430
    000004C0 FD3A                   FMOV.S      FR3,@R13
    000004C2              L2429:                            
      wpr_attrac   674            } else { /* all other stages... */
      wpr_attrac   675                    /* draw the stage number */
      wpr_attrac   676                    text_SetFont( TEXT_FONT_LARGE );
    000004C2 4E0B                   JSR         @R14
    000004C4 E400                   MOV         #0,R4
      wpr_attrac   677                    Text_fScale = 1.20f;
    000004C6 C72D                   MOVA        L2565+64,R0
    000004C8 F308                   FMOV.S      @R0,FR3
      wpr_attrac   678                    text_PrintStr( 25.0f, 15.0f, "ATTRACT 
                         +MODE\n" );
    000004CA C72D                   MOVA        L2565+68,R0
    000004CC FD3A                   FMOV.S      FR3,@R13
    000004CE FF08                   FMOV.S      @R0,FR15
    000004D0 C72D                   MOVA        L2565+76,R0
    000004D2 F508                   FMOV.S      @R0,FR5
    000004D4 D42B                   MOV.L       L2565+72,R4; L2112
    000004D6 4C0B                   JSR         @R12
    000004D8 F4FC                   FMOV.S      FR15,FR4
      wpr_attrac   679                    Text_fScale = 1.0f;
      wpr_attrac   680                    text_PrintF( 25.0f, 75.0f, "Stage numb
                         +er %d\n", _StageNum );
    000004DA C727                   MOVA        L2565+60,R0
    000004DC F39D                   FLDI1       FR3
    000004DE FD3A                   FMOV.S      FR3,@R13
    000004E0 D219                   MOV.L       L2565+12,R2; L2041
    000004E2 6322                   MOV.L       @R2,R3
    000004E4 2F36                   MOV.L       R3,@-R15
    000004E6 D129                   MOV.L       L2565+80,R1; L2113
    000004E8 2F16                   MOV.L       R1,@-R15
    000004EA F508                   FMOV.S      @R0,FR5
    000004EC D328                   MOV.L       L2565+84,R3; _text_PrintF
    000004EE 430B                   JSR         @R3
    000004F0 F4FC                   FMOV.S      FR15,FR4
      wpr_attrac   681    
      wpr_attrac   682                    /* if this is an active page go ahead 
                         +and print the time */
      wpr_attrac   683                    if( _bActive ) {
    000004F2 D328                   MOV.L       L2565+88,R3; L2045
    000004F4 6232                   MOV.L       @R3,R2
    000004F6 2228                   TST         R2,R2
    000004F8 8D0D                   BT/S        L2431
    000004FA 7F08                   ADD         #8,R15
      wpr_attrac   684                            text_SetFont( TEXT_FONT_SMALL 
                         +);
    000004FC 4E0B                   JSR         @R14
    000004FE E401                   MOV         #1,R4
      wpr_attrac   685                            text_PrintF( 25.0f, 110.0f, "T
                         +ime (secs) %f\n", fTime );
    00000500 F3F8                   FMOV.S      @R15,FR3
    00000502 C726                   MOVA        L2565+96,R0
    00000504 FF3B                   FMOV.S      FR3,@-R15
    00000506 D324                   MOV.L       L2565+92,R3; L2115
    00000508 2F36                   MOV.L       R3,@-R15
    0000050A F508                   FMOV.S      @R0,FR5
    0000050C D220                   MOV.L       L2565+84,R2; _text_PrintF
    0000050E 420B                   JSR         @R2
    00000510 F4FC                   FMOV.S      FR15,FR4
    00000512 A00C                   BRA         L2430
    00000514 7F08                   ADD         #8,R15
    00000516              L2431:                            
      wpr_attrac   686                    } else {
      wpr_attrac   687                            text_SetFont( TEXT_FONT_SMALL 
                         +);
    00000516 4E0B                   JSR         @R14
    00000518 E401                   MOV         #1,R4
      wpr_attrac   688                            text_PrintStr( 25.0f, 110.0f, 
                         +"Static screen here.\n" );      
    0000051A C720                   MOVA        L2565+96,R0
    0000051C D420                   MOV.L       L2565+100,R4; L2117
    0000051E F508                   FMOV.S      @R0,FR5
    00000520 4C0B                   JSR         @R12
    00000522 F4FC                   FMOV.S      FR15,FR4
      wpr_attrac   689                            text_PrintStr( 25.0f, 145.0f, 
                         +"Waiting to sync up.\n" );      
    00000524 C720                   MOVA        L2565+108,R0
    00000526 D41F                   MOV.L       L2565+104,R4; L2118
    00000528 F508                   FMOV.S      @R0,FR5
    0000052A 4C0B                   JSR         @R12
    0000052C F4FC                   FMOV.S      FR15,FR4
    0000052E              L2430:                            
      wpr_attrac   690                    }
      wpr_attrac   691            }
      wpr_attrac   692    }
    0000052E 7F04                   ADD         #4,R15
    00000530 4F26                   LDS.L       @R15+,PR
    00000532 FFF9                   FMOV.S      @R15+,FR15
    00000534 6CF6                   MOV.L       @R15+,R12
    00000536 6DF6                   MOV.L       @R15+,R13
    00000538 000B                   RTS
    0000053A 6EF6                   MOV.L       @R15+,R14
    0000053C              L2565:                            
    0000053C <00000000>             .DATA.L     _wpr_hiscore_Draw
    00000540 <00000000>             .DATA.L     L2052
    00000544 <00000000>             .DATA.L     _blit_Raw
    00000548 <00000000>             .DATA.L     L2041
    0000054C <00000000>             .DATA.L     _gutil_ClearFrameBuffer3
    00000550 <00000006>             .DATA.L     H'00000006+L2022
    00000554 <00000000>             .DATA.L     L2044
    00000558 <00000000>             .DATA.L     L2043
    0000055C <00000000>             .DATA.L     L2042
    00000560 <00000000>             .DATA.L     _text_PrintStr
    00000564 <00000000>             .DATA.L     _Text_fScale
    00000568 <00000000>             .DATA.L     _text_SetFont
    0000056C 3FA00000               .DATA.L     H'3FA00000
    00000570 <00000000>             .DATA.L     L2110
    00000574 43160000               .DATA.L     H'43160000
    00000578 42960000               .DATA.L     H'42960000
    0000057C 3F999999               .DATA.L     H'3F999999
    00000580 41C80000               .DATA.L     H'41C80000
    00000584 <00000000>             .DATA.L     L2112
    00000588 41700000               .DATA.L     H'41700000
    0000058C <00000000>             .DATA.L     L2113
    00000590 <00000000>             .DATA.L     _text_PrintF
    00000594 <000000000>             .DATA.L     L2045
    00000598 <00000000>             .DATA.L     L2115
    0000059C 42DC0000               .DATA.L     H'42DC0000
    000005A0 <00000000>             .DATA.L     L2117
    000005A4 <00000000>             .DATA.L     L2118
    000005A8 43110000               .DATA.L     H'43110000
      wpr_attrac   693    
      wpr_attrac   694  E static int _InitDemoMode( u32 nTrack, char *pszObName,
                         + u16 nStartPosOffset, u16 nAiOffSet ) {
    000005AC              L2054:                           ; function: _InitDemo
                        +                                  Mode
                                                           ; frame size=52
    000005AC 2FE6                   MOV.L       R14,@-R15
    000005AE 6E43                   MOV         R4,R14
    000005B0 2FD6                   MOV.L       R13,@-R15
    000005B2 2FC6                   MOV.L       R12,@-R15
    000005B4 2FB6                   MOV.L       R11,@-R15
    000005B6 2FA6                   MOV.L       R10,@-R15
    000005B8 2F96                   MOV.L       R9,@-R15
    000005BA 2F86                   MOV.L       R8,@-R15
    000005BC 4F22                   STS.L       PR,@-R15
    000005BE 7FF4                   ADD         #-12,R15
    000005C0 2F52                   MOV.L       R5,@R15
    000005C2 6063                   MOV         R6,R0
    000005C4 0009                   NOP
      wpr_attrac   695            u32 i;
      wpr_attrac   696    
      wpr_attrac   697  E         if( (!(nTrack < TRACKS_COUNT)) ) gerr_Assert( 
                         +nTrack < TRACKS_COUNT, "wpr_attract.c", 697 );
    000005C6 E30A                   MOV         #10,R3
    000005C8 81F2                   MOV.W       R0,@(4,R15)
    000005CA 3E32                   CMP/HS      R3,R14
    000005CC 6073                   MOV         R7,R0
    000005CE 8F08                   BF/S        L2433
    000005D0 81F4                   MOV.W       R0,@(8,R15)
    000005D2 3E32                   CMP/HS      R3,R14
    000005D4 D144                   MOV.L       L2566+12,R1; _gerr_Assert
    000005D6 0429                   MOVT        R4
    000005D8 D542                   MOV.L       L2566+8,R5 ; L2071
    000005DA 967F                   MOV.W       L2566,R6   ; H'02B9
    000005DC 74FF                   ADD         #-1,R4
    000005DE 410B                   JSR         @R1
    000005E0 644B                   NEG         R4,R4
    000005E2              L2433:                            
      wpr_attrac   698    
      wpr_attrac   699  E         _bReleaseWorldObs = 0;
    000005E2 D242                   MOV.L       L2566+16,R2; L2050
    000005E4 E300                   MOV         #0,R3
      wpr_attrac   700            /* set our track and timing values */
      wpr_attrac   701            tracks_SetCurrentTrack( nTrack, TRACKS_DIFFICU
                         +LTY_NOVICE );
    000005E6 6533                   MOV         R3,R5
    000005E8 2232                   MOV.L       R3,@R2
    000005EA D341                   MOV.L       L2566+20,
                        +                                  R3; _tracks_SetCurrentTr
                        +                                  ack
    000005EC 430B                   JSR         @R3
    000005EE 64E3                   MOV         R14,R4
      wpr_attrac   702    
      wpr_attrac   703            gutil_ScreenCoverage_ResetTotal();
    000005F0 D240                   MOV.L       L2566+24,
                        +                                  R2; _gutil_ScreenCoverag
                        +                                  e_ResetTotal
    000005F2 420B                   JSR         @R2
    000005F4 0009                   NOP
      wpr_attrac   704  E         gutil_ScreenCoverage_SetLimit( ( 512.0f * 400.
                         +0f * 7.0f ) );
    000005F6 D341                   MOV.L       L2566+32,
                        +                                  R3; _gutil_ScreenCoverag
                        +                                  e_SetLimit
    000005F8 C73F                   MOVA        L2566+28,R0
    000005FA 430B                   JSR         @R3
    000005FC F408                   FMOV.S      @R0,FR4
      wpr_attrac   705    
      wpr_attrac   706            /* Flag to draw water... */
      wpr_attrac   707  E         water_EnableCalc( 1 );
    000005FE D240                   MOV.L       L2566+36,R2; _water_EnableCalc
    00000600 420B                   JSR         @R2
    00000602 E401                   MOV         #1,R4
      wpr_attrac   708  E         water_EnableDraw( 1 );
    00000604 D33F                   MOV.L       L2566+40,R3; _water_EnableDraw
    00000606 430B                   JSR         @R3
    00000608 E401                   MOV         #1,R4
      wpr_attrac   709    
      wpr_attrac   710            /* reset stuff... */
      wpr_attrac   711            
      wpr_attrac   712            /* reset our player array to the defaults */
      wpr_attrac   713  E         for( i=0; i < 8; i++ ) {
    0000060A 9A68                   MOV.W       L2566+2,R10; H'01F0
    0000060C EE00                   MOV         #0,R14
    0000060E DD40                   MOV.L       L2566+52,R13; _Player_aData
    00000610 EB08                   MOV         #8,R11
    00000612 D93E                   MOV.L       L2566+48,
                        +                                  R9; _controls_ZeroContro
                        +                                  lStruct
    00000614 D83C                   MOV.L       L2566+44,
                        +                                  R8; _powerup_ResetBooste
                        +                                  r
    00000616              L2435:                            
      wpr_attrac   714                    xclib_MemSet( &Player_aData[i], 0, siz
                         +eof( Player_t ) );
    00000616 9C62                   MOV.W       L2566+2,R12; H'01F0
    00000618 66A3                   MOV         R10,R6
    0000061A D33E                   MOV.L       L2566+56,R3; _xclib_MemSet
    0000061C E500                   MOV         #0,R5
    0000061E 2ECF                   MULS        R12,R14
    00000620 0C1A                   STS         MACL,R12
    00000622 6CCF                   EXTS.W      R12,R12
    00000624 3CDC                   ADD         R13,R12
    00000626 430B                   JSR         @R3
    00000628 64C3                   MOV         R12,R4
      wpr_attrac   715                    Player_aData[i].nPlace = i+1;
    0000062A 64E3                   MOV         R14,R4
    0000062C 7401                   ADD         #1,R4
    0000062E 1C48                   MOV.L       R4,@(32,R12)
      wpr_attrac   716                    Player_aData[i].nEarnedStartPlace = i+
                         +1;
    00000630 1C4B                   MOV.L       R4,@(44,R12)
      wpr_attrac   717                    controls_ZeroControlStruct( &Player_aD
                         +ata[i].Controls );
    00000632 64C3                   MOV         R12,R4
    00000634 490B                   JSR         @R9
    00000636 7434                   ADD         #52,R4
      wpr_attrac   718                    powerup_ResetBooster( &Player_aData[i]
                         +.Powerup );
    00000638 64C3                   MOV         R12,R4
    0000063A 480B                   JSR         @R8
    0000063C 7424                   ADD         #36,R4
    0000063E 9C4E                   MOV.W       L2566+2,R12; H'01F0
    00000640 7E01                   ADD         #1,R14
    00000642 D334                   MOV.L       L2566+56,R3; _xclib_MemSet
    00000644 66A3                   MOV         R10,R6
    00000646 2ECF                   MULS        R12,R14
    00000648 E500                   MOV         #0,R5
    0000064A 0C1A                   STS         MACL,R12
    0000064C 6CCF                   EXTS.W      R12,R12
    0000064E 3CDC                   ADD         R13,R12
    00000650 430B                   JSR         @R3
    00000652 64C3                   MOV         R12,R4
    00000654 64E3                   MOV         R14,R4
    00000656 7401                   ADD         #1,R4
    00000658 1C48                   MOV.L       R4,@(32,R12)
    0000065A 1C4B                   MOV.L       R4,@(44,R12)
    0000065C 64C3                   MOV         R12,R4
    0000065E 490B                   JSR         @R9
    00000660 7434                   ADD         #52,R4
    00000662 64C3                   MOV         R12,R4
    00000664 480B                   JSR         @R8
    00000666 7424                   ADD         #36,R4
    00000668 7E01                   ADD         #1,R14
    0000066A 3EB2                   CMP/HS      R11,R14
    0000066C 8BD3                   BF          L2435
      wpr_attrac   719            }
      wpr_attrac   720            controls_ZeroControlStruct( &_HumanControls );
    0000066E D42A                   MOV.L       L2566+60,R4; L2051
    00000670 490B                   JSR         @R9
    00000672 0009                   NOP
      wpr_attrac   721            /* set the number of human racers */
      wpr_attrac   722            Player_nHumanCount = 0;         
    00000674 D229                   MOV.L       L2566+64,R2; _Player_nHumanCount
    00000676 E300                   MOV         #0,R3
    00000678 2232                   MOV.L       R3,@R2
      wpr_attrac   723            /* set the number of ai racers */
      wpr_attrac   724  E         Player_nAiCount = 8;
      wpr_attrac   725            /* set the total number of racers */
      wpr_attrac   726            Player_nTotalCount = Player_nHumanCount + Play
                         +er_nAiCount;
      wpr_attrac   727  E         Temp_bLoadAi = 1;
    0000067A E201                   MOV         #1,R2
    0000067C D128                   MOV.L       L2566+68,R1; _Player_nAiCount
    0000067E 21B2                   MOV.L       R11,@R1
    00000680 D328                   MOV.L       L2566+A72,R3; _Player_nTotalCount
    00000682 23B2                   MOV.L       R11,@R3
    00000684 D028                   MOV.L       L2566+76,R0; _Temp_bLoadAi
      wpr_attrac   728            
      wpr_attrac   729            gameloop_ResetCounter();
    00000686 D129                   MOV.L       L2566+80,
                        +                                  R1; _gameloop_ResetCount
                        +                                  er
    00000688 410B                   JSR         @R1
    0000068A 2022                   MOV.L       R2,@R0
      wpr_attrac   730            particle_ResetSystem();
    0000068C D328                   MOV.L       L2566+84,
                        +                                  R3; _particle_ResetSyste
                        +                                  m
    0000068E 430B                   JSR         @R3
    00000690 0009                   NOP
      wpr_attrac   731            tripwire_Reset();
    00000692 D128                   MOV.L       L2566+88,R1; _tripwire_Reset
    00000694 410B                   JSR         @R1
    00000696 0009                   NOP
      wpr_attrac   732            objectid_Reset();
    00000698 D327                   MOV.L       L2566+92,R3; _objectid_Reset
    0000069A 430B                   JSR         @R3
    0000069C 0009                   NOP
      wpr_attrac   733            fx_ResetSystem();
    0000069E D127                   MOV.L       L2566+96,R1; _fx_ResetSystem
    000006A0 410B                   JSR         @R1
    000006A2 0009                   NOP
      wpr_attrac   734            fx_splash_ResetSystem();
    000006A4 D326                   MOV.L       L2566+100,
                        +                                  R3; _fx_splash_ResetSys
                        +                                  tem
    000006A6 430B                   JSR         @R3
    000006A8 0009                   NOP
      wpr_attrac   735            collide_obj_Reset();
    000006AA D126                   MOV.L       L2566+104,R1; _collide_obj_Reset
    000006AC 410B                   JSR         @R1
    000006AE 0009                   NOP
      wpr_attrac   736  E         if( waterspray_InitSystem( 200 ) == 0 ) {
    000006B0 D325                   MOV.L       L2566+108,
                        +                                  R3; _waterspray_InitSys
                        +                                  tem
    000006B2 9415                   MOV.W       L2566+4,R4 ; H'00C8
    000006B4 430B                   JSR         @R3
    000006B6 0009                   NOP
    000006B8 2008                   TST         R0,R0
    000006BA 8B04                   BF          L2436
      wpr_attrac   737  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 737 );
    000006BC D30A                   MOV.L       L2566+12,R3; _gerr_Assert
    000006BE D509                   MOV.L       L2566+8,R5 ; L2071
    000006C0 960F                   MOV.W       L2566+6,R6 ; H'02E1
    000006C2 430B                   JSR         @R3
    000006C4 E400                   MOV         #0,R4
    000006C6              L2436:                            
      wpr_attrac   738            }
      wpr_attrac   739    
      wpr_attrac   740            /* Load all objects including track... */
      wpr_attrac   741            tracks_LoadWaterTextures( Tracks_nCurrentTrack
                         + );
    000006C6 D322                   MOV.L       L2566+116,
                        +                                  R3; _tracks_LoadWaterTe
                        +                                  xtures
    000006C8 D220                   MOV.L       L2566+112,
                        +                                  R2; _Tracks_nCurrentTra
                        +                                  ck
    000006CA 430B                   JSR         @R3
    000006CC 6422                   MOV.L       @R2,R4
      wpr_attrac   742            terrain_Load( pUszObName, &CurWorld );
    000006CE D322                   MOV.L       L2566+124,R3; _terrain_Load
    000006D0 D520                   MOV.L       L2566+120,R5; L2049
    000006D2 430B                   JSR         @R3
    000006D4 64F2                   MOV.L       @R15,R4
      wpr_attrac   743  E         if( CurWorld.pWorld == 0 ) {
    000006D6 D31F                   MOV.L       L2566+120,R3; L2049
    000006D8 A040                   BRA         L2500
    000006DA 0009                   NOP
    000006DC              L2566:                            
    000006DC 02B9                   .DATA.W     H'02B9
    000006DE 01F0                   .DATA.W     H'01F0
    000006E0 00C8                   .DATA.W     H'00C8
    000006E2 02E1                   .DATA.W     H'02E1
    000006E4 <00000000>             .DATA.L     L2071
    000006E8 <00000000>             .DATA.L     _gerr_Assert
    000006EC <00000000>             .DATA.L     L2050
    000006F0 <00000000>             .DATA.L     _tracks_SetCurrentTrack
    000006F4 <00000000>             .DATA.L     _gutil_ScreenCoverage_ResetTotal
    000006F8 49AF0000               .DATA.L     H'49AF0000
    000006FC <00000000>             .DATA.L     _gutil_ScreenCoverage_SetLimit
    00000700 <00000000>             .DATA.L     _water_EnableCalc
    00000704 <00000000>             .DATA.L     _water_EnableDraw
    00000708 <00000000>             .DATA.L     _powerup_ResetBooster
    0000070C <00000000>             .DATA.L     _controls_ZeroControlStruct
    00000710 <00000000>             .DATA.L     _Player_aData
    00000714 <00000000>             .DATA.L     _xclib_MemSet
    00000718 <00000000>             .DATA.L     L2051
    0000071C <00000000>             .DATA.L     _Player_nHumanCount
    00000720 <00000000>             .DATA.L     _Player_nAiCount
    00000724 <00000000>             .DATA.L     _Player_nTotalCount
    00000728 <00000000>             .DATA.L     _Temp_bLoadAi
    0000072C <00000000>             .DATA.L     _gameloop_ResetCounter
    00000730 <00000000>             .DATA.L     _particle_ResetSystem
    00000734 <00000000>             .DATA.L     _tripwire_Reset
    00000738 <00000000>             .DATA.L     _objectid_Reset
    0000073C <00000000>             .DATA.L     _fx_ResetSystem
    00000740 <00000000>             .DATA.L     _fx_splash_ResetSystem
    00000744 <00000000>             .DATA.L     _collide_obj_Reset
    00000748 <00000000>             .DATA.L     _waterspray_InitSystem
    0000074C <00000000>             .DATA.L     _Tracks_nCurrentTrack
    00000750 <00000000>             .DATA.L     _tracks_LoadWaterTextures
    00000754 <00000000>             .DATA.L     L2049
    00000758 <00000000>             .DATA.L     _terrain_Load
    0000075C              L2500:                            
    0000075C 6232                   MOV.L       @R3,R2
    0000075E 2228                   TST         R2,R2
    00000760 8B01                   BF          L2438
      wpr_attrac   744  E                 return 0;
    00000762 A079                   BRA         L2439
    00000764 E000                   MOV         #0,R0
    00000766              L2438:                            
      wpr_attrac   745            }
      wpr_attrac   746            /* attach the loaded track */
      wpr_attrac   747            terrain_Attach( &CurWorld );
    00000766 D245                   MOV.L       L2567+16,R2; _terrain_Attach
    00000768 D443                   MOV.L       L2567+12,R4; L2049
    0000076A 420B                   JSR         @R2
    0000076C 0009                   NOP
      wpr_attrac   748            /* SSP - fill in angle values for each path ed
                         +ge */
      wpr_attrac   749            paths_CalcEdgeAngles( World_pWorld->pPathEdge,
                         + World_pWorld->nPathEdges );
    0000076E DE44                   MOV.L       L2567+20,R14; _World_pWorld
    00000770 907C                   MOV.W       L2567,R0   ; H'0160
    00000772 65E2                   MOV.L       @R14,R5
    00000774 D343                   MOV.L       L2567+24,
                        +                                  R3; _paths_CalcEdgeAngle
                        +                                  s
    00000776 64E2                   MOV.L       @R14,R4
    00000778 055E                   MOV.L       @(R0,R5),R5
    0000077A 7044                   ADD         #68,R0
    0000077C 430B                   JSR         @R3
    0000077E 044E                   MOV.L       @(R0,R4),R4
      wpr_attrac   750            /* SSP - check for wrong null pointers problem
                         + */
      wpr_attrac   751            paths_FixWrongNullPointers( World_pWorld->pPat
                         +hSector, World_pWorld->nPathSectors );
    00000780 9075                   MOV.W       L2567+2,R0 ; H'015C
    00000782 65E2                   MOV.L       @R14,R5
    00000784 D340                   MOV.L       L2567+28,
                        +                                  R3; _paths_FixWrongNullP
                        +                                  ointers
    00000786 64E2                   MOV.L       @R14,R4
    00000788 055E                   MOV.L       @(R0,R5),R5
    0000078A 7044                   ADD         #68,R0
    0000078C 430B                   JSR         @R3
    0000078E 044E                   MOV.L       @(R0,R4),R4
      wpr_attrac   752            /* SSP - set our path sector data from the wor
                         +ld that was just loaded */
      wpr_attrac   753            paths_TrackPathSet( World_pWorld->pPathSector,
                         + World_pWorld->nPathSectors );
    00000790 906D                   MOV.W       L2567+2,R0 ; H'015C
    00000792 65E2                   MOV.L       @R14,R5
    00000794 D33D                   MOV.L       L2567+32,R3; _paths_TrackPathSet
    00000796 64E2                   MOV.L       @R14,R4
    00000798 055E                   MOV.L       @(R0,R5),R5
    0000079A 7044                   ADD         #68,R0
    0000079C 430B                   JSR         @R3
    0000079E 044E                   MOV.L       @(R0,R4),R4
      wpr_attrac   754    
      wpr_attrac   755            terrain_LoadObjects( objectid_Process );
    000007A0 D23C                   MOV.L       L2567+40,
                        +                                  R2; _terrain_LoadObjects
    000007A2 D43B                   MOV.L       L2567+36,R4; _objectid_Process
    000007A4 420B                   JSR         @R2
    000007A6 0009                   NOP
      wpr_attrac   756            terrain_LoadWaterfalls();
    000007A8 D33B                   MOV.L       L2567+44,
                        +                                  R3; _terrain_LoadWaterfa
                        +                                  lls
    000007AA 430B                   JSR         @R3
    000007AC 0009                   NOP
      wpr_attrac   757            terrain_LoadFx();
    000007AE D23B                   MOV.L       L2567+48,R2; _terrain_LoadFx
    000007B0 420B                   JSR         @R2
    000007B2 0009                   NOP
      wpr_attrac   758    
      wpr_attrac   759    /*      hud_Load(); */
      wpr_attrac   760            _OverLayLoad();
    000007B4 D33A                   MOV.L       L2567+52,R3; L2062
    000007B6 430B                   JSR         @R3
    000007B8 0009                   NOP
      wpr_attrac   761            sky_LoadSkyForATrack();
    000007BA D23A                   MOV.L       L2567+56,
                        +                                  R2; _sky_LoadSkyForATrac
                        +                                  k
    000007BC 420B                   JSR         @R2
    000007BE 0009                   NOP
      wpr_attrac   762    /*      audio_mgr_LoadALevel( Tracks_nCurrentTrack, Pl
                         +ayer_aData[0].nBoatType ); */
      wpr_attrac   763            
      wpr_attrac   764            /* Init stuff... */
      wpr_attrac   765            /* setup boat types and pole positions */
      wpr_attrac   766  E         ai_player_SetPolePositionsAndBoatTypes( 0, nAi
                         +OffSet );
    000007C0 85F4                   MOV.W       @(8,R15),R0
    000007C2 D339                   MOV.L       L2567+60,
                        +                                  R3; _ai_player_SetPolePo
                        +                                  sitionsAndBoatTypes
    000007C4 6503                   MOV         R0,R5
    000007C6 655D                   EXTU.W      R5,R5
    000007C8 430B                   JSR         @R3
    000007CA E400                   MOV         #0,R4
      wpr_attrac   767  E         for( i=0; i < 8; i++ ) {
    000007CC 9950                   MOV.W       L2567+4,R9 ; H'0200
    000007CE ECEF                   MOV         #-17,R12
    000007D0 D836                   MOV.L       L2567+64,R8; _boats_Init
    000007D2 EE00                   MOV         #0,R14
    000007D4              L2441:                            
      wpr_attrac   768                    boats_Init( Player_aData[i].nBoatType,
                         + BOATS_LOD_HIGH, i, &Player_aData[i], nStartPosOffset 
                         +);
    000007D4 85F2                   MOV.W       @(4,R15),R0
    000007D6 E501                   MOV         #1,R5
    000007D8 66E3                   MOV         R14,R6
    000007DA 600D                   EXTU.W      R0,R0
    000007DC 2F02                   MOV.L       R0,@R15
    000007DE 2F06                   MOV.L       R0,@-R15
    000007E0 9A47                   MOV.W       L2567+6,R10; H'01F0
    000007E2 2EAF                   MULS        R10,R14
    000007E4 0A1A                   STS         MACL,R10
    000007E6 6AAF                   EXTS.W      R10,R10
    000007E8 3ADC                   ADD         R13,R10
    000007EA 85A3                   MOV.W       @(6,R10),R0
    000007EC 67A3                   MOV         R10,R7
    000007EE 480B                   JSR         @R8
    000007F0 640D                   EXTU.W      R0,R4
      wpr_attrac   769                    Player_aData[i].Phys.nControlFlags &= 
                         +~PHYS_CONTROLFLAG_STARTINGLINE_321GO;
    000007F2 903F                   MOV.W       L2567+8,R0 ; H'0130
    000007F4 7E01                   ADD         #1,R14
    000007F6 E501                   MOV         #1,R5
    000007F8 66E3                   MOV         R14,R6
    000007FA 03AE                   MOV.L       @(R0,R10),R3
    000007FC 23C9                   AND         R12,R3
    000007FE 0A36                   MOV.L       R3,@(R0,R10)
      wpr_attrac   770                    /* turn off boat sounds */
      wpr_attrac   771                    Player_aData[i].Phys.nControlFlags |= 
                         +PHYS_CONTROLFLAG_SILENT;
    00000800 02AE                   MOV.L       @(R0,R10),R2
    00000802 229B                   OR          R9,R2
    00000804 0A26                   MOV.L       R2,@(R0,R10)
    00000806 53F1                   MOV.L       @(4,R15),R3
    00000808 2F36                   MOV.L       R3,@-R15
    0000080A 9A32                   MOV.W       L2567+6,R10; H'01F0
    0000080C 2EAF                   MULS        R10,R14
    0000080E 0A1A                   STS         MACL,R10
    00000810 6AAF                   EXTS.W      R10,R10
    00000812 3ADC                   ADD         R13,R10
    00000814 85A3                   MOV.W       @(6,R10),R0
    00000816 67A3                   MOV         R10,R7
    00000818 480B                   JSR         @R8
    0000081A 640D                   EXTU.W      R0,R4
    0000081C 902A                   MOV.W       L2567+8,R0 ; H'0130
    0000081E 7E01                   ADD         #1,R14
    00000820 3EB2                   CMP/HS      R11,R14
    00000822 7F08                   ADD         #8,R15
    00000824 03AE                   MOV.L       @(R0,R10),R3
    00000826 23C9                   AND         R12,R3
    00000828 0A36                   MOV.L       R3,@(R0,R10)
    0000082A 02AE                   MOV.L       @(R0,R10),R2
    0000082C 229B                   OR          R9,R2
    0000082E 8FD1                   BF/S        L2441
    00000830 0A26                   MOV.L       R2,@(R0,R10)
      wpr_attrac   772            }
      wpr_attrac   773  E         _bReleaseWorldObs = 1;
      wpr_attrac   774    
      wpr_attrac   775            ai_player_Init();
    00000832 D120                   MOV.L       L2567+72,R1; _ai_player_Init
    00000834 E201                   MOV         #1,R2
    00000836 D31E                   MOV.L       L2567+68,R3; L2050
    00000838 410B                   JSR         @R1
    0000083A 2322                   MOV.L       R2,@R3
      wpr_attrac   776    /*      hud_Init(); */
      wpr_attrac   777    /*      boats_InitBoatTrackingSystem(); */
      wpr_attrac   778            anim_fish_LoadTanksForATrack( Tracks_nCurrentT
                         +rack );
    0000083C D31F                   MOV.L       L2567+80,
                        +                                  R3; _anim_fish_LoadTanks
                        +                                  ForATrack
    0000083E D01E                   MOV.L       L2567+76,
                        +                                  R0; _Tracks_nCurrentTrac
                        +                                  k
    00000840 430B                   JSR         @R3
    00000842 6402                   MOV.L       @R0,R4
      wpr_attrac   779            hud_wrongway_Init();
    00000844 D21E                   MOV.L       L2567+84,R2; _hud_wrongway_Init
    00000846 420B                   JSR         @R2
    00000848 0009                   NOP
      wpr_attrac   780            
      wpr_attrac   781            /* we update our rank here so that it is corre
                         +ct for the first time we run race_Work() */
      wpr_attrac   782            player_InitPathSectorStuff();
    0000084A D31E                   MOV.L       L2567+88,
                        +                                  R3; _player_InitPathSect
                        +                                  orStuff
    0000084C 430B                   JSR         @R3
    0000084E 0009                   NOP
      wpr_attrac   783            player_UpdateRank();
    00000850 D21D                   MOV.L       L2567+92,R2; _player_UpdateRank
    00000852 420B                   JSR         @R2
    00000854 0009                   NOP
      wpr_attrac   784    
      wpr_attrac   785  E         return 1;
    00000856 E001                   MOV         #1,R0
      wpr_attrac   786    }
    00000858              L2439:                            
    00000858 7F0C                   ADD         #12,R15
    0000085A 4F26                   LDS.L       @R15+,PR
    0000085C 68F6                   MOV.L       @R15+,R8
    0000085E 69F6                   MOV.L       @R15+,R9
    00000860 6AF6                   MOV.L       @R15+,R10
    00000862 6BF6                   MOV.L       @R15+,R11
    00000864 6CF6                   MOV.L       @R15+,R12
    00000866 6DF6                   MOV.L       @R15+,R13
    00000868 000B                   RTS
    0000086A 6EF6                   MOV.L       @R15+,R14
    0000086C              L2567:                            
    0000086C 0160                   .DATA.W     H'0160
    0000086E 015C                   .DATA.W     H'015C
    00000870 0200                   .DATA.W     H'0200
    00000872 01F0                   .DATA.W     H'01F0
    00000874 0130                   .DATA.W     H'0130
    00000876 00000002               .RES.W      1
    00000878 <00000000>             .DATA.L     L2049
    0000087C <00000000>             .DATA.L     _terrain_Attach
    00000880 <00000000>             .DATA.L     _World_pWorld
    00000884 <00000000>             .DATA.L     _paths_CalcEdgeAngles
    00000888 <00000000>             .DATA.L     _paths_FixWrongNullPointers
    0000088C <00000000>             .DATA.L     _paths_TrackPathSet
    00000890 <00000000>             .DATA.L     _objectid_Process
    00000894 <00000000>             .DATA.L     _terrain_LoadObjects
    00000898 <00000000>             .DATA.L     _terrain_LoadWaterfalls
    0000089C <00000000>             .DATA.L     _terrain_LoadFx
    000008A0 <00000000>             .DATA.L     L2062
    000008A4 <00000000>             .DATA.L     _sky_LoadSkyForATrack
    000008A8 <00000000>             .DATA.L     _ai_player_SetPolePositionsAndBo
                        +                       atTypes
    000008AC <00000000>             .DATA.L     _boats_Init
    000008B0 <00000000>             .DATA.L     L2050
    000008B4 <00000000>             .DATA.L     _ai_player_Init
    000008B8 <00000000>             .DATA.L     _Tracks_nCurrentTrack
    000008BC <00000000>             .DATA.L     _anim_fish_LoadTanksForATrack
    000008C0 <00000000>             .DATA.L     _hud_wrongway_Init
    000008C4 <00000000>             .DATA.L     _player_InitPathSectorStuff
    000008C8 <00000000>             .DATA.L     _player_UpdateRank
      wpr_attrac   787    
      wpr_attrac   788    static void _EndDemoMode( void ) {
    000008CC              L2055:                           ; function: _EndDemoM
                        +                                  ode
                                                           ; frame size=20
    000008CC 2FE6                   MOV.L       R14,@-R15
    000008CE 2FD6                   MOV.L       R13,@-R15
    000008D0 2FC6                   MOV.L       R12,@-R15
    000008D2 2FB6                   MOV.L       R11,@-R15
      wpr_attrac   789            u32 i;
      wpr_attrac   790    
      wpr_attrac   791            if( _bReleaseWorldObs ) {
    000008D4 D241                   MOV.L       L2568+8,R2 ; L2050
    000008D6 4F22                   STS.L       PR,@-R15
    000008D8 6322                   MOV.L       @R2,R3
    000008DA 2338                   TST         R3,R3
    000008DC 8925                   BT          L2442
      wpr_attrac   792  E                 for( i=0; i < 8; i++ ) {
    000008DE DC40                   MOV.L       L2568+12,R12; _boats_Free
    000008E0 EE00                   MOV         #0,R14
    000008E2 DD40                   MOV.L       L2568+16,R13; _Player_aData
    000008E4 EB08                   MOV         #8,R11
    000008E6              L2444:                            
      wpr_attrac   793                            boats_Free( &Player_aData[i] )
                         +;
    000008E6 9475                   MOV.W       L2568,R4   ; H'01F0
    000008E8 2E4F                   MULS        R4,R14
    000008EA 041A                   STS         MACL,R4
    000008EC 644F                   EXTS.W      R4,R4
    000008EE 4C0B                   JSR         @R12
    000008F0 34DC                   ADD         R13,R4
    000008F2 946F                   MOV.W       L2568,R4   ; H'01F0
    000008F4 7E01                   ADD         #1,R14
    000008F6 2E4F                   MULS        R4,R14
    000008F8 041A                   STS         MACL,R4
    000008FA 644F                   EXTS.W      R4,R4
    000008FC 4C0B                   JSR         @R12
    000008FE 34DC                   ADD         R13,R4
    00000900 7E01                   ADD         #1,R14
    00000902 3EB2                   CMP/HS      R11,R14
    00000904 8BEF                   BF          L2444
      wpr_attrac   794                    }
      wpr_attrac   795  E                 _bReleaseWorldObs = 0;  
      wpr_attrac   796            /*      phys_AttachMicrophone( NULL ); */
      wpr_attrac   797                    particle_ResetSystem();
    00000906 D138                   MOV.L       L2568+20,
                        +                                  R1; _particle_ResetSyste
                        +                                  m
    00000908 E200                   MOV         #0,R2
    0000090A D334                   MOV.L       L2568+8,R3 ; L2050
    0000090C 410B                   JSR         @R1
    0000090E 2322                   MOV.L       R2,@R3
      wpr_attrac   798                    _DemoModeCamera( _StageNum, 1 );
    00000910 D336                   MOV.L       L2568+24,R3; L2041
    00000912 E501                   MOV         #1,R5
    00000914 B138                   BSR         L2058
    00000916 6432                   MOV.L       @R3,R4
      wpr_attrac   799                    /* Turn off water */
      wpr_attrac   800  E                 water_EnableCalc( 0 );
    00000918 D335                   MOV.L       L2568+28,R3; _water_EnableCalc
    0000091A 430B                   JSR         @R3
    0000091C E400                   MOV         #0,R4
      wpr_attrac   801  E                 water_EnableDraw( 0 );
    0000091E D235                   MOV.L       L2568+32,R2; _water_EnableDraw
    00000920 420B                   JSR         @R2
    00000922 E400                   MOV         #0,R4
      wpr_attrac   802                    /* dump all loaded audio */
      wpr_attrac   803    /*              audio_mgr_UnloadALevel(); */
      wpr_attrac   804                    /* resets the path sector system */
      wpr_attrac   805                    paths_TrackPathClear();
    00000924 D334                   MOV.L       L2568+36,
                        +                                  R3; _paths_TrackPathClea
                        +                                  r
    00000926 430B                   JSR         @R3
    00000928 0009                   NOP
    0000092A              L2442:                            
      wpr_attrac   806            }
      wpr_attrac   807            world_SetWhiteSat( 0.0f );
    0000092A D234                   MOV.L       L2568+40,R2; _world_SetWhiteSat
    0000092C 420B                   JSR         @R2
    0000092E F48D                   FLDI0       FR4
      wpr_attrac   808            sky_SetWhiteSat( 0.0f );
    00000930 4F26                   LDS.L       @R15+,PR
    00000932 D333                   MOV.L       L2568+44,R3; _sky_SetWhiteSat
    00000934 F48D                   FLDI0       FR4
    00000936 6BF6                   MOV.L       @R15+,R11
    00000938 6CF6                   MOV.L       @R15+,R12
    0000093A 6DF6                   MOV.L       @R15+,R13
    0000093C 432B                   JMP         @R3
    0000093E 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   809    }
      wpr_attrac   810    
      wpr_attrac   811    static void _DemoModeWork( void ) {
    00000940              L2056:                           ; function: _DemoMode
                        +                                  Work
                                                           ; frame size=12
    00000940 2FE6                   MOV.L       R14,@-R15
    00000942 2FD6                   MOV.L       R13,@-R15
      wpr_attrac   812            u32 i;
      wpr_attrac   813            
      wpr_attrac   814            /*  1) Handle tripwire triggering. */
      wpr_attrac   815            /*  2) Update water, waterfalls. */
      wpr_attrac   816            /*  3) Update canned animations. */
      wpr_attrac   817            /*  4) Perform AI. */
      wpr_attrac   818            controls_CopyControlStruct( &Player_aData[Play
                         +er_nHuman].Controls, &_HumanControls );
    00000944 D130                   MOV.L       L2568+52,R1; _Player_nHuman
    00000946 9345                   MOV.W       L2568,R3   ; H'01F0
    00000948 6211                   MOV.W       @R1,R2
    0000094A 4F22                   STS.L       PR,@-R15
    0000094C 223F                   MULS        R3,R2
    0000094E DE25                   MOV.L       L2568+16,R14; _Player_aData
    00000950 D22E                   MOV.L       L2568+56,
                        +                                  R2; _controls_CopyContro
                        +                                  lStruct
    00000952 D52C                   MOV.L       L2568+48,R5; L2051
    00000954 041A                   STS         MACL,R4
    00000956 644F                   EXTS.W      R4,R4
    00000958 34EC                   ADD         R14,R4
    0000095A 420B                   JSR         @R2
    0000095C 7434                   ADD         #52,R4
      wpr_attrac   819            ai_player_Work();
    0000095E D32C                   MOV.L       L2568+60,R3; _ai_player_Work
    00000960 430B                   JSR         @R3
    00000962 0009                   NOP
      wpr_attrac   820            controls_CopyControlStruct( &_HumanControls, &
                         +Player_aData[Player_nHuman].Controls );
    00000964 D128                   MOV.L       L2568+52,R1; _Player_nHuman
    00000966 9335                   MOV.W       L2568,R3   ; H'01F0
    00000968 6211                   MOV.W       @R1,R2
    0000096A D426                   MOV.L       L2568+48,R4; L2051
    0000096C 223F                   MULS        R3,R2
    0000096E D227                   MOV.L       L2568+56,
                        +                                  R2; _controls_CopyContro
                        +                                  lStruct
    00000970 051A                   STS         MACL,R5
    00000972 655F                   EXTS.W      R5,R5
    00000974 35EC                   ADD         R14,R5
    00000976 420B                   JSR         @R2
    00000978 7534                   ADD         #52,R5
      wpr_attrac   821            /*  5) Call work function of all WorldOb_t's: 
                         +*/
      wpr_attrac   822            /*        - Calculate new object velocities. *
                         +/
      wpr_attrac   823            /*        - Move objects by new velocities. */
      wpr_attrac   824            /*        - Update object TWSs. */
      wpr_attrac   825  E         for( i=0; i < 8; i++ ) {
    0000097A E602                   MOV         #2,R6
    0000097C ED08                   MOV         #8,R13
    0000097E E500                   MOV         #0,R5
    00000980              L2446:                            
      wpr_attrac   826                    /* Set physics input parameters... */
      wpr_attrac   827  E                 Player_aData[i].Phys.fSteer = Player_a
                         +Data[i].Controls.fWithDeadZone[0];
    00000980 9428                   MOV.W       L2568,R4   ; H'01F0
    00000982 E03C                   MOV         #60,R0
    00000984 254F                   MULS        R4,R5
    00000986 041A                   STS         MACL,R4
    00000988 644F                   EXTS.W      R4,R4
    0000098A 34EC                   ADD         R14,R4
    0000098C F346                   FMOV.S      @(R0,R4),FR3
    0000098E 9022                   MOV.W       L2568+2,R0 ; H'0120
    00000990 F437                   FMOV.S      FR3,@(R0,R4)
      wpr_attrac   828  E                 Player_aData[i].Phys.fThrottle = Playe
                         +r_aData[i].Controls.fWithDeadZone[1];
    00000992 E040                   MOV         #64,R0
    00000994 F346                   FMOV.S      @(R0,R4),FR3
    00000996 901F                   MOV.W       L2568+4,R0 ; H'0124
    00000998 F437                   FMOV.S      FR3,@(R0,R4)
      wpr_attrac   829  E                 Player_aData[i].Phys.bHydroBoostersOn 
                         += (Player_aData[i].Controls.nButtons & 0x2) ? 1 : 0;
    0000099A E044                   MOV         #68,R0
    0000099C 024E                   MOV.L       @(R0,R4),R2
    0000099E 2268                   TST         R6,R2
    000009A0 8901                   BT          L2447
    000009A2 A001                   BRA         L2448
    000009A4 E301                   MOV         #1,R3
    000009A6              L2447:                            
    000009A6 E300                   MOV         #0,R3
    000009A8              L2448:                            
    000009A8 9017                   MOV.W       L2568+6,R0 ; H'0128
    000009AA 7501                   ADD         #1,R5
    000009AC 0436                   MOV.L       R3,@(R0,R4)
    000009AE E03C                   MOV         #60,R0
    000009B0 9410                   MOV.W       L2568,R4   ; H'01F0
    000009B2 254F                   MULS        R4,R5
    000009B4 041A                   STS         MACL,R4
    000009B6 644F                   EXTS.W      R4,R4
    000009B8 34EC                   ADD         R14,R4
    000009BA F346                   FMOV.S      @(R0,R4),FR3
    000009BC 900B                   MOV.W       L2568+2,R0 ; H'0120
    000009BE F437                   FMOV.S      FR3,@(R0,R4)
    000009C0 E040                   MOV         #64,R0
    000009C2 F346                   FMOV.S      @(R0,R4),FR3
    000009C4 9008                   MOV.W       L2568+4,R0 ; H'0124
    000009C6 F437                   FMOV.S      FR3,@(R0,R4)
    000009C8 E044                   MOV         #68,R0
    000009CA 024E                   MOV.L       @(R0,R4),R2
    000009CC 2268                   TST         R6,R2
    000009CE 8921                   BT          L2449
    000009D0 A021                   BRA         L2450
    000009D2 E301                   MOV         #1,R3
    000009D4              L2568:                            
    000009D4 01F0                   .DATA.W     H'01F0
    000009D6 0120                   .DATA.W     H'0120
    000009D8 0124                   .DATA.W     H'0124
    000009DA 0128                   .DATA.W     H'0128
    000009DC <00000000>             .DATA.L     L2050
    000009E0 <00000000>             .DATA.L     _boats_Free
    000009E4 <00000000>             .DATA.L     _Player_aData
    000009E8 <00000000>             .DATA.L     _particle_ResetSystem
    000009EC <00000000>             .DATA.L     L2041
    000009F0 <00000000>             .DATA.L     _water_EnableCalc
    000009F4 <00000000>             .DATA.L     _water_EnableDraw
    000009F8 <00000000>             .DATA.L     _paths_TrackPathClear
    000009FC <00000000>             .DATA.L     _world_SetWhiteSat
    00000A00 <00000000>             .DATA.L     _sky_SetWhiteSat
    00000A04 <00000000>             .DATA.L     L2051
    00000A08 <00000000>             .DATA.L     _Player_nHuman
    00000A0C <00000000>             .DATA.L     _controls_CopyControlStruct
    00000A10 <00000000>             .DATA.L     _ai_player_Work
    00000A14              L2449:                            
    00000A14 E300                   MOV         #0,R3
    00000A16              L2450:                            
    00000A16 907C                   MOV.W       L2569,R0   ; H'0128
    00000A18 7501                   ADD         #1,R5
    00000A1A 35D2                   CMP/HS      R13,R5
    00000A1C 0436                   MOV.L       R3,@(R0,R4)
    00000A1E 8BAF                   BF          L2446
      wpr_attrac   830            }
      wpr_attrac   831            /* Move and collide all boats... */
      wpr_attrac   832  E         phys_SimulateAndCollideAll( 1 );
    00000A20 D23E                   MOV.L       L2569+10,
                        +                                  R2; _phys_SimulateAndCol
                        +                                  lideAll
    00000A22 420B                   JSR         @R2
    00000A24 E401                   MOV         #1,R4
      wpr_attrac   833            /* Update speedometer and tachometer... */
      wpr_attrac   834  E         for( i=0; i < 8; i++ ) {
    00000A26 C73E                   MOVA        L2569+14,R0
    00000A28 F408                   FMOV.S      @R0,FR4
    00000A2A E400                   MOV         #0,R4
    00000A2C              L2452:                            
      wpr_attrac   835                    Player_aData[i].fSpeedMph = Player_aDa
                         +ta[i].Phys.fSpeedMPH;
    00000A2C 9572                   MOV.W       L2569+2,R5 ; H'01F0
    00000A2E 9072                   MOV.W       L2569+4,R0 ; H'014C
    00000A30 245F                   MULS        R5,R4
    00000A32 7401                   ADD         #1,R4
    00000A34 051A                   STS         MACL,R5
    00000A36 655F                   EXTS.W      R5,R5
    00000A38 35EC                   ADD         R14,R5
    00000A3A F356                   FMOV.S      @(R0,R5),FR3
    00000A3C E018                   MOV         #24,R0
    00000A3E F537                   FMOV.S      FR3,@(R0,R5)
      wpr_attrac   836                    Player_aData[i].fRPM = Player_aData[i]
                         +.Phys.fPropRPM * 10000.0f;
    00000A40 906A                   MOV.W       L2569+6,R0 ; H'0150
    00000A42 F356                   FMOV.S      @(R0,R5),FR3
    00000A44 E01C                   MOV         #28,R0
    00000A46 F342                   FMUL        FR4,FR3
    00000A48 F537                   FMOV.S      FR3,@(R0,R5)
    00000A4A 9563                   MOV.W       L2569+2,R5 ; H'01F0
    00000A4C 9063                   MOV.W       L2569+4,R0 ; H'014C
    00000A4E 245F                   MULS        R5,R4
    00000A50 7401                   ADD         #1,R4
    00000A52 34D2                   CMP/HS      R13,R4
    00000A54 051A                   STS         MACL,R5
    00000A56 655F                   EXTS.W      R5,R5
    00000A58 35EC                   ADD         R14,R5
    00000A5A F356                   FMOV.S      @(R0,R5),FR3
    00000A5C E018                   MOV         #24,R0
    00000A5E F537                   FMOV.S      FR3,@(R0,R5)
    00000A60 905A                   MOV.W       L2569+6,R0 ; H'0150
    00000A62 F356                   FMOV.S      @(R0,R5),FR3
    00000A64 E01C                   MOV         #28,R0
    00000A66 F342                   FMUL        FR4,FR3
    00000A68 8FE0                   BF/S        L2452
    00000A6A F537                   FMOV.S      FR3,@(R0,R5)
      wpr_attrac   837            }
      wpr_attrac   838            worldob_CallAllWorkFcns( Gameloop_nDeltaFrames
                         + );
    00000A6C D32E                   MOV.L       L2569+22,
                        +                                  R3; _worldob_CallAllWork
                        +                                  Fcns
    00000A6E D22D                   MOV.L       L2569+18,
                        +                                  R2; _Gameloop_nDeltaFram
                        +                                  es
    00000A70 430B                   JSR         @R3
    00000A72 6422                   MOV.L       @R2,R4
      wpr_attrac   839            /*  6) Perform object collision detection, adj
                         +usting positions */
      wpr_attrac   840            /*     and velocities if necessary (update TWS
                         +s again, if position */
      wpr_attrac   841            /*     changed). */
      wpr_attrac   842            worldcoll_Work();
    00000A74 D12D                   MOV.L       L2569+26,R1; _worldcoll_Work
    00000A76 410B                   JSR         @R1
    00000A78 0009                   NOP
      wpr_attrac   843            collide_obj_Work();
    00000A7A D32D                   MOV.L       L2569+30,R3; _collide_obj_Work
    00000A7C 430B                   JSR         @R3
    00000A7E 0009                   NOP
      wpr_attrac   844            /*  7) Update camera position and orientation.
                         + */
      wpr_attrac   845            _DemoModeCamera( _StageNum, 2 );
    00000A80 D22C                   MOV.L       L2569+34,R2; L2041
    00000A82 E502                   MOV         #2,R5
    00000A84 B080                   BSR         L2058
    00000A86 6422                   MOV.L       @R2,R4
      wpr_attrac   846            /*  8) Update particles. */
      wpr_attrac   847            particle_CallWorkFunctions();
    00000A88 D22B                   MOV.L       L2569+38,
                        +                                  R2; _particle_CallWorkFu
                        +                                  nctions
    00000A8A 420B                   JSR         @R2
    00000A8C 0009                   NOP
      wpr_attrac   848            particle_CallCellBlocksWorkFunctions();
    00000A8E D32B                   MOV.L       L2569+42,
                        +                                  R3; _particle_CallCellBl
                        +                                  ocksWorkFunctions
    00000A90 430B                   JSR         @R3
    00000A92 0009                   NOP
      wpr_attrac   849            waterspray_Work();
    00000A94 D22A                   MOV.L       L2569+46,R2; _waterspray_Work
    00000A96 420B                   JSR         @R2
    00000A98 0009                   NOP
      wpr_attrac   850            /*  9) Update water effects (rooster tails, wa
                         +kes, wave objects, etc.). */
      wpr_attrac   851            /* 10) Transform object lights from model-spac
                         +e to world-space. */
      wpr_attrac   852            worldob_TransformAllObjectLights();
    00000A9A D32A                   MOV.L       L2569+50,
                        +                                  R3; _worldob_TransformAl
                        +                                  lObjectLights
    00000A9C 430B                   JSR         @R3
    00000A9E 0009                   NOP
      wpr_attrac   853            /* 11) Update player positions... */
      wpr_attrac   854            player_UpdateRank();
    00000AA0 D229                   MOV.L       L2569+54,R2; _player_UpdateRank
    00000AA2 420B                   JSR         @R2
    00000AA4 0009                   NOP
      wpr_attrac   855            _OverLayWork();
    00000AA6 D329                   MOV.L       L2569+58,R3; L2063
    00000AA8 430B                   JSR         @R3
    00000AAA 0009                   NOP
      wpr_attrac   856            hud_wrongway_Work();
    00000AAC D228                   MOV.L       L2569+62,R2; _hud_wrongway_Work
    00000AAE 420B                   JSR         @R2
    00000AB0 0009                   NOP
      wpr_attrac   857    
      wpr_attrac   858            phys_Work();
    00000AB2 4F26                   LDS.L       @R15+,PR
    00000AB4 D327                   MOV.L       L2569+66,R3; _phys_Work
    00000AB6 6DF6                   MOV.L       @R15+,R13
    00000AB8 432B                   JMP         @R3
    00000ABA 6EF6                   MOV.L       @R15+,R14
      wpr_attrac   859    }
      wpr_attrac   860    
      wpr_attrac   861    /* _Draw(): */
      wpr_attrac   862    /* */
      wpr_attrac   863    /*  1) Call hud_radar_ConstructRadarInfo(1). */
      wpr_attrac   864    /*  2) Draw sky and setup the camera. */
      wpr_attrac   865    /*  3) Draw all visible terrain. */
      wpr_attrac   866    /*  4) Draw all visible world objects. */
      wpr_attrac   867    /*  5) Draw all visible water and waterfalls. */
      wpr_attrac   868    /*  6) Draw water splash effects. */
      wpr_attrac   869    /*  7) Draw opaque particles (sparks, explosions, etc.
                         +). */
      wpr_attrac   870    /*  8) Draw high-transparency particles (mist, spray, 
                         +etc.). */
      wpr_attrac   871    /*  9) Draw HUD and overlay text. */
      wpr_attrac   872    /* 10) Draw splashed screen, if appropriate. */
      wpr_attrac   873    static void _DemoModeDraw( void ) {
    00000ABC              L2057:                           ; function: _DemoMode
                        +                                  Draw
                                                           ; frame size=4
    00000ABC 4F22                   STS.L       PR,@-R15
      wpr_attrac   874            gutil_ScreenCoverage_ResetTotal();
    00000ABE D326                   MOV.L       L2569+70,
                        +                                  R3; _gutil_ScreenCoverag
                        +                                  e_ResetTotal
    00000AC0 430B                   JSR         @R3
    00000AC2 0009                   NOP
      wpr_attrac   875    
      wpr_attrac   876            world_SetWhiteSat( anim_air_GetLensFlareWhiteS
                         +at() );
    00000AC4 D225                   MOV.L       L2569+74,
                        +                                  R2; _anim_air_GetLensFla
                        +                                  reWhiteSat
    00000AC6 420B                   JSR         @R2
    00000AC8 0009                   NOP
    00000ACA D325                   MOV.L       L2569+78,R3; _world_SetWhiteSat
    00000ACC 430B                   JSR         @R3
    00000ACE F40C                   FMOV.S      FR0,FR4
      wpr_attrac   877            /* Set up lighting... */
      wpr_attrac   878            mesh3d_ClearLightList();
    00000AD0 D224                   MOV.L       L2569+82,
                        +                                  R2; _mesh3d_ClearLightLi
                        +                                  st
    00000AD2 420B                   JSR         @R2
    00000AD4 0009                   NOP
      wpr_attrac   879            anim_air_Lightning();
    00000AD6 D324                   MOV.L       L2569+86,R3; _anim_air_Lightning
    00000AD8 430B                   JSR         @R3
    00000ADA 0009                   NOP
      wpr_attrac   880    
      wpr_attrac   881            /*  1) Call hud_radar_ConstructRadarInfo( 1 ).
                         + */
      wpr_attrac   882    /*      hud_radar_ConstructRadarInfo( 1 ); */
      wpr_attrac   883            /*  2) Draw sky and setup the camera. */
      wpr_attrac   884            _DemoModeCamera( _StageNum, 3 );
    00000ADC D215                   MOV.L       L2569+34,R2; L2041
    00000ADE E503                   MOV         #3,R5
    00000AE0 B052                   BSR         L2058
    00000AE2 6422                   MOV.L       @R2,R4
      wpr_attrac   885            sky_SetWhiteSat( anim_air_GetLensFlareWhiteSat
                         +() );
    00000AE4 D21D                   MOV.L       L2569+74,
                        +                                  R2; _anim_air_GetLensFla
                        +                                  reWhiteSat
    00000AE6 420B                   JSR         @R2
    00000AE8 0009                   NOP
    00000AEA D320                   MOV.L       L2569+90,R3; _sky_SetWhiteSat
    00000AEC 430B                   JSR         @R3
    00000AEE F40C                   FMOV.S      FR0,FR4
      wpr_attrac   886            sky_Draw ();
    00000AF0 D21F                   MOV.L       L2569+94,R2; _sky_Draw
    00000AF2 420B                   JSR         @R2
    00000AF4 0009                   NOP
      wpr_attrac   887            
      wpr_attrac   888            /*  3) Draw all visible terrain. */
      wpr_attrac   889            /*  4) Draw all visible world objects. */
      wpr_attrac   890            /*  5) Draw all visible water and waterfalls. 
                         +*/
      wpr_attrac   891            /*  6) Draw water splash effects. */
      wpr_attrac   892            /*  7) Draw opaque particles (sparks, explosio
                         +ns, etc.). */
      wpr_attrac   893            /*  8) Draw high-transparency particles (mist,
                         + spray, etc.). */
      wpr_attrac   894            world_DrawSectorViewDir( Gamecam_pSector, SECT
                         +OR_DIRECTION_FORWARD );
    00000AF6 D220                   MOV.L       L2569+102,
                        +                                  R2; _world_DrawSectorVi
                        +                                  ewDir
    00000AF8 E500                   MOV         #0,R5
    00000AFA D31E                   MOV.L       L2569+98,R3; _Gamecam_pSector
    00000AFC 420B                   JSR         @R2
    00000AFE 6432                   MOV.L       @R3,R4
      wpr_attrac   895    
      wpr_attrac   896            /*  9) Draw HUD and overlay text. */
      wpr_attrac   897            anim_air_DoLensFlare();
    00000B00 D11E                   MOV.L       L2569+106,
                        +                                  R1; _anim_air_DoLensFla
                        +                                  re
    00000B02 410B                   JSR         @R1
    00000B04 0009                   NOP
      wpr_attrac   898            /* 10) Draw splashed screen, if appropriate. *
                         +/
      wpr_attrac   899            _OverLayDraw();
    00000B06 D21E                   MOV.L       L2569+110,R2; L2064
    00000B08 420B                   JSR         @R2
    00000B0A 0009                   NOP
      wpr_attrac   900            /* must be drawn last */
      wpr_attrac   901            hud_wrongway_Draw();
    00000B0C D11D                   MOV.L       L2569+114,R1; _hud_wrongway_Draw
    00000B0E 412B                   JMP         @R1
    00000B10 4F26                   LDS.L       @R15+,PR
    00000B12              L2569:                            
    00000B12 0128                   .DATA.W     H'0128
    00000B14 01F0                   .DATA.W     H'01F0
    00000B16 014C                   .DATA.W     H'014C
    00000B18 0150                   .DATA.W     H'0150
    00000B1A 00000002               .RES.W      1
    00000B1C <00000000>             .DATA.L     _phys_SimulateAndCollideAll
    00000B20 461C4000               .DATA.L     H'461C4000
    00000B24 <00000000>             .DATA.L     _Gameloop_nDeltaFrames
    00000B28 <00000000>             .DATA.L     _worldob_CallAllWorkFcns
    00000B2C <00000000>             .DATA.L     _worldcoll_Work
    00000B30 <00000000>             .DATA.L     _collide_obj_Work
    00000B34 <00000000>             .DATA.L     L2041
    00000B38 <00000000>             .DATA.L     _particle_CallWorkFunctions
    00000B3C <00000000>             .DATA.L     _particle_CallCellBlocksWorkFunc
                        +                       tions
    00000B40 <00000000>             .DATA.L     _waterspray_Work
    00000B44 <00000000>             .DATA.L     _worldob_TransformAllObjectLight
                        +       
    00000B48 <00000000>             .DATA.L     _player_UpdateRank
    00000B4C <00000000>             .DATA.L     L2063
    00000B50 <00000000>             .DATA.L     _hud_wrongway_Work
    00000B54 <00000000>             .DATA.L     _phys_Work
    00000B58 <00000000>             .DATA.L     _gutil_ScreenCoverage_ResetTotal
    00000B5C <00000000>             .DATA.L     _anim_air_GetLensFlareWhiteSat
    00000B60 <00000000>             .DATA.L     _world_SetWhiteSat
    00000B64 <00000000>             .DATA.L     _mesh3d_ClearLightList
    00000B68 <00000000>             .DATA.L     _anim_air_Lightning
    00000B6C <00000000>             .DATA.L     _sky_SetWhiteSat
    00000B70 <00000000>             .DATA.L     _sky_Draw
    00000B74 <00000000>             .DATA.L     _Gamecam_pSector
    00000B78 <00000000>             .DATA.L     _world_DrawSectorViewDir
    00000B7C <00000000>             .DATA.L     _anim_air_DoLensFlare
    00000B80 <00000000>             .DATA.L     L2064
    00000B84 <00000000>             .DATA.L     _hud_wrongway_Draw
      wpr_attrac   902    }
      wpr_attrac   903    
      wpr_attrac   904    
      wpr_attrac   905    static Vec3_t _CamPos, _CamLook, _BSCamPos;
      wpr_attrac   906    static Cam_t _Camera;
      wpr_attrac   907    static u32 _nCurrentCamPlayer;
      wpr_attrac   908    static u32 _nCurrentCamType;
      wpr_attrac   909    static int _nCamHeading;
      wpr_attrac   910    static u32 _n2ndCamPlayer;
      wpr_attrac   911    
      wpr_attrac   912    
      wpr_attrac   913    /* SCRIPT OUT ALL DEMO MODE CAMERA BEHAVIOR HERE!!! */
      wpr_attrac   914    /* nStageNum is the current attract mode stage */
      wpr_attrac   915    /* nMode is on of the following: */
      wpr_attrac   916    /* 0 = init */
      wpr_attrac   917    /* 1 = cleanup */
      wpr_attrac   918    /* 2 = work call */
      wpr_attrac   919    /* 3 = draw call */
      wpr_attrac   920    static void _DemoModeCamera( u32 nStagp, u32 nMode 
                         +) {
    00000B88              L2058:                           ; function: _DemoMode
                        +                                  Camera
                                                           ; frame size=56
    00000B88 2FE6                   MOV.L       R14,@-R15
    00000B8A 2FD6                   MOV.L       R13,@-R15
    00000B8C 2FC6                   MOV.L       R12,@-R15
    00000B8E 2FB6                   MOV.L       R11,@-R15
    00000B90 2FA6                   MOV.L       R10,@-R15
    00000B92 FFFB                   FMOV.S      FR15,@-R15
    00000B94 FFEB                   FMOV.S      FR14,@-R15
    00000B96 FFDB                   FMOV.S      FR13,@-R15
    00000B98 FFCB                   FMOV.S      FR12,@-R15
    00000B9A 4F22                   STS.L       PR,@-R15
    00000B9C 7FF4                   ADD         #-12,R15
      wpr_attrac   921            Vec3_t CamPos;
      wpr_attrac   922    
      wpr_attrac   923            /* clean up here */
      wpr_attrac   924            if( nMode == 1 ) {
    00000B9E 6053                   MOV         R5,R0
    00000BA0 0009                   NOP
    00000BA2 8801                   CMP/EQ      #1,R0
    00000BA4 8F06                   BF/S        L2453
    00000BA6 EE00                   MOV         #0,R14
      wpr_attrac   925                    gamecam_Unattach();
    00000BA8 D22D                   MOV.L       L2570+10,R2; _gamecam_Unattach
    00000BAA 420B                   JSR         @R2
    00000BAC 0009                   NOP
      wpr_attrac   926  E                 Gamecam_pSector = 0;
    00000BAE D32D                   MOV.L       L2570+14,R3; _Gamecam_pSector
      wpr_attrac   927                    return;
    00000BB0 A2A8                   BRA         L2454
    00000BB2 23E2                   MOV.L       R14,@R3
    00000BB4              L2453:                            
      wpr_attrac   928            }
      wpr_attrac   929    
      wpr_attrac   930            switch( nStageNum ) 
    00000BB4 C72F                   MOVA        L2570+30,R0
    00000BB6 DD31                   MOV.L       L2570+38,R13; _vec3_Set
    00000BB8 FD08                   FMOV.S      @R0,FR13
    00000BBA C72F                   MOVA        L2570+34,R0
    00000BBC FE08                   FMOV.S      @R0,FR14
    00000BBE EC01                   MOV         #1,R12
    00000BC0 D62B                   MOV.L       L2570+26,R6; L2052
    00000BC2 DB2A                   MOV.L       L2570+22,R11; _gerr_Assert
    00000BC4 DA28                   MOV.L       L2570+18,R10; L2071
    00000BC6 6043                   MOV         R4,R0
    00000BC8 0009                   NOP
    00000BCA 880E                   CMP/EQ      #14,R0
    00000BCC 8D14                   BT/S        L2274
    00000BCE FF8D                   FLDI0       FR15
    00000BD0 8810                   CMP/EQ      #16,R0
    00000BD2 8B01                   BF          L2571
    00000BD4 A0B3                   BRA         L2287
    00000BD6 0009                   NOP
    00000BD8              L2571:                            
    00000BD8 8812                   CMP/EQ      #18,R0
    00000BDA 8B01                   BF          L2572
    00000BDC A1AC                   BRA         L2306
    00000BDE 0009                   NOP
    00000BE0              L2572:                            
    00000BE0 8814                   CMP/EQ      #20,R0
    00000BE2 8909                   BT          L2275
    00000BE4 8816                   CMP/EQ      #22,R0
    00000BE6 8B01                   BF          L2573
    00000BE8 A0A9                   BRA         L2288
    00000BEA 0009                   NOP
    00000BEC              L2573:                            
    00000BEC 8818                   CMP/EQ      #24,R0
    00000BEE 8B01                   BF          L2574
    00000BF0 A1A2                   BRA         L2307
    00000BF2 0009                   NOP
    00000BF4              L2574:                            
    00000BF4 A282                   BRA         L2323
    00000BF6 0009                   NOP
    00000BF8              L2274:                           ; case label 
      wpr_attrac   931            {
      wpr_attrac   932            case WPR_ATTRACT_STAGE_1:
      wpr_attrac   933            case WPR_ATTRACT_STAGE_7:
    00000BF8              L2275:                           ; case label 
      wpr_attrac   934                    /* powell, 1st set of starts( boats: 0
                         + razor, 1 cut, 2 tidal, 3 miss ) */
      wpr_attrac   935                    switch( nMode )
    00000BF8 6053                   MOV         R5,R0
    00000BFA 0009                   NOP
    00000BFC 8800                   CMP/EQ      #0,R0
    00000BFE 8907                   BT          L2276
    00000C00 8802                   CMP/EQ      #2,R0
    00000C02 8914                   BT          L2277
    00000C04 8803                   CMP/EQ      #3,R0
    00000C06 8B01                   BF          L2575
    00000C08 A26E                   BRA         L2531
    00000C0A 0009                   NOP
    00000C0C              L2575:                            
    00000C0C A091                   BRA         L2286
    00000C0E 0009                   NOP
    00000C10              L2276:                           ; case label 
      wpr_attrac   936                    {
      wpr_attrac   937                    case 0:
      wpr_attrac   938                            vec3_Set( &CamPos, 5787.0f, 12
                         +50.0f, -898.0f );
    00000C10 C71B                   MOVA        L2570+42,R0
    00000C12 F608                   FMOV.S      @R0,FR6
    00000C14 C71B                   MOVA        L2570+46,R0
    00000C16 F508                   FMOV.S      @R0,FR5
    00000C18 C71B                   MOVA        L2570+50,R0
    00000C1A F408                   FMOV.S      @R0,FR4
    00000C1C 4D0B                   JSR         @R13
    00000C1E 64F3                   MOV         R15,R4
      wpr_attrac   939                            _InitCam( 0, _CHASE_CAM, &CamP
                         +os, 0, 0 );
    00000C20 2FE6                   MOV.L       R14,@-R15
    00000C22 E509                   MOV         #9,R5
    00000C24 66F3                   MOV         R15,R6
    00000C26 7604                   ADD         #4,R6
    00000C28 E700                   MOV         #0,R7
      wpr_attrac   940                            break;
    00000C2A A255                   BRA         L2536
    00000C2C 6473                   MOV         R7,R4
    00000C2E              L2277:                           ; case label 
      wpr_attrac   941                    case 2:
      wpr_attrac   942                            switch( _nFrameCount )
    00000C2E 6062                   MOV.L       @R6,R0
    00000C30 8864                   CMP/EQ      #100,R0
    00000C32 892B                   BT          L2278
    00000C34 910F                   MOV.W       L2570,R1   ; H'00FF
    00000C36 3010                   CMP/EQ      R1,R0
    00000C38 892F                   BT          L2279
    00000C3A 910D                   MOV.W       L2570+2,R1 ; H'01CC
    00000C3C 3010                   CMP/EQ      R1,R0
    00000C3E 8932                   BT          L2280
    00000C40 910B                   MOV.W       L2570+4,R1 ; H'0267
    00000C42 3010                   CMP/EQ      R1,R0
    00000C44 893E                   BT          L2281
    00000C46 9109                   MOV.W       L2570+6,R1 ; H'0393
    00000C48 3010                   CMP/EQ      R1,R0
    00000C4A 894A                   BT          L2282
    00000C4C 9107                   MOV.W       L2570+8,R1 ; H'04A6
    00000C4E 3010                   CMP/EQ      R1,R0
    00000C50 8959                   BT          L2283
    00000C52 A06A                   BRA         L2284
    00000C54 0009                   NOP
    00000C56              L2570:                            
    00000C56 00FF                   .DATA.W     H'00FF
    00000C58 01CC                   .DATA.W     H'01CC
    00000C5A 0267                   .DATA.W     H'0267
    00000C5C 0393                   .DATA.W     H'0393
    00000C5E 04A6                   .DATA.W     H'04A6
    00000C60 <00000000>             .DATA.L     _gamecam_Unattach
    00000C64 <00000000>             .DATA.L     _Gamecam_pSector
    00000C68 <00000000>             .DATA.L     L2071
    00000C6C <00000000>             .DATA.L     _gerr_Assert
    00000C70 <00000000>             .DATA.L     L2052
    00000C74 40E00000               .DATA.L     H'40E00000
    00000C78 C1000000               .DATA.L     H'C1000000
    00000C7C <00000000>             .DATA.L     _vec3_Set
    00000C80 C4608000               .DATA.L     H'C4608000
    00000C84 449C4000               .DATA.L     H'449C4000
    00000C88 45B4D800               .DATA.L     H'45B4D800
    00000C8C              L2278:                           ; case label 
      wpr_attrac   943                            {
      wpr_attrac   944                            case 100:
      wpr_attrac   945                                    vec3_Set( &CamPos, 460
                         +2.0f, 72.0f, -3161.0f );
    00000C8C C73A                   MOVA        L2576+4,R0
    00000C8E F608                   FMOV.S      @R0,FR6
    00000C90 C73A                   MOVA        L2576+8,R0
    00000C92 F508                   FMOV.S      @R0,FR5
    00000C94 C73A                   MOVA        L2576+12,R0
      wpr_attrac   946                                    _InitCam( 2, _ESPN_CAM
                         +, &CamPos, 0, 0 );
      wpr_attrac   947                                    break;
    00000C96 A00C                   BRA         L2532
    00000C98 F408                   FMOV.S      @R0,FR4
    00000C9A              L2279:                           ; case label 
      wpr_attrac   948                            case 255:
      wpr_attrac   949  E                                 _InitCam( 1, _GAME_CAM
                         +2, 0, 0, 0 );
    00000C9A E700                   MOV         #0,R7
    00000C9C 2FE6                   MOV.L       R14,@-R15
    00000C9E E501                   MOV         #1,R5
    00000CA0 6673                   MOV         R7,R6
      wpr_attrac   950                                    break;
    00000CA2 A03E                   BRA         L2533
    00000CA4 6453                   MOV         R5,R4
    00000CA6              L2280:                           ; case label 
      wpr_attrac   951                            case 460:
      wpr_attrac   952                                    vec3_Set( &CamPos, 264
                         +4.0f, -36.0f, -355.0f );
    00000CA6 C737                   MOVA        L2576+16,R0
    00000CA8 F608                   FMOV.S      @R0,FR6
    00000CAA C737                   MOVA        L2576+20,R0
    00000CAC F508                   FMOV.S      @R0,FR5
    00000CAE C737                   MOVA        L2576+24,R0
    00000CB0 F408                   FMOV.S      @R0,FR4
      wpr_attrac   953                                    _InitCam( 2, _ESPN_CAM
                         +, &CamPos, 0, 0 );
      wpr_attrac   954                                    break;
    00000CB2              L2532:                            
    00000CB2 4D0B                   JSR         @R13
    00000CB4 64F3                   MOV         R15,R4
    00000CB6 2FE6                   MOV.L       R14,@-R15
    00000CB8 E503                   MOV         #3,R5
    00000CBA 66F3                   MOV         R15,R6
    00000CBC 7604                   ADD         #4,R6
    00000CBE E700                   MOV         #0,R7
    00000CC0 A02F                   BRA         L2533
    00000CC2 E402                   MOV         #2,R4
    00000CC4              L2281:                           ; case label 
      wpr_attrac   955                            case 615:
      wpr_attrac   956                                    vec3_Set( &CamPos, 7.0
                      +f, 7.5f, -6.0f );
    00000CC4 C732                   MOVA        L2576+28,R0
    00000CC6 F4DC                   FMOV.S      FR13,FR4
    00000CC8 F608                   FMOV.S      @R0,FR6
    00000CCA C732                   MOVA        L2576+32,R0
    00000CCC F508                   FMOV.S      @R0,FR5
    00000CCE 4D0B                   JSR         @R13
    00000CD0 64F3                   MOV         R15,R4
      wpr_attrac   957                                    _InitCam( 3, _ESPN3_CA
                         +M, &CamPos, 0, 1 );
    00000CD2 2FC6                   MOV.L       R12,@-R15
    00000CD4 E507                   MOV         #7,R5
    00000CD6 66F3                   MOV         R15,R6
    00000CD8 E403                   MOV         #3,R4
    00000CDA E700                   MOV         #0,R7
    00000CDC 7604                   ADD         #4,R6
      wpr_attrac   958                                    break;
    00000CDE A020                   BRA         L2533
    00000CE0 0009                   NOP
    00000CE2              L2282:                           ; case label 
      wpr_attrac   959                            case 915:
      wpr_attrac   960                                    vec3_Set( &CamPos, -5.
                         +0f, 9.5f, 25.0f );
    00000CE2 C72D                   MOVA        L2576+36,R0
    00000CE4 F608                   FMOV.S      @R0,FR6
    00000CE6 C72D                   MOVA        L2576+40,R0
    00000CE8 F508                   FMOV.S      @R0,FR5
    00000CEA C72D                   MOVA        L2576+44,R0
    00000CEC F408                   FMOV.S      @R0,FR4
    00000CEE 4D0B                   JSR         @R13
    00000CF0 64F3                   MOV         R15,R4
      wpr_attrac   961                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 2 );
    00000CF2 E302                   MOV         #2,R3
    00000CF4 2F36                   MOV.L       R3,@-R15
    00000CF6 E506                   MOV         #6,R5
    00000CF8 66F3                   MOV         R15,R6
    00000CFA 7604                   ADD         #4,R6
    00000CFC E700                   MOV         #0,R7
    00000CFE B215                   BSR         L2059
    00000D00 6473                   MOV         R7,R4
      wpr_attrac   962                                    break;
    00000D02 A1EB                   BRA         L2530
    00000D04 0009                   NOP
    00000D06              L2283:                           ; case label 
      wpr_attrac   963                            case 1190:
      wpr_attrac   964                                    vec3_Set( &CamPos, -15
                         +25.0f, -95.0f, 4460.0f );
    00000D06 C727                   MOVA        L2576+48,R0
    00000D08 F608                   FMOV.S      @R0,FR6
    00000D0A C727                   MOVA        L2576+52,R0
    00000D0C F508                   FMOV.S      @R0,FR5
    00000D0E C727                   MOVA        L2576+56,R0
    00000D10 F408                   FMOV.S      @R0,FR4
    00000D12 4D0B                   JSR         @R13
    00000D14 64F3                   MOV         R15,R4
      wpr_attrac   965                                    _InitCam( 0, _ESPN_CAM
                         +, &CamPos, 0, 0 );
    00000D16 2FE6                   MOV.L       R14,@-R15
    00000D18 E503                   MOV         #3,R5
    00000D1A 66F3                   MOV         R15,R6
    00000D1C E400                   MOV         #0,R4
    00000D1E E700                   MOV         #0,R7
    00000D20 7604                   ADD         #4,R6
      wpr_attrac   966                                    break;
    00000D22              L2533:                            
    00000D22 B203                   BSR         L2059
    00000D24 0009                   NOP
    00000D26 A1D9                   BRA         L2530
    00000D28 0009                   NOP
    00000D2A              L2284:                          ; default label 
      wpr_attrac   967                            default:
      wpr_attrac   968                                    _CamWork();
    00000D2A B4E9                   BSR         L2060
    00000D2C 0009                   NOP
      wpr_attrac   969                                    break;
      wpr_attrac   970                            }
      wpr_attrac   971                            break;
    00000D2E A1E9                   BRA         L2454
    00000D30 0009                   NOP
    00000D32              L2286:                           ; default label 
      wpr_attrac   972                    case 3:
      wpr_attrac   973                            _CamDraw();
      wpr_attrac   974                            break;
      wpr_attrac   975                    default:
      wpr_attrac   976  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +wpr_attract.c", 976 );
    00000D32 961F                   MOV.W       L2576,R6   ; H'03D0
    00000D34 65A3                   MOV         R10,R5
    00000D36 4B0B                   JSR         @R11
    00000D38 E400                   MOV         #0,R4
      wpr_attrac   977                            break;
      wpr_attrac   978                    }
      wpr_attrac   979                    break;
    00000D3A A1E3                   BRA         L2454
    00000D3C 0009                   NOP
    00000D3E              L2287:                           ; case label 
      wpr_attrac   980            case WPR_ATTRACT_STAGE_3:
      wpr_attrac   981            case WPR_ATTRACT_STAGE_9:
    00000D3E              L2288:                           ; case label 
      wpr_attrac   982                    /* artic, 1st set of starts( boats: 0 
                         +cut, 1 tidal, 2 miss, 3 damn ) */
      wpr_attrac   983                    switch( nMode )
    00000D3E 6053                   MOV         R5,R0
    00000D40 0009                   NOP
    00000D42 8800                   CMP/EQ      #0,R0
    00000D44 8907                   BT          L2289
    00000D46 8802                   CMP/EQ      #2,R0
    00000D48 8938                   BT          L2290
    00000D4A 8803                   CMP/EQ      #3,R0
    00000D4C 8B01                   BF          L2577
    00000D4E A0E9                   BRA         L2304
    00000D50 0009                   NOP
    00000D52              L2577:                            
    00000D52 A0EB                   BRA         L2305
    00000D54 0009                   NOP
    00000D56              L2289:                           ; case label 
      wpr_attrac   984                    {
      wpr_attrac   985                    case 0:
      wpr_attrac   986                            vec3_Set( &CamPos, -2145.0f, 2
                         +20.0f, 1008.0f );
    00000D56 C716                   MOVA        L2576+60,R0
    00000D58 F608                   FMOV.S      @R0,FR6
    00000D5A C716                   MOVA        L2576+64,R0
    00000D5C F508                   FMOV.S      @R0,FR5
    00000D5E C716                   MOVA        L2576+68,R0
    00000D60 F408                   FMOV.S      @R0,FR4
    00000D62 4D0B                   JSR         @R13
    00000D64 64F3                   MOV         R15,R4
      wpr_attrac   987                            _InitCam( 0, _ESPN_CAM, &CamPo
                         +s, 0, 0 );
    00000D66 2FE6                   MOV.L       R14,@-R15
    00000D68 E503                   MOV         #3,R5
    00000D6A 66F3                   MOV         R15,R6
    00000D6C 7604                   ADD         #4,R6
    00000D6E E700                   MOV         #0,R7
      wpr_attrac   988                            break;
    00000D70 A1B2                   BRA         L2536
    00000D72 6473                   MOV         R7,R4
    00000D74              L2576:                            
    00000D74 03D0                   .DATA.W     H'03D0
    00000D76 00000002               .RES.W      1
    00000D78 C5459000               .DATA.L     H'C5459000
    00000D7C 42900000               .DATA.L     H'42900000
    00000D80 458FD000               .DATA.L     H'458FD000
    00000D84 C3B18000               .DATA.L     H'C3B18000
    00000D88 C2100000               .DATA.L     H'C2100000
    00000D8C 45254000               .DATA.L     H'45254000
    00000D90 C0C00000               .DATA.L     H'C0C00000
    00000D94 40F00000               .DATA.L     H'40F00000
    00000D98 41C80000               .DATA.L     H'41C80000
    00000D9C 41180000               .DATA.L     H'41180000
    00000DA0 C0A00000               .DATA.L     H'C0A00000
    00000DA4 458B6000               .DATA.L     H'458B6000
    00000DA8 C2BE0000               .DATA.L     H'C2BE0000
    00000DAC C4BEA000               .DATA.L     H'C4BEA000
    00000DB0 447C0000               .DATA.L     H'447C0000
    00000DB4 435C0000               .DATA.L     H'435C0000
    00000DB8 C5061000               .DATA.L     H'C5061000
    00000DBC              L2290:                           ; case label 
      wpr_attrac   989                    case 2:
      wpr_attrac   990                            switch( _nFrameCount )
    00000DBC C73B                   MOVA        L2578+24,R0
    00000DBE 9169                   MOV.W       L2578,R1   ; H'00FA
    00000DC0 FC08                   FMOV.S      @R0,FR12
    00000DC2 6062                   MOV.L       @R6,R0
    00000DC4 3010                   CMP/EQ      R1,R0
    00000DC6 8922                   BT          L2291
    00000DC8 9165                   MOV.W       L2578+2,R1 ; H'0177
    00000DCA 3010                   CMP/EQ      R1,R0
    00000DCC 8925                   BT          L2292
    00000DCE 9163                   MOV.W       L2578+4,R1 ; H'01F4
    00000DD0 3010                   CMP/EQ      R1,R0
    00000DD2 8928                   BT          L2293
    00000DD4 9161                   MOV.W       L2578+6,R1 ; H'0271
    00000DD6 3010                   CMP/EQ      R1,R0
    00000DD8 892B                   BT          L2294
    00000DDA 915F                   MOV.W       L2578+8,R1 ; H'02EE
    00000DDC 3010                   CMP/EQ      R1,R0
    00000DDE 892E                   BT          L2295
    00000DE0 915D                   MOV.W       L2578+10,R1; H'036B
    00000DE2 3010                   CMP/EQ      R1,R0
    00000DE4 8931                   BT          L2296
    00000DE6 915B                   MOV.W       L2578+12,R1; H'039D
    00000DE8 3010                   CMP/EQ      R1,R0
    00000DEA 893A                   BT          L2297
    00000DEC 9159                   MOV.W       L2578+14,R1; H'03CF
    00000DEE 3010                   CMP/EQ      R1,R0
    00000DF0 8944                   BT          L2298
    00000DF2 9157                   MOV.W       L2578+16,R1; H'0401
    00000DF4 3010                   CMP/EQ      R1,R0
    00000DF6 895D                   BT          L2299
    00000DF8 9155                   MOV.W       L2578+18,R1; H'0433
    00000DFA 3010                   CMP/EQ      R1,R0
    00000DFC 8967                   BT          L2300
    00000DFE 9153                   MOV.W       L2578+20,R1; H'0465
    00000E00 3010                   CMP/EQ      R1,R0
    00000E02 8970                   BT          L2301
    00000E04 9151                   MOV.W       L2578+22,R1; H'04D8
    00000E06 3010                   CMP/EQ      R1,R0
    00000E08 897B                   BT          L2302
    00000E0A A087                   BRA         L2303
    00000E0C 0009                   NOP
    00000E0E              L2291:                           ; case label 
      wpr_attrac   991                            {
      wpr_attrac   992                            case 250:
      wpr_attrac   993  E                                 _InitCam( 2, _GAME_CAM
                         +3, 0, 0, 0 );
    00000E0E E700                   MOV         #0,R7
    00000E10 2FE6                   MOV.L       R14,@-R15
    00000E12 E502                   MOV         #2,R5
    00000E14 6673                   MOV         R7,R6
      wpr_attrac   994                                    break;
    00000E16 A15F                   BRA         L2536
    00000E18 6453                   MOV         R5,R4
    00000E1A              L2292:                           ; case label 
      wpr_attrac   995                            case 375:
      wpr_attrac   996  E                                 _InitCam( 2, _GAME_CAM
                         +2, 0, 0, 0 );
    00000E1A E700                   MOV         #0,R7
    00000E1C 2FE6                   MOV.L       R14,@-R15
    00000E1E E501                   MOV         #1,R5
    00000E20 6673                   MOV         R7,R6
      wpr_attrac   997                                    break;
    00000E22 A159                   BRA         L2536
    00000E24 E402                   MOV         #2,R4
    00000E26              L2293:                           ; case label 
      wpr_attrac   998                            case 500:
      wpr_attrac   999  E                                 _InitCam( 2, _GAME_CAM
                         +1, 0, 0, 0 );
    00000E26 E700                   MOV         #0,R7
    00000E28 2FE6                   MOV.L       R14,@-R15
    00000E2A 6573                   MOV         R7,R5
    00000E2C 6673                   MOV         R7,R6
      wpr_attrac  1000                                    break;
    00000E2E A153                   BRA         L2536
    00000E30 E402                   MOV         #2,R4
    00000E32              L2294:                           ; case label 
      wpr_attrac  1001                            case 625:
      wpr_attrac  1002  E                                 _InitCam( 2, _GAME_CAM
                         +2, 0, 0, 0 );
    00000E32 E700                   MOV         #0,R7
    00000E34 2FE6                   MOV.L       R14,@-R15
    00000E36 E501                   MOV         #1,R5
    00000E38 6673                   MOV         R7,R6
      wpr_attrac  1003                                    break;
    00000E3A A14D                   BRA         L2536
    00000E3C E402                   MOV         #2,R4
    00000E3E              L2295:                           ; case label 
      wpr_attrac  1004                            case 750:
      wpr_attrac  1005  E                                 _InitCam( 2, _GAME_CAM
                         +3, 0, 0, 0 );
    00000E3E E700                   MOV         #0,R7
    00000E40 2FE6                   MOV.L       R14,@-R15
    00000E42 E502                   MOV         #2,R5
    00000E44 6673                   MOV         R7,R6
      wpr_attrac  1006                                    break;
    00000E46 A147                   BRA         L2536
    00000E48 6453                   MOV         R5,R4
    00000E4A              L2296:                           ; case label 
      wpr_attrac  1007                            case 875:
      wpr_attrac  1008                                    vec3_Set( &CamPos, 0.0
                         +f, 9.0f, -8.0f );
    00000E4A F4FC                   FMOV.S      FR15,FR4
    00000E4C F5CC                   FMOV.S      FR12,FR5
    00000E4E F6EC                   FMOV.S      FR14,FR6
    00000E50 4D0B                   JSR         @R13
    00000E52 64F3                   MOV         R15,R4
      wpr_attrac  1009                                    _InitCam( 1, _ESPN2_CA
                         +M, &CamPos, 0, 0 );
    00000E54 2FE6                   MOV.L       R14,@-R15
    00000E56 E506                   MOV         #6,R5
    00000E58 66F3                   MOV         R15,R6
    00000E5A 7604                   ADD         #4,R6
    00000E5C E700                   MOV         #0,R7
      wpr_attrac  1010                                    break;
    00000E5E A13B                   BRA         L2536
    00000E60 E401                   MOV         #1,R4
    00000E62              L2297:                           ; case label 
      wpr_attrac  1011                            case 925:
      wpr_attrac  1012                                    vec3_Set( &CamPos, 0.0
                         +f, 7.0f, 12.0f );
    00000E62 C713                   MOVA        L2578+28,R0
    00000E64 F4FC                   FMOV.S      FR15,FR4
    00000E66 F608                   FMOV.S      @R0,FR6
    00000E68 F5DC                   FMOV.S      FR13,FR5
    00000E6A 4D0B                   JSR         @R13
    00000E6C 64F3                   MOV         R15,R4
      wpr_attrac  1013                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 1 );
    00000E6E 2FC6                   MOV.L       R12,@-R15
    00000E70 E506                   MOV         #6,R5
    00000E72 66F3                   MOV         R15,R6
    00000E74 7604                   ADD         #4,R6
    00000E76 E700                   MOV         #0,R7
      wpr_attrac  1014                                    break;
    00000E78 A12E                   BRA         L2536
    00000E7A 6473                   MOV         R7,R4
    00000E7C              L2298:                           ; case label 
      wpr_attrac  1015                            case 975:
      wpr_attrac  1016                                    vec3_Set( &CamPos, 0.0
                         +f, 9.0f, -8.0f );
    00000E7C F4FC                   FMOV.S      FR15,FR4
    00000E7E F5CC                   FMOV.S      FR12,FR5
    00000E80 F6EC                   FMOV.S      FR14,FR6
    00000E82 4D0B                   JSR         @R13
    00000E84 64F3                   MOV         R15,R4
      wpr_attrac  1017                                    _InitCam( 1, _ESPN2_CA
                         +M, &CamPos, 0, 0 );
    00000E86 2FE6                   MOV.L       R14,@-R15
    00000E88 E506                   MOV         #6,R5
    00000E8A 66F3                   MOV         R15,R6
    00000E8C 7604                   ADD         #4,R6
    00000E8E E700                   MOV         #0,R7
      wpr_attrac  1018                                    break;
    00000E90 A122                   BRA         L2536
    00000E92 E401                   MOV         #1,R4
    00000E94              L2578:                            
    00000E94 00FA                   .DATA.W     H'00FA
    00000E96 0177                   .DATA.W     H'0177
    00000E98 01F4                   .DATA.W     H'01F4
    00000E9A 0271                   .DATA.W     H'0271
    00000E9C 02EE                   .DATA.W     H'02EE
    00000E9E 036B                   .DATA.W     H'036B
    00000EA0 039D                   .DATA.W     H'039D
    00000EA2 03CF                   .DATA.W     H'03CF
    00000EA4 0401                   .DATA.W     H'0401
    00000EA6 0433                   .DATA.W     H'0433
    00000EA8 0465                   .DATA.W     H'0465
    00000EAA 04D8                   .DATA.W     H'04D8
    00000EAC 41100000               .DATA.L     H'41100000
    00000EB0 41400000               .DATA.L     H'41400000
    00000EB4              L2299:                           ; case label 
      wpr_attrac  1019                            case 1025:
      wpr_attrac  1020                                    vec3_Set( &CamPos, 0.0
                         +f, 7.0f, 12.0f );
    00000EB4 C732                   MOVA        L2579+2,R0
    00000EB6 F4FC                   FMOV.S      FR15,FR4
    00000EB8 F608                   FMOV.S      @R0,FR6
    00000EBA F5DC                   FMOV.S      FR13,FR5
    00000EBC 4D0B                   JSR         @R13
    00000EBE 64F3                   MOV         R15,R4
      wpr_attrac  1021                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 1 );
    00000EC0 2FC6                   MOV.L       R12,@-R15
    00000EC2 E506                   MOV         #6,R5
    00000EC4 66F3                   MOV         R15,R6
    00000EC6 7604                   ADD         #4,R6
    00000EC8 E700                   MOV         #0,R7
      wpr_attrac  1022                                    break;
    00000ECA A105                   BRA         L2536
    00000ECC 6473                   MOV         R7,R4
    00000ECE              L2300:                           ; case label 
      wpr_attrac  1023                            case 1075:
      wpr_attrac  1024                                    vec3_Set( &CamPos, 0.0
                         +f, 9.0f, -8.0f );
    00000ECE F4FC                   FMOV.S      FR15,FR4
    00000ED0 F5CC                   FMOV.S      FR12,FR5
    00000ED2 F6EC                   FMOV.S      FR14,FR6
    00000ED4 4D0B                   JSR         @R13
    00000ED6 64F3                   MOV         R15,R4
      wpr_attrac  1025                                    _InitCam( 1, _ESPN2_CA
                         +M, &CamPos, 0, 0 );
    00000ED8 2FE6                   MOV.L       R14,@-R15
    00000EDA E506                   MOV         #6,R5
    00000EDC 66F3                   MOV         R15,R6
    00000EDE 7604                   ADD         #4,R6
    00000EE0 E700                   MOV         #0,R7
      wpr_attrac  1026                                    break;
    00000EE2 A0F9                   BRA         L2536
    00000EE4 E401                   MOV         #1,R4
    00000EE6              L2301:                           ; case label 
      wpr_attrac  1027                            case 1125:
      wpr_attrac  1028                                    vec3_Set( &CamPos, 0.0
                         +f, 7.0f, 12.0f );
    00000EE6 C726                   MOVA        L2579+2,R0
    00000EE8 F4FC                   FMOV.S      FR15,FR4
    00000EEA F608                   FMOV.S      @R0,FR6
    00000EEC F5DC                   FMOV.S      FR13,FR5
    00000EEE 4D0B                   JSR         @R13
    00000EF0 64F3                   MOV         R15,R4
      wpr_attrac  1029                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 1 );
    00000EF2 2FC6                   MOV.L       R12,@-R15
    00000EF4 E506                   MOV         #6,R5
    00000EF6 66F3                   MOV         R15,R6
    00000EF8 E400                   MOV         #0,R4
    00000EFA E700                   MOV         #0,R7
    00000EFC 7604                   ADD         #4,R6
      wpr_attrac  1030                                    break;
    00000EFE A0EB                   BRA         L2536
    00000F00 0009                   NOP
    00000F02              L2302:                           ; case label 
      wpr_attrac  1031                            case 1240:
      wpr_attrac  1032                                    vec3_Copy( &CamPos, &_
                         +CamPos );
    00000F02 D321                   MOV.L       L2579+10,R3; _vec3_Copy
    00000F04 D51F                   MOV.L       L2579+6,R5 ; L2138
    00000F06 430B                   JSR         @R3
    00000F08 64F3                   MOV         R15,R4
      wpr_attrac  1033                                    _InitCam( 0, _ESPN_CAM
                         +, &CamPos, 0, 0 );
    00000F0A 2FE6                   MOV.L       R14,@-R15
    00000F0C E503                   MOV         #3,R5
    00000F0E 66F3                   MOV         R15,R6
    00000F10 7604                   ADD         #4,R6
    00000F12 E700                   MOV         #0,R7
    00000F14 B10A                   BSR         L2059
    00000F16 6473                   MOV         R7,R4
      wpr_attrac  1034                                    break;
    00000F18 A0E0                   BRA         L2530
    00000F1A 0009                   NOP
    00000F1C              L2303:                           ; default label 
      wpr_attrac  1035                            default:
      wpr_attrac  1036                                    _CamWork();
    00000F1C B3F0                   BSR         L2060
    00000F1E 0009                   NOP
      wpr_attrac  1037                            break;
      wpr_attrac  1038                            }
      wpr_attrac  1039                            break;
    00000F20 A0F0                   BRA         L2454
    00000F22 0009                   NOP
    00000F24              L2304:                           ; case label 
      wpr_attrac  1040                    case 3:
      wpr_attrac  1041                            _CamDraw();
    00000F24 B5BA                   BSR         L2061
    00000F26 0009                   NOP
      wpr_attrac  1042                            break;
    00000F28 A0EC                   BRA         L2454
    00000F2A 0009                   NOP
    00000F2C              L2305:                           ; default label 
      wpr_attrac  1043                    default:
      wpr_attrac  1044  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +wpr_attract.c", 1044 );
    00000F2C 9627                   MOV.W       L2579,R6   ; H'0414
    00000F2E 65A3                   MOV         R10,R5
    00000F30 4B0B                   JSR         @R11
    00000F32 E400                   MOV         #0,R4
      wpr_attrac  1045                            break;
      wpr_attrac  1046                    }
      wpr_attrac  1047                    break;
    00000F34 A0E6                   BRA         L2454
    00000F36 0009                   NOP
    00000F38              L2306:                           ; case label 
      wpr_attrac  1048            case WPR_ATTRACT_STAGE_5:
      wpr_attrac  1049            case WPR_ATTRACT_STAGE_11:
    00000F38              L2307:                           ; case label 
      wpr_attrac  1050                    /* amazon, 1st set of starts( boats: 0
                         + tidal, 1 miss, 2 damn, 3 thresher ) */
      wpr_attrac  1051                    switch( nMode )
    00000F38 6053                   MOV         R5,R0
    00000F3A 0009                   NOP
    00000F3C 8800                   CMP/EQ      #0,R0
    000003E 8907                    BT          L2308
    00000F40 8802                   CMP/EQ      #2,R0
    00000F42 8931                   BT          L2309
    00000F44 8803                   CMP/EQ      #3,R0
    00000F46 8B01                   BF          L2580
    00000F48 A0CE                   BRA         L2321
    00000F4A 0009                   NOP
    00000F4C              L2580:                            
    00000F4C A0D0                   BRA         L2322
    00000F4E 0009                   NOP
    00000F50              L2308:                           ; case label 
      wpr_attrac  1052                    {
      wpr_attrac  1053                    case 0:
      wpr_attrac  1054                            vec3_Set( &_CamLook, -2807.0f,
                         + -478.0f, 15133.0f );
    00000F50 C70E                   MOVA        L2579+14,R0
    00000F52 D411                   MOV.L       L2579+26,R4; L2139
    00000F54 F608                   FMOV.S      @R0,FR6
    00000F56 C70E                   MOVA        L2579+18,R0
    00000F58 F508                   FMOV.S      @R0,FR5
    00000F5A C70E                   MOVA        L2579+22,R0
    00000F5C 4D0B                   JSR         @R13
    00000F5E F408                   FMOV.S      @R0,FR4
      wpr_attrac  1055                            vec3_Set( &CamPos, -3086.0f, -
                         +462.0f, 13286.0f );
    00000F60 C70E                   MOVA        L2579+30,R0
    00000F62 F608                   FMOV.S      @R0,FR6
    00000F64 C70E                   MOVA        L2579+34,R0
    00000F66 F508                   FMOV.S      @R0,FR5
    00000F68 C70E                   MOVA        L2579+38,R0
    00000F6A F408                   FMOV.S      @R0,FR4
    00000F6C 4D0B                   JSR         @R13
    00000F6E 64F3                   MOV         R15,R4
      wpr_attrac  1056                            _InitCam( 0, _STATIONARY_CAM, 
                         +&CamPos, 0, 0 );
    00000F70 2FE6                   MOV.L       R14,@-R15
    00000F72 E508                   MOV         #8,R5
    00000F74 66F3                   MOV         R15,R6
    00000F76 7604                   ADD         #4,R6
    00000F78 E700                   MOV         #0,R7
      wpr_attrac  1057                            break;
    00000F7A A0AD                   BRA         L2536
    00000F7C 6473                   MOV         R7,R4
    00000F7E              L2579:                            
    00000F7E 0414                   .DATA.W     H'0414
    00000F80 41400000               .DATA.L     H'41400000
    00000F84 <00000000>             .DATA.L     L2138
    00000F88 <00000000>             .DATA.L     _vec3_Copy
    00000F8C 466C7400               .DATA.L     H'466C7400
    00000F90 C3EF0000               .DATA.L     H'C3EF0000
    00000F94 C52F7000               .DATA.L     H'C52F7000
    00000F98 <00000000>             .DATA.L     L2139
    00000F9C 464F9800               .DATA.L     H'464F9800
    00000FA0 C3E70000               .DATA.L     H'C3E70000
    00000FA4 C540E000               .DATA.L     H'C540E000
    00000FA8              L2309:                           ; case label 
      wpr_attrac  1058                    case 2:
      wpr_attrac  1059                            switch( _nFrameCount )
    00000FA8 6062                   MOV.L       @R6,R0
    00000FAA 8878                   CMP/EQ      #120,R0
    00000FAC 891C                   BT          L2310
    00000FAE 9163                   MOV.W       L2581,R1   ; H'00C8
    00000FB0 3010                   CMP/EQ      R1,R0
    00000FB2 8928                   BT          L2311
    00000FB4 9161                   MOV.W       L2581+2,R1 ; H'0145
    00000FB6 3010                   CMP/EQ      R1,R0
    00000FB8 892B                   BT          L2312
    00000FBA 915F                   MOV.W       L2581+4,R1 ; H'01C2
    00000FBC 3010                   CMP/EQ      R1,R0
    00000FBE 892E                   BT          L2313
    00000FC0 915D                   MOV.W       L2581+6,R1 ; H'023F
    00000FC2 3010                   CMP/EQ      R1,R0
    00000FC4 8931                   BT          L2314
    00000FC6 915B                   MOV.W       L2581+8,R1 ; H'02BC
    00000FC8 3010                   CMP/EQ      R1,R0
    00000FCA 8934                   BT          L2315
    00000FCC 9159                   MOV.W       L2581+10,R1; H'0339
    00000FCE 3010                   CMP/EQ      R1,R0
    00000FD0 8937                   BT          L2316
    00000FD2 9157                   MOV.W       L2581+12,R1; H'03E8
    00000FD4 3010                   CMP/EQ      R1,R0
    00000FD6 8942                   BT          L2317
    00000FD8 9155                   MOV.W       L2581+14,R1; H'044C
    00000FDA 3010                   CMP/EQ      R1,R0
    00000FDC 8962                   BT          L2318
    00000FDE 9153                   MOV.W       L2581+16,R1; H'04C4
    00000FE0 3010                   CMP/EQ      R1,R0
    00000FE2 896D                   BT          L2319
    00000FE4 A07C                   BRA         L2320
    00000FE6 0009                   NOP
    00000FE8              L2310:                           ; case label 
      wpr_attrac  1060                            {
      wpr_attrac  1061                            case 120:
      wpr_attrac  1062                                    vec3_Set( &CamPos, -31
                         +00.0f, -455.0f, 14048.0f );
    00000FE8 C728                   MOVA        L2581+20,R0
    00000FEA F608                   FMOV.S      @R0,FR6
    00000FEC C728                   MOVA        L2581+24,R0
    00000FEE F508                   FMOV.S      @R0,FR5
    00000FF0 C728                   MOVA        L2581+28,R0
    00000FF2 F408                   FMOV.S      @R0,FR4
    00000FF4 4D0B                   JSR         @R13
    00000FF6 64F3                   MOV         R15,R4
      wpr_attrac  1063                                    _InitCam( 0, _ESPN_CAM
                         +,&CamPos, 0, 0 );
    00000FF8 2FE6                   MOV.L       R14,@-R15
    00000FFA E503                   MOV         #3,R5
    00000FFC 66F3                   MOV         R15,R6
    00000FFE 7604                   ADD         #4,R6
    00001000 E700                   MOV         #0,R7
      wpr_attrac  1064                                    break;
    00001002 A069                   BRA         L2536
    00001004 6473                   MOV         R7,R4
    00001006              L2311:                           ; case label 
      wpr_attrac  1065                            case 200:
      wpr_attrac  1066  E                                 _InitCam( 0, _GAME_CAM
                         +3, 0, 0, 0 );
    00001006 E700                   MOV         #0,R7
    00001008 2FE6                   MOV.L       R14,@-R15
    0000100A E502                   MOV         #2,R5
    0000100C 6673                   MOV         R7,R6
      wpr_attrac  1067                                    break;
    0000100E A063                   BRA         L2536
    00001010 6473                   MOV         R7,R4
    00001012              L2312:                           ; case label 
      wpr_attrac  1068                            case 325:
      wpr_attrac  1069  E                                 _InitCam( 0, _GAME_CAM
                         +2, 0, 0, 0 );
    00001012 E700                   MOV         #0,R7
    00001014 2FE6                   MOV.L       R14,@-R15
    00001016 E501                   MOV         #1,R5
    00001018 6673                   MOV         R7,R6
      wpr_attrac  1070                                    break;
    0000101A A05D                   BRA         L2536
    0000101C 6473                   MOV         R7,R4
    0000101E              L2313:                           ; case label 
      wpr_attrac  1071                            case 450:
      wpr_attrac  1072  E                                 _InitCam( 0, _GAME_CAM
                         +1, 0, 0, 0 );
    0000101E E700                   MOV         #0,R7
    00001020 2FE6                   MOV.L       R14,@-R15
    00001022 6573                   MOV         R7,R5
    00001024 6673                   MOV         R7,R6
      wpr_attrac  1073                                    break;
    00001026 A057                   BRA         L2536
    00001028 6473                   MOV         R7,R4
    0000102A              L2314:                           ; case label 
      wpr_attrac  1074                            case 575:
      wpr_attrac  1075  E                                 _InitCam( 0, _GAME_CAM
                         +2, 0, 0, 0 );
    0000102A E700                   MOV         #0,R7
    0000102C 2FE6                   MOV.L       R14,@-R15
    0000102E E501                   MOV         #1,R5
    00001030 6673                   MOV         R7,R6
      wpr_attrac  1076                                    break;
    00001032 A051                   BRA         L2536
    00001034 6473                   MOV         R7,R4
    00001036              L2315:                           ; case label 
      wpr_attrac  1077                            case 700:
      wpr_attrac  1078  E                                 _InitCam( 0, _GAME_CAM
                         +3, 0, 0, 0 );
    00001036 E700                   MOV         #0,R7
    00001038 2FE6                   MOV.L       R14,@-R15
    0000103A E502                   MOV         #2,R5
    0000103C 6673                   MOV         R7,R6
      wpr_attrac  1079                                    break;
    0000103E A04B                   BRA         L2536
    00001040 6473                   MOV         R7,R4
    00001042              L2316:                           ; case label 
      wpr_attrac  1080                            case 825:
      wpr_attrac  1081                                    vec3_Set( &CamPos, 0.0
                         +f, 6.5f, -4.0f );
    00001042 C715                   MOVA        L2581+32,R0
    00001044 F4FC                   FMOV.S      FR15,FR4
    00001046 F608                   FMOV.S      @R0,FR6
    00001048 C714                   MOVA        L2581+36,R0
    0000104A F508                   FMOV.S      @R0,FR5
    0000104C 4D0B                   JSR         @R13
    0000104E 64F3                   MOV         R15,R4
      wpr_attrac  1082                                    _InitCam( 1, _ESPN2_CA
                         +M, &CamPos, 0, 0 );
    00001050 2FE6                   MOV.L       R14,@-R15
    00001052 E506                   MOV         #6,R5
    00001054 66F3                   MOV         R15,R6
    00001056 7604                   ADD         #4,R6
    00001058 E700                   MOV         #0,R7
      wpr_attrac  1083                                    break;
    0000105A A03D                   BRA         L2536
    0000105C E401                   MOV         #1,R4
    0000105E              L2317:                           ; case label 
      wpr_attrac  1084                            case 1000:
      wpr_attrac  1085                                    vec3_Set( &CamPos, 0.0
                         +f, 8.0f, -8.0f );
    0000105E C710                   MOVA        L2581+40,R0
    00001060 F4FC                   FMOV.S      FR15,FR4
    00001062 F508                   FMOV.S      @R0,FR5
    00001064 F6EC                   FMOV.S      FR14,FR6
    00001066 4D0B                   JSR         @R13
    00001068 64F3                   MOV         R15,R4
      wpr_attrac  1086                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 1 );
    0000106A 2FC6                   MOV.L       R12,@-R15
    0000106C E506                   MOV         #6,R5
    0000106E 66F3                   MOV         R15,R6
    00001070 7604                   ADD         #4,R6
    00001072 E700                   MOV         #0,R7
      wpr_attrac  1087                                    break;
    00001074 A030                   BRA         L2536
    00001076 6473                   MOV         R7,R4
    00001078              L2581:                            
    00001078 00C8                   .DATA.W     H'00C8
    0000107A 0145                   .DATA.W     H'0145
    0000107C 01C2                   .DATA.W     H'01C2
    0000107E 023F                   .DATA.W     H'023F
    00001080 02BC                   .DATA.W     H'02BC
    00001082 0339                   .DATA.W     H'0339
    00001084 03E8                   .DATA.W     H'03E8
    00001086 044C                   .DATA.W     H'044C
    00001088 04C4                   .DATA.W     H'04C4
    0000108A 00000002               .RES.W      1
    0000108C 465B8000               .DATA.L     H'465B8000
    00001090 C3E38000               .DATA.L     H'C3E38000
    00001094 C541C000               .DATA.L     H'C541C000
    00001098 C0800000               .DATA.L     H'C0800000
    0000109C 40D00000               .DATA.L     H'40D00000
    000010A0 41000000               .DATA.L     H'41000000
    000010A4              L2318:                           ; case label 
      wpr_attrac  1088                            case 1100:
      wpr_attrac  1089                                    vec3_Set( &CamPos, 0.0
                         +f, 6.5f, -4.0f );
    000010A4 C71E                   MOVA        L2582+4,R0
    000010A6 F4FC                   FMOV.S      FR15,FR4
    000010A8 F608                   FMOV.S      @R0,FR6
    000010AA C71E                   MOVA        L2582+8,R0
    000010AC F508                   FMOV.S      @R0,FR5
    000010AE 4D0B                   JSR         @R13
    000010B0 64F3                   MOV         R15,R4
      wpr_attrac  1090                                    _InitCam( 1, _ESPN2_CA
                         +M, &CamPos, 0, 0 );
    000010B2 2FE6                   MOV.L       R14,@-R15
    000010B4 E506                   MOV         #6,R5
    000010B6 66F3                   MOV         R15,R6
    000010B8 7604                   ADD         #4,R6
    000010BA E700                   MOV         #0,R7
      wpr_attrac  1091                                    break;
    000010BC A00C                   BRA         L2536
    000010BE E401                   MOV         #1,R4
    000010C0              L2319:                           ; case label 
      wpr_attrac  1092                            case 1220:
      wpr_attrac  1093                                    vec3_Set( &CamPos, 0.0
                         +f, 8.0f, -8.0f );
    000010C0 C719                   MOVA        L2582+12,R0
    000010C2 F4FC                   FMOV.S      FR15,FR4
    000010C4 F508                   FMOV.S      @R0,FR5
    000010C6 F6EC                   FMOV.S      FR14,FR6
    000010C8 4D0B                   JSR         @R13
    000010CA 64F3                   MOV         R15,R4
      wpr_attrac  1094                                    _InitCam( 0, _ESPN2_CA
                         +M, &CamPos, 0, 1 );
    000010CC 2FC6                   MOV.L       R12,@-R15
    000010CE E506                   MOV         #6,R5
    000010D0 66F3                   MOV         R15,R6
    000010D2 E400                   MOV         #0,R4
    000010D4 E700                   MOV         #0,R7
    000010D6 7604                   ADD         #4,R6
      wpr_attrac  1095                                    break;
    000010D8              L2536:                            
    000010D8 B028                   BSR         L2059
    000010DA 0009                   NOP
    000010DC              L2530:                            
    000010DC A012                   BRA         L2454
    000010DE 7F04                   ADD         #4,R15
    000010E0              L2320:                           ; default label 
      wpr_attrac  1096                            default:
      wpr_attrac  1097                                    _CamWork();
    000010E0 B30E                   BSR         L2060
    000010E2 0009                   NOP
      wpr_attrac  1098                            break;
      wpr_attrac  1099                            }
      wpr_attrac  1100                            break;
    000010E4 A00E                   BRA         L2454
    000010E6 0009                   NOP
    000010E8              L2321:                           ; case label 
      wpr_attrac  1101                    case 3:
      wpr_attrac  1102                            _CamDraw();
      wpr_attrac  1103                            break;
    000010E8              L2531:                            
    000010E8 B4D8                   BSR         L2061
    000010EA 0009                   NOP
    000010EC A00A                   BRA         L2454
    000010EE 0009                   NOP
    000010F0              L2322:                           ; default label 
      wpr_attrac  1104                    default:
      wpr_attrac  1105  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +wpr_attract.c", 1105 );
    000010F0 9614                   MOV.W       L2582,R6   ; H'0451
    000010F2 65A3                   MOV         R10,R5
    000010F4 4B0B                   JSR         @R11
    000010F6 E400                   MOV         #0,R4
      wpr_attrac  1106                            break;
      wpr_attrac  1107                    }
      wpr_attrac  1108                    break;
    000010F8 A004                   BRA         L2454
    000010FA 0009                   NOP
    000010FC              L2323:                           ; default label 
      wpr_attrac  1109            default:
      wpr_attrac  1110                    /* we should not try to setup a camera
                         + if this is not a demomode */
      wpr_attrac  1111  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 1111 );
    000010FC 960F                   MOV.W       L2582+2,R6 ; H'0457
    000010FE 65A3                   MOV         R10,R5
    00001100 4B0B                   JSR         @R11
    00001102 E400                   MOV         #0,R4
      wpr_attrac  1112                    break;
      wpr_attrac  1113            }
      wpr_attrac  1114    }
    00001104              L2454:                            
    00001104 7F0C                   ADD         #12,R15
    00001106 4F26                   LDS.L       @R15+,PR
    00001108 FCF9                   FMOV.S      @R15+,FR12
    0000110A FDF9                   FMOV.S      @R15+,FR13
    0000110C FEF9                   FMOV.S      @R15+,FR14
    0000110E FFF9                   FMOV.S      @R15+,FR15
    00001110 6AF6                   MOV.L       @R15+,R10
    00001112 6BF6                   MOV.L       @R15+,R11
    00001114 6CF6                   MOV.L       @R15+,R12
    00001116 6DF6                   MOV.L       @R15+,R13
    00001118 000B                   RTS
    0000111A 6EF6                   MOV.L       @R15+,R14
    0000111C              L2582:                            
    0000111C 0451                   .DATA.W     H'0451
    0000111E 0457                   .DATA.W     H'0457
    00001120 C0800000               .DATA.L     H'C0800000
    00001124 40D00000               .DATA.L     H'40D00000
    00001128 41000000               .DATA.L     H'41000000
      wpr_attrac  1115    
      wpr_attrac  1116    static void _InitCam( u16 nPlayer, u16 nCamType, Vec3_
                         +t *pPos, u16 nAngle, u16 n2ndPlayer ) {
    0000112C              L2059:                           ; function: _InitCam
                                                           ; frame size=108
    0000112C 2FE6                   MOV.L       R14,@-R15
    0000112E 2FD6                   MOV.L       R13,@-R15
    00001130 2FC6                   MOV.L       R12,@-R15
    00001132 2FB6                   MOV.L       R11,@-R15
    00001134 2FA6                   MOV.L       R10,@-R15
    00001136 2F96                   MOV.L       R9,@-R15
    00001138 2F86                   MOV.L       R8,@-R15
    0000113A 4F22                   STS.L       PR,@-R15
    0000113C 7FBC                   ADD         #-68,R15
    0000113E 6043                   MOV         R4,R0
    00001140 0009                   NOP
    00001142 81F2                   MOV.W       R0,@(4,R15)
    00001144 6053                   MOV         R5,R0
    00001146 0009                   NOP
    00001148 81F4                   MOV.W       R0,@(8,R15)
    0000114A E308                   MOV         #8,R3
    0000114C 2F71                   MOV.W       R7,@R15
    0000114E 85F2                   MOV.W       @(4,R15),R0
    00001150 6E03                   MOV         R0,R14
    00001152 6EED                   EXTU.W      R14,R14
    00001154 3E33                   CMP/GE      R3,R14
    00001156 8F08                   BF/S        L2466
    00001158 6863                   MOV         R6,R8
      wpr_attrac  1117            Vec2_t Temp;
      wpr_attrac  1118            Vec3_t Temp2;
      wpr_attrac  1119            Mtx3_t Mtx;
      wpr_attrac  1120            
      wpr_attrac  1121  E         if( (!(nPlayer < 8)) ) gerr_Assert( nPlayer < 
                         +8, "wpr_attract.c", 1121 );
    0000115A 3E33                   CMP/GE      R3,R14
    0000115C D11D                   MOV.L       L2583+10,R1; _gerr_Assert
    0000115E 0429                   MOVT        R4
    00001160 D51B                   MOV.L       L2583+6,R5 ; L2071
    00001162 9632                   MOV.W       L2583,R6   ; H'0461
    00001164 74FF                   ADD         #-1,R4
    00001166 410B                   JSR         @R1
    00001168 644B                   NEG         R4,R4
    0000116A              L2466:                            
    0000116A D31C                   MOV.L       L2583+18,R3; L2143
    0000116C DE1A                   MOV.L       L2583+14,R14; _Player_aData
    0000116E 6432                   MOV.L       @R3,R4
    00001170 2448                   TST         R4,R4
    00001172 8907                   BT          L2468
    00001174 6043                   MOV         R4,R0
    00001176 0009                   NOP
    00001178 8801                   CMP/EQ      #1,R0
    0000117A 8903                   BT          L2468
    0000117C 6043                   MOV         R4,R0
    0000117E 0009                   NOP
    00001180 8802                   CMP/EQ      #2,R0
    00001182 8B09                   BF          L2467
    00001184              L2468:                            
      wpr_attrac  1122            
      wpr_attrac  1123            if( _nCurrentCamType == _GAME_CAM1 || _nCurren
                         +tCamType == _GAME_CAM2 || _nCurrentCamType == _GAME_CA
                         +M3 ) {
      wpr_attrac  1124  E                 player_DoNotDrawBoat( &Player_aData[_n
                         +CurrentCamPlayer], 0 ); 
    00001184 D116                   MOV.L       L2583+22,R1; L2142
    00001186 E500                   MOV         #0,R5
    00001188 9320                   MOV.W       L2583+2,R3 ; H'01F0
    0000118A 6211                   MOV.W       @R1,R2
    0000118C 223F                   MULS        R3,R2
    0000118E D215                   MOV.L       L2583+26,
                        +                                  R2; _player_DoNotDrawBoa
                        +                                  t
    00001190 041A                   STS         MACL,R4
    00001192 644F                   EXTS.W      R4,R4
    00001194 420B                   JSR         @R2
    00001196 34EC                   ADD         R14,R4
    00001198              L2467:                            
    00001198 85F2                   MOV.W       @(4,R15),R0
    0000119A 9C17                   MOV.W       L2583+2,R12; H'01F0
    0000119C DB14                   MOV.L       L2583+38,R11; _vec3_Copy
    0000119E 20CF                   MULS        R12,R0
    000011A0 E064                   MOV         #100,R0
    000011A2 DD14                   MOV.L       L2583+42,R13; L2138
    000011A4 04FD                   MOV.W       @(R0,R15),R4
    000011A6 85F4                   MOV.W       @(8,R15),R0
    000011A8 0C1A                   STS         MACL,R12
    000011AA DA10                   MOV.L       L2583+34,R10; _Gamecam_pSector
    000011AC 600D                   EXTU.W      R0,R0
    000011AE D90E                   MOV.L       L2583+30,R9; _sky_Work
    000011B0 644D                   EXTU.W      R4,R4
    000011B2 6CCF                   EXTS.W      R12,R12
    000011B4 E10A                   MOV         #10,R1
    000011B6 3012                   CMP/HS      R1,R0
    000011B8 8B01                   BF          L2584
    000011BA A270                   BRA         L2334
    000011BC 0009                   NOP
    000011BE              L2584:                            
    000011BE 4000                   SHLL        R0
    000011C0 6103                   MOV         R0,R1
    000011C2 C70D                   MOVA        L2586,R0
    000011C4 001D                   MOV.W       @(R0,R1),R0
    000011C6 0023                   BRAF        R0
    000011C8 0009                   NOP
    000011CA              L2585:                            
    000011CA              L2583:                            
    000011CA 0461                   .DATA.W     H'0461
    000011CC 01F0                   .DATA.W     H'01F0
    000011CE 00000002               .RES.W      1
    000011D0 <00000000>             .DATA.L     L2071
    000011D4 <00000000>             .DATA.L     _gerr_Assert
    000011D8 <00000000>             .DATA.L     _Player_aData
    000011DC <00000000>             .DATA.L     L2143
    000011E0 <00000000>             .DATA.L     L2142
    000011E4 <00000000>             .DATA.L     _player_DoNotDrawBoat
    000011E8 <00000000>             .DATA.L     _sky_Work
    000011EC <00000000>             .DATA.L     _Gamecam_pSector
    000011F0 <00000000>             .DATA.L     _vec3_Copy
    000011F4 <00000000>             .DATA.L     L2138
    000011F8              L2586:
    000011F8 0042          K-�d��������¶o�HN^Ú$F]��@�\lÕq«¼J�î –ŒÿÆ“ñI��å�nªp¾ñ÷G´T�…õƒdàR‘¿‹î=¯Œ�5wN�*A”Þ�Ügâ�Tè�ú�<¬
T/ý�17L�xRN°Odao:[ zB˜%çÙb^´¼¨âÞõÓž&��äË<)›m¹Éð`æasÁŠñ�5öļÝyÓæInfh���ÒÏn§Uú�,û0î_�õAI)·?(x~ì�""�¿š?Á`	bùX,�n{\·nÐß^zaŠ"2œ1"²â¯�;'…�—aD"�¥�"…ø6·Ù¼Á% _hj�
@NˆÂ…µ�„hôÒnn�dv*¿[ÂÓgê�X?y6±�ß�ͪ��=D?�ÿÿÿÿÿÿÿÿÿÿ�©(r�         .DATA.W     L2324-L2585
    000011FA 0076                   .DATA.W     L2325-L2585
    000011FC 00AA                   .DATA.W     L2326-L2585
    000011FE 00EA                   .DATA.W     L2327-L2585
    00001200 0186                   .DATA.W     L2328-L2585
    00001202 020C                   .DATA.W     L2329-L2585
    00001204 022A                   .DATA.W     L2330-L2585
    00001206 0346                   .DATA.W     L2331-L2585
    00001208 03DE                   .DATA.W     L2332-L2585
    0000120A 046A                   .DATA.W     L2333-L2585
      wpr_attrac  1125            }
      wpr_attrac  1126    
      wpr_attrac  1127            switch( nCamType )
      wpr_attrac  1128            {
      wpr_attrac  1129            case _GAME_CAM1:
    0000120C              L2324:                           ; case label 
      wpr_attrac  1130                    /* game camera view 1 */
      wpr_attrac  1131                    if( gamecam_GetAttached() != &Player_a
                         +Data[nPlayer].Phys ) {
    0000120C D342                   MOV.L       L2587+4,
                        +                                  R3 ; _gamecam_GetAttached
    0000120E 430B                   JSR         @R3
    00001210 0009                   NOP
    00001212 937F                   MOV.W       L2587,R3   ; H'0100
    00001214 62C3                   MOV         R12,R2
    00001216 32EC                   ADD         R14,R2
    00001218 332C                   ADD         R2,R3
    0000121A 3030                   CMP/EQ      R3,R0
    0000121C 8905                   BT          L2470
      wpr_attrac  1132                            gamecam_Attach( &Player_aData[
                         +nPlayer].Phys );
    0000121E 9379                   MOV.W       L2587,R3   ; H'0100
    00001220 64C3                   MOV         R12,R4
    00001222 D23E                   MOV.L       L2587+8,R2 ; _gamecam_Attach
    00001224 34EC                   ADD         R14,R4
    00001226 4S20B                  JSR         @R2
    00001228 343C                   ADD         R3,R4
    0000122A              L2470:                            
      wpr_attrac  1133                    }
      wpr_attrac  1134                    gamecam_SetView( GAMECAM_VIEW_NOBOAT )
                         +;
    0000122A D33D                   MOV.L       L2587+12,R3; _gamecam_SetView
    0000122C 430B                   JSR         @R3
    0000122E E400                   MOV         #0,R4
      wpr_attrac  1135                    gamecam_GameloopWork();
    00001230 D23C                   MOV.L       L2587+16,
                        +                                  R2; _gamecam_GameloopWor
                        +                                  k
    00001232 420B                   JSR         @R2
    00001234 0009                   NOP
      wpr_attrac  1136                    player_DoNotDrawBoat( &Player_aData[nP
                         +layer], !gamecam_ShouldBoatBeDrawn() );
    00001236 D33C                   MOV.L       L2587+20,
                        +                                  R3; _gamecam_ShouldBoatB
                        +                                  eDrawn
    00001238 430B                   JSR         @R3
    0000123A 0009                   NOP
      wpr_attrac  1137                    break;
    0000123C A032                   BRA         L2538
    0000123E 0009                   NOP
    00001240              L2325:                           ; case label 
      wpr_attrac  1138            case _GAME_CAM2:
      wpr_attrac  1139                    /* game camera view 2 */
      wpr_attrac  1140                    if( gamecam_GetAttached() != &Player_a
                         +Data[nPlayer].Phys ) {
    00001240 D235                   MOV.L       L2587+4,
                        +                                  R2 ; _gamecam_GetAttached
    00001242 420B                   JSR         @R2
    00001244 0009                   NOP
    00001246 9265                   MOV.W       L2587,R2   ; H'0100
    00001248 63C3                   MOV         R12,R3
    0000124A 33EC                   ADD         R14,R3
    0000124C 323C                   ADD         R3,R2
    0000124E 3020                   CMP/EQ      R2,R0
    00001250 8905                   BT          L2472
      wpr_attrac  1141                            gamecam_Attach( &Player_aData[
                         +nPlayer].Phys );
    00001252 935F                   MOV.W       L2587,R3   ; H'0100
    00001254 64C3                   MOV         R12,R4
    00001256 D231                   MOV.L       L2587+8,R2 ; _gamecam_Attach
    00001258 34EC                   ADD         R14,R4
    0000125A 420B                   JSR         @R2
    0000125C 343C                   ADD         R3,R4
    0000125E              L2472:                            
      wpr_attrac  1142                    }
      wpr_attrac  1143                    gamecam_SetView( GAMECAM_VIEW_LOW );
    0000125E D330                   MOV.L       L2587+12,R3; _gamecam_SetView
    00001260 430B                   JSR         @R3
    00001262 E401                   MOV         #1,R4
      wpr_attrac  1144                    gamecam_GameloopWork();
    00001264 D22F                   MOV.L       L2587+16,
                        +                                  R2; _gamecam_GameloopWor
                        +                                  k
    00001266 420B                   JSR         @R2
    00001268 0009                   NOP
      wpr_attrac  1145                    player_DoNotDrawBoat( &Player_aData[nP
                         +layer], !gamecam_ShouldBoatBeDrawn() );
    0000126A D32F                   MOV.L       L2587+20,
                        +                                  R3; _gamecam_ShouldBoatB
                        +                                  eDrawn
    0000126C 430B                   JSR         @R3
    0000126E 0009                   NOP
      wpr_attrac  1146                    break;
    00001270 A018                   BRA         L2538
    00001272 0009                   NOP
    00001274              L2326:                           ; case label 
      wpr_attrac  1147            case _GAME_CAM3:
      wpr_attrac  1148                    /* game camera view 3 */
      wpr_attrac  1149                    if( gamecam_GetAttached() != &Player_a
                         +Data[nPlayer].Phys ) {
    00001274 D228                   MOV.L       L2587+4,
                        +                                  R2 ; _gamecam_GetAttached
    00001276 420B                   JSR         @R2
    00001278 0009                   NOP
    0000127A 924B                   MOV.W       L2587,R2   ; H'0100
    0000127C 63C3                   MOV         R12,R3
    0000127E 33EC                   ADD         R14,R3
    00001280 323C                   ADD         R3,R2
    00001282 3020                   CMP/EQ      R2,R0
    00001284 8905                   BT          L2474
      wpr_attrac  1150                            gamecam_Attach( &Player_aData[
                         +nPlayer].Phys );
    00001286 9345                   MOV.W       L2587,R3   ; H'0100
    00001288 64C3                   MOV         R12,R4
    0000128A D224                   MOV.L       L2587+8,R2 ; _gamecam_Attach
    0000128C 34EC                   ADD         R14,R4
    0000128E 420B                   JSR         @R2
    00001290 343C                   ADD         R3,R4
    00001292              L2474:                            
      wpr_attrac  1151                    }
      wpr_attrac  1152                    gamecam_SetView( GAMECAM_VIEW_HIGH );
    00001292 D323                   MOV.L       L2587+12,R3; _gamecam_SetView
    00001294 430B                   JSR         @R3
    00001296 E402                   MOV         #2,R4
      wpr_attrac  1153                    gamecam_GameloopWork();
    00001298 D222                   MOV.L       L2587+16,
                        +                                  R2; _gamecam_GameloopWor
                        +                                  k
    0000129A 420B                   JSR         @R2
    0000129C 0009                   NOP
      wpr_attrac  1154                    player_DoNotDrawBoat( &Player_aData[nP
                         +layer], !gamecam_ShouldBoatBeDrawn() );
    0000129E D322                   MOV.L       L2587+20,
                        +                                  R3; _gamecam_ShouldBoatB
                        +                                  eDrawn
    000012A0 430B                   JSR         @R3
    000012A2 0009                   NOP
      wpr_attrac  1155                    break;
    000012A4              L2538:                            
    000012A4 D221                   MOV.L       L2587+24,
                        +                                  R2; _player_DoNotDrawBoa
                        +                                  t
    000012A6 2008                   TST         R0,R0
    000012A8 64C3                   MOV         R12,R4
    000012AA 0529                   MOVT        R5
    000012AC 420B                   JSR         @R2
    000012AE 34EC                   ADD         R14,R4
    000012B0 A1FA                   BRA         L2469
    000012B2 0009                   NOP
    000012B4              L2327:                           ; case label 
      wpr_attrac  1156            case _ESPN_CAM:
      wpr_attrac  1157                    /* non moving camera looking a moving 
                         +object */
      wpr_attrac  1158                    vec3_Copy( &_CamPos, pPos );
    000012B4 D41E                   MOV.L       L2587+28,R4; L2138
    000012B6 4B0B                   JSR         @R11
    000012B8 6583                   MOV         R8,R5
      wpr_attrac  1159                    vec3_Copy( &_CamLook, &Player_aData[nP
                         +layer].pWorldOb->Orient.Pos );
    000012BA 65C3                   MOV         R12,R5
    000012BC E050                   MOV         #80,R0
    000012BE 35EC                   ADD         R14,R5
    000012C0 D41C                   MOV.L       L2587+32,R4; L2139
    000012C2 055E                   MOV.L       @(R0,R5),R5
    000012C4 4B0B                   JSR         @R11
    000012C6 7558                   ADD         #88,R5
      wpr_attrac  1160  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    000012C8 E008                   MOV         #8,R0
    000012CA 63D3                   MOV         R13,R3
    000012CC 6233                   MOV         R3,R2
    000012CE 2F32                   MOV.L       R3,@R15
    000012D0 F536                   FMOV.S      @(R0,R3),FR5
    000012D2 D319                   MOV.L       L2587+36,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    000012D4 F428                   FMOV.S      @R2,FR4
    000012D6 430B                   JSR         @R3
    000012D8 E400                   MOV         #0,R4
    000012DA 2A02                   MOV.L       R0,@R10
      wpr_attrac  1161                    vec3_CalcSub( &Temp2, &_CamLook, &_Cam
                         +Pos );
    000012DC 64F3                   MOV         R15,R4
    000012DE D515                   MOV.L       L2587+32,R5; L2139
    000012E0 D216                   MOV.L       L2587+40,R2; _vec3_CalcSub
    000012E2 D613                   MOV.L       L2587+28,R6; L2138
    000012E4 420B                   JSR         @R2
    000012E6 7430                   ADD         #48,R4
      wpr_attrac  1162                    mtx3_BuildFromZVec( &Mtx, &Temp2 );
    000012E8 D315                   MOV.L       L2587+44,R3; _mtx3_BuildFromZVec
    000012EA 65F3                   MOV         R15,R5
    000012EC 64F3                   MOV         R15,R4
    000012EE 7530                   ADD         #48,R5
    000012F0 430B                   JSR         @R3
    000012F2 740C                   ADD         #12,R4
      wpr_attrac  1163                    sky_Work( mtx3_GetHeading( &Mtx ), mtx
                         +3_GetPitch( &Mtx ), mtx3_GetRoll( &Mtx ) );
    000012F4 D213                   MOV.L       L2587+48,R2; _mtx3_GetRoll
    000012F6 64F3                   MOV         R15,R4
    000012F8 420B                   JSR         @R2
    000012FA 740C                   ADD         #12,R4
    000012FC 2F06                   MOV.L       R0,@-R15
    000012FE D312                   MOV.L       L2587+52,R3; _mtx3_GetPitch
    00001300 64F3                   MOV         R15,R4
    00001302 430B                   JSR         @R3
    00001304 7410                   ADD         #16,R4
    00001306 2F06                   MOV.L       R0,@-R15
    00001308 D210                   MOV.L       L2587+56,R2; _mtx3_GetHeading
    0000130A 64F3                   MOV         R15,R4
    0000130C 420B                   JSR         @R2
    0000130E 7414                   ADD         #20,R4
      wpr_attrac  1164                    break;
    00001310 A0D9                   BRA         L2544
    00001312 0009                   NOP
    00001314              L2587:                            
    00001314 0100                   .DATA.W     H'0100
    00001316 00000002               .RES.W      1
    00001318 <00000000>             .DATA.L     _gamecam_GetAttached
    0000131C <00000000>             .DATA.L     _gamecam_Attach
    00001320 <00000000>             .DATA.L     _gamecam_SetView
    00001324 <00000000>             .DATA.L     _gamecam_GameloopWork
    00001328 <00000000>             .DATA.L     _gamecam_ShouldBoatBeDrawn
    0000132C <00000000>             .DATA.L     _player_DoNotDrawBoat
    00001330 <00000000>             .DATA.L     L2138
    00001334 <00000000>             .DATA.L     L2139
    00001338 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    0000133C <00000000>             .DATA.L     _vec3_CalcSub
    00001340 <00000000>             .DATA.L     _mtx3_BuildFromZVec
    00001344 <00000000>             .DATA.L     _mtx3_GetRoll
    00001348 <00000000>             .DATA.L     _mtx3_GetPitch
    0000134C <00000000>             .DATA.L     _mtx3_GetHeading
    00001350              L2328:                           ; case label 
      wpr_attrac  1165            case _MOUNTED_CAM:
      wpr_attrac  1166                    /* solid mounted camera on moving boat
                         +, looking in a fixed direction */
      wpr_attrac  1167                    _nCamHeading = nAngle;
    00001350 62F1                   MOV.W       @R15,R2
    00001352 D322                   MOV.L       L2588+2,R3 ; L2144
    00001354 622D                   EXTU.W      R2,R2
    00001356 2322                   MOV.L       R2,@R3
      wpr_attrac  1168                    vec3_Copy( &_BSCamPos, pPos );
    00001358 D421                   MOV.L       L2588+6,R4 ; L2140
    0000135A 4B0B                   JSR         @R11
    0000135C 6583                   MOV         R8,R5
      wpr_attrac  1169                    Temp.p[0] = _BSCamPos.p[0];
    0000135E D220                   MOV.L       L2588+6,R2 ; L2140
    00001360 E03C                   MOV         #60,R0
      wpr_attrac  1170                    Temp.p[1] = _BSCamPos.p[2];
      wpr_attrac  1171                    vec2_RotateBradians( &Temp, Player_aDa
                         +ta[nPlayer].Phys.nHeading );
    00001362 6BC3                   MOV         R12,R11
    00001364 3BEC                   ADD         R14,R11
    00001366 F328                   FMOV.S      @R2,FR3
    00001368 64F3                   MOV         R15,R4
    0000136A FF37                   FMOV.S      FR3,@(R0,R15)
    0000136C E040                   MOV         #64,R0
    0000136E D31D                   MOV.L       L2588+10,R3; H'00000008+L2140
    00001370 F338                   FMOV.S      @R3,FR3
    00001372 FF37                   FMOV.S      FR3,@(R0,R15)
    00001374 9031                   MOV.W       L2588,R0   ; H'013C
    00001376 D21C                   MOV.L       L2588+14,
                        +                                  R2; _vec2_RotateBradians
    00001378 05BE                   MOV.L       @(R0,R11),R5
    0000137A 420B                   JSR         @R2
    0000137C 743C                   ADD         #60,R4
      wpr_attrac  1172                    _CamPos.p[0] = Temp.p[0] + Player_aDat
                         +a[nPlayer].pWorldOb->Orient.Pos.p[0];
    0000137E E050                   MOV         #80,R0
    00001380 02BE                   MOV.L       @(R0,R11),R2
    00001382 E03C                   MOV         #60,R0
    00001384 F2F6                   FMOV.S      @(R0,R15),FR2
      wpr_attrac  1173                    _CamPos.p[1] = _BSCamPos.p[1] + Player
                         +_aData[nPlayer].pWorldOb->Orient.Pos.p[1];
    00001386 E050                   MOV         #80,R0
    00001388 7258                   ADD         #88,R2
    0000138A F328                   FMOV.S      @R2,FR3
    0000138C F230                   FADD        FR3,FR2
    0000138E FD2A                   FMOV.S      FR2,@R13
    00001390 D316                   MOV.L       L2588+18,R3; H'00000004+L2140
    00001392 02BE                   MOV.L       @(R0,R11),R2
    00001394 E05C                   MOV         #92,R0
    00001396 F238                   FMOV.S      @R3,FR2
    00001398 F326                   FMOV.S      @(R0,R2),FR3
    0000139A E004                   MOV         #4,R0
    0000139C F230                   FADD        FR3,FR2
    0000139E FD27                   FMOV.S      FR2,@(R0,R13)
      wpr_attrac  1174                    _CamPos.p[2] = Temp.p[1] + Player_aDat
                         +a[nPlayer].pWorldOb->Orient.Pos.p[2];
    000013A0 E050                   MOV         #80,R0
    000013A2 02BE                   MOV.L       @(R0,R11),R2
    000013A4 E060                   MOV         #96,R0
    000013A6 F326                   FMOV.S      @(R0,R2),FR3
    000013A8 E040                   MOV         #64,R0
    000013AA F2F6                   FMOV.S      @(R0,R15),FR2
    000013AC E008                   MOV         #8,R0
      wpr_attrac  1175  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    000013AE 62D3                   MOV         R13,R2
    000013B0 6123                   MOV         R2,R1
    000013B2 F230                   FADD        FR3,FR2
    000013B4 FD27                   FMOV.S      FR2,@(R0,R13)
    000013B6 E008                   MOV         #8,R0
    000013B8 2F22                   MOV.L       R2,@R15
    000013BA F526                   FMOV.S      @(R0,R2),FR5
    000013BC F418                   FMOV.S      @R1,FR4
    000013BE D20C                   MOV.L       L2588+22,
                        +                                  R2; _world_FindSectorCon
                        +                                  tainingPoint
    000013C0 420B                   JSR         @R2
    000013C2 E400                   MOV         #0,R4
    000013C4 2A02                   MOV.L       R0,@R10
      wpr_attrac  1176                    sky_Work( Player_aData[nPlayer].Phys.n
                         +Heading + _nCamHeading, 0, 0 );
    000013C6 E600                   MOV         #0,R6
    000013C8 D204                   MOV.L       L2588+2,R2 ; L2144
    000013CA 9006                   MOV.W       L2588,R0   ; H'013C
    000013CC 6322                   MOV.L       @R2,R3
    000013CE 04BE                   MOV.L       @(R0,R11),R4
    000013D0 343C                   ADD         R3,R4
      wpr_attrac  1177                    break;
    000013D2 A160                   BRA         L2543
    000013D4 6563                   MOV         R6,R5
    000013D6              L2329:                           ; case label 
      wpr_attrac  1178            case _CIRCLE_CAM:
      wpr_attrac  1179                    break;
    000013D6 A167                   BRA         L2469
    000013D8 0009                   NOP
    000013DA              L2588:                            
    000013DA 013C                   .DATA.W     H'013C
    000013DC <00000000>             .DATA.L     L2144
    000013E0 <00000000>             .DATA.L     L2140
    000013E4 <00000008>             .DATA.L     H'00000008+L2140
    000013E8 <00000000>             .DATA.L     _vec2_RotateBradians
    000013EC <00000004>             .DATA.L     H'00000004+L2140
    000013F0 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    000013F4              L2330:                           ; case label 
      wpr_attrac  1180            case _ESPN2_CAM:
      wpr_attrac  1181                    /* camera attached to moving boat ( ro
                         +tating boats heading ), looking at a moving object */
      wpr_attrac  1182                    _n2ndCamPlayer = n2ndPlayer;
    000013F4 D337                   MOV.L       L2589+6,R3 ; L2145
    000013F6 2342                   MOV.L       R4,@R3
      wpr_attrac  1183                    vec3_Copy( &_BSCamPos, pPos );
    000013F8 D437                   MOV.L       L2589+10,R4; L2140
    000013FA 4B0B                   JSR         @R11
    000013FC 6583                   MOV         R8,R5
      wpr_attrac  1184                    Temp.p[0] = _BSCamPos.p[0];
    000013FE D236                   MOV.L       L2589+10,R2; L2140
    00001400 E03C                   MOV         #60,R0
      wpr_attrac  1185                    Temp.p[1] = _BSCamPos.p[2];
      wpr_attrac  1186                    vec2_RotateBradians( &Temp, Player_aDa
                         +ta[nPlayer].Phys.nHeading );
    00001402 68C3                   MOV         R12,R8
    00001404 38EC                   ADD         R14,R8
    00001406 F328                   FMOV.S      @R2,FR3
    00001408 64F3                   MOV         R15,R4
    0000140A FF37                   FMOV.S      R3,@(R0,R15)
    0000140C E040                   MOV         #64,R0
    0000140E D333                   MOV.L       L2589+14,R3; H'00000008+L2140
    00001410 F338                   FMOV.S      @R3,FR3
    00001412 FF37                   FMOV.S      FR3,@(R0,R15)
    00001414 905B                   MOV.W       L2589,R0   ; H'013C
    00001416 D232                   MOV.L       L2589+18,
                        +                                  R2; _vec2_RotateBradians
    00001418 058E                   MOV.L       @(R0,R8),R5
    0000141A 420B                   JSR         @R2
    0000141C 743C                   ADD         #60,R4
      wpr_attrac  1187                    _CamPos.p[0] = Temp.p[0] + Player_aDat
                         +a[nPlayer].pWorldOb->Orient.Pos.p[0];
    0000141E E050                   MOV         #80,R0
    00001420 028E                   MOV.L       @(R0,R8),R2
    00001422 E03C                   MOV         #60,R0
    00001424 F2F6                   FMOV.S      @(R0,R15),FR2
      wpr_attrac  1188                    _CamPos.p[1] = _BSCamPos.p[1] + Player
                         +_aData[nPlayer].pWorldOb->Orient.Pos.p[1];
    00001426 E050                   MOV         #80,R0
    00001428 7258                   ADD         #88,R2
    0000142A F328                   FMOV.S      @R2,FR3
    0000142C F230                   FADD        FR3,FR2
    0000142E FD2A                   FMOV.S      FR2,@R13
    00001430 D32C                   MOV.L       L2589+22,R3; H'00000004+L2140
    00001432 028E                   MOV.L       @(R0,R8),R2
    00001434 E05C                   MOV         #92,R0
    00001436 F238                   FMOV.S      @R3,FR2
    00001438 F326                   FMOV.S      @(R0,R2),FR3
    0000143A E004                   MOV         #4,R0
    0000143C F230                   FADD        FR3,FR2
    0000143E FD27                   FMOV.S      FR2,@(R0,R13)
      wpr_attrac  1189                    _CamPos.p[2] = Temp.p[1] + Player_aDat
�                     +a[nPlayer].pWorldOb->Orient.Pos.p[2];
    00001440 E050                   MOV         #80,R0
    00001442 028E                   MOV.L       @(R0,R8),R2
    00001444 E060                   MOV         #96,R0
    00001446 F326                   FMOV.S      @(R0,R2),FR3
    00001448 E040                   MOV         #64,R0
    0000144A F2F6                   FMOV.S      @(R0,R15),FR2
    0000144C E008                   MOV         #8,R0
      wpr_attrac  1190  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    0000144E 62D3                   MOV         R13,R2
    00001450 6123                   MOV         R2,R1
    00001452 F230                   FADD        FR3,FR2
    00001454 FD27                   FMOV.S      FR2,@(R0,R13)
    00001456 E008                   MOV         #8,R0
    00001458 2F22                   MOV.L       R2,@R15
    0000145A F526                   FMOV.S      @(R0,R2),FR5
    0000145C F418                   FMOV.S      @R1,FR4
    0000145E D222                   MOV.L       L2589+26,
                        +                                  R2; _world_FindSectorCon
                        +                                  tainingPoint
    00001460 420B                   JSR         @R2
    00001462 E400                   MOV         #0,R4
    00001464 2A02                   MOV.L       R0,@R10
      wpr_attrac  1191                    vec3_Copy( &_CamLook, &Player_aData[_n
                         +2ndCamPlayer].pWorldOb->Orient.Pos );
    00001466 E050                   MOV         #80,R0
    00001468 D11A                   MOV.L       L2589+6,R1 ; L2145
    0000146A 9331                   MOV.W       L2589+2,R3 ; H'01F0
    0000146C 6211                   MOV.W       @R1,R2
    0000146E D41F                   MOV.L       L2589+30,R4; L2139
    00001470 223F                   MULS        R3,R2
    00001472 051A                   STS         MACL,R5
    00001474 655F                   EXTS.W      R5,R5
    00001476 35EC                   ADD         R14,R5
    00001478 055E                   MOV.L       @(R0,R5),R5
    0000147A 4B0B                   JSR         @R11
    0000147C 7558                   ADD         #88,R5
      wpr_attrac  1192                    _CamLook.p[1] = ((_CamLook.p[1] - _Cam
                         +Pos.p[1]) * 0.1f) + _CamPos.p[1];
    0000147E D41C                   MOV.L       L2589+34,R4; H'00000004+L2139
    00001480 E004                   MOV         #4,R0
    00001482 F4D6                   FMOV.S      @(R0,R13),FR4
    00001484 C71B                   MOVA        L2589+38,R0
    00001486 F348                   FMOV.S      @R4,FR3
    00001488 F008                   FMOV.S      @R0,FR0
    0000148A F341                   FSUB        FR4,FR3
    0000148C F24C                   FMOV.S      FR4,FR2
    0000148E F23E                   FMAC        FR0,FR3,FR2
    00001490 F42A                   FMOV.S      FR2,@R4
      wpr_attrac  1193                    vec3_CalcSub( &Temp2, &_CamLook, &_Cam
                         +Pos );
    00001492 64F3                   MOV         R15,R4
    00001494 D515                   MOV.L       L2589+30,R5; L2139
    00001496 D319                   MOV.L       L2589+46,R3; _vec3_CalcSub
    00001498 D617                   MOV.L       L2589+42,R6; L2138
    0000149A 430B                   JSR         @R3
    0000149C 7430                   ADD         #48,R4
      wpr_attrac  1194                    mtx3_BuildFromZVec( &Mtx, &Temp2 );
    0000149E D218                   MOV.L       L2589+50,R2; _mtx3_BuildFromZVec
    000014A0 65F3                   MOV         R15,R5
    000014A2 64F3                   MOV         R15,R4
    000014A4 7530                   ADD         #48,R5
    000014A6 420B                   JSR         @R2
    000014A8 740C                   ADD         #12,R4
      wpr_attrac  1195                    sky_Work( mtx3_GetHeading( &Mtx ), mtx
                         +3_GetPitch( &Mtx ), mtx3_GetRoll( &Mtx ) );
    000014AA D316                   MOV.L       L2589+54,R3; _mtx3_GetRoll
    000014AC 64F3                   MOV         R15,R4
    000014AE 430B                   JSR         @R3
    000014B0 740C                   ADD         #12,R4
    000014B2 2F06                   MOV.L       R0,@-R15
    000014B4 D214                   MOV.L       L2589+58,R2; _mtx3_GetPitch
    000014B6 64F3                   MOV         R15,R4
    000014B8 420B                   JSR         @R2
    000014BA 7410                   ADD         #16,R4
    000014BC 2F06                   MOV.L       R0,@-R15
    000014BE D313                   MOV.L       L2589+62,R3; _mtx3_GetHeading
    000014C0 64F3                   MOV         R15,R4
    000014C2 430B                   JSR         @R3
    000014C4 7414                   ADD         #20,R4
      wpr_attrac  1196                    break;
    000014C6              L2544:                            
    000014C6 65F6                   MOV.L       @R15+,R5
    000014C8 6403                   MOV         R0,R4
    000014CA A0E4                   BRA         L2543
    000014CC 66F6                   MOV.L       @R15+,R6
    000014CE              L2589:                            
    000014CE 013C                   .DATA.W     H'013C
    000014D0 01F0                   .DATA.W     H'01F0
    000014D2 00000002               .RES.W      1
    000014D4 <00000000>             .DATA.L     L2145
    000014D8 <00000000>             .DATA.L     L2140
    000014DC <00000008>             .DATA.L     H'00000008+L2140
    000014E0 <00000000>             .DATA.L     _vec2_RotateBradians
    000014E4 <00000004>             .DATA.L     H'00000004+L2140
    000014E8 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    000014EC <00000000>             .DATA.L     L2139
    000014F0 <00000004>             .DATA.L     H'00000004+L2139
    000014F4 3DCCCCCC               .DATA.L     H'3DCCCCCC
    000014F8 <00000000>             .DATA.L     L2138
    000014FC <00000000>             .DATA.L     _vec3_CalcSub
    00001500 <00000000>             .DATA.L     _mtx3_BuildFromZVec
    00001504 <00000000>             .DATA.L     _mtx3_GetRoll
    00001508 <00000000>             .DATA.L     _mtx3_GetPitch
    0000150C <00000000>             .DATA.L     _mtx3_GetHeading
    00001510              L2331:                           ; case label 
      wpr_attrac  1197            case _ESPN3_CAM:
      wpr_attrac  1198                    /* camera attached to moving boat ( no
                         +t rotating boats heading ), looking at a moving object
                         + */
      wpr_attrac  1199                    _n2ndCamPlayer = n2ndPlayer;
    00001510 D33B                   MOV.L       L2590+2,R3 ; L2145
    00001512 2342                   MOV.L       R4,@R3
      wpr_attrac  1200                    vec3_Copy( &_BSCamPos, pPos );
    00001514 D43B                   MOV.L       L2590+6,R4 ; L2140
    00001516 4B0B                   JSR         @R11
    00001518 6583                   MOV         R8,R5
      wpr_attrac  1201                    vec3_CalcSum( &_CamPos, &_BSCamPos, &P
                         +layer_aData[nPlayer].pWorldOb->Orient.Pos );
    0000151A 66C3                   MOV         R12,R6
    0000151C E050                   MOV         #80,R0
    0000151E 36EC                   ADD         R14,R6
    00001520 D439                   MOV.L       L2590+10,R4; L2138
    00001522 D33A                   MOV.L       L2590+14,R3; _vec3_CalcSum
    00001524 066E                   MOV.L       @(R0,R6),R6
    00001526 D537                   MOV.L       L2590+6,R5 ; L2140
    00001528 430B                   JSR         @R3
    0000152A 7658                   ADD         #88,R6
      wpr_attrac  1202  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    0000152C 62D3                   MOV         R13,R2
    0000152E 6323                   MOV         R2,R3
    00001530 E008                   MOV         #8,R0
    00001532 2F22                   MOV.L       R2,@R15
    00001534 F438                   FMOV.S      @R3,FR4
    00001536 D336                   MOV.L       L2590+18,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    00001538 F526                   FMOV.S      @(R0,R2),FR5
    0000153A 430B                   JSR         @R3
    0000153C E400                   MOV         #0,R4
    0000153E 2A02                   MOV.L       R0,@R10
      wpr_attrac  1203                    vec3_Copy( &_CamLook, &Player_aData[_n
                         +2ndCamPlayer].pWorldOb->Orient.Pos );
    00001540 E050                   MOV         #80,R0
    00001542 D12F                   MOV.L       L2590+2,R1 ; L2145
    00001544 935B                   MOV.W       L2590,R3   ; H'01F0
    00001546 6211                   MOV.W       @R1,R2
    00001548 D432                   MOV.L       L2590+22,R4; L2139
    0000154A 223F                   MULS        R3,R2
    0000154C 051A                   STS         MACL,R5
    0000154E 655F                   EXTS.W      R5,R5
    00001550 35EC                   ADD         R14,R5
    00001552 055E                   MOV.L       @(R0,R5),R5
    00001554 4B0B                   JSR         @R11
    00001556 7558                   ADD         #88,R5
      wpr_attrac  1204                    _CamLook.p[1] = ((_CamLook.p[1] - _Cam
                         +Pos.p[1]) * 0.1f) + _CamPos.p[1];
    00001558 D42F                   MOV.L       L2590+26,R4; H'00000004+L2139
    0000155A E004                   MOV         #4,R0
    0000155C F4D6                   FMOV.S      @(R0,R13),FR4
    0000155E C72F                   MOVA        L2590+30,R0
    00001560 F348                   FMOV.S      @R4,FR3
    00001562 F008                   FMOV.S      @R0,FR0
    00001564 F341                   FSUB        FR4,FR3
    00001566 F24C                   FMOV.S      FR4,FR2
    00001568 F23E                   FMAC        FR0,FR3,FR2
    0000156A F42A                   FMOV.S      FR2,@R4
      wpr_attrac  1205                    vec3_CalcSub( &Temp2, &_CamLook, &_Cam
                         +Pos );
    0000156C 64F3                   MOV         R15,R4
    0000156E D529                   MOV.L       L2590+22,R5; L2139
    00001570 D32B                   MOV.L       L2590+34,R3; _vec3_CalcSub
    00001572 D625                   MOV.L       L2590+10,R6; L2138
    00001574 430B                   JSR         @R3
    00001576 7430                   ADD         #48,R4
      wpr_attrac  1206                    mtx3_BuildFromZVec( &Mtx, &Temp2 );
    00001578 D22A                   MOV.L       L2590+38,R2; _mtx3_BuildFromZVec
    0000157A 65F3                   MOV         R15,R5
    0000157C 64F3                   MOV         R15,R4
    0000157E 7530                   ADD         #48,R5
    00001580 420B                   JSR         @R2
    00001582 740C                   ADD         #12,R4
      wpr_attrac  1207                    sky_Work( mtx3_GetHeading( &Mtx ), mtx
                         +3_GetPitch( &Mtx ), mtx3_GetRoll( &Mtx ) );
    00001584 D328                   MOV.L       L2590+42,R3; _mtx3_GetRoll
    00001586 64F3                   MOV         R15,R4
    00001588 430B                   JSR         @R3
    0000158A 740C                   ADD         #12,R4
    0000158C 2F06                   MOV.L       R0,@-R15
    0000158E D227                   MOV.L       L2590+46,R2; _mtx3_GetPitch
    00001590 64F3                   MOV         R15,R4
    00001592 420B                   JSR         @R2
    00001594 7410                   ADD         #16,R4
    00001596 2F06                   MOV.L       R0,@-R15
    00001598 D325                   MOV.L       L2590+50,R3; _mtx3_GetHeading
    0000159A 64F3                   MOV         R15,R4
    0000159C 430B                   JSR         @R3
    0000159E 7414                   ADD         #20,R4
    000015A0 65F6                   MOV.L       @R15+,R5
    000015A2 6403                   MOV         R0,R4
      wpr_attrac  1208                    break;
    000015A4 A077                   BRA         L2543
    000015A6 66F6                   MOV.L       @R15+,R6
    000015A8              L2332:                           ; case label 
      wpr_attrac  1209            case _STATIONARY_CAM:
      wpr_attrac  1210                    /* pure look at both look and pos are 
                         +non moving */
      wpr_attrac  1211                    vec3_Copy( &_CamPos, pPos );
    000015A8 D417                   MOV.L       L2590+10,R4; L2138
    000015AA 4B0B                   JSR         @R11
    000015AC 6583                   MOV         R8,R5
      wpr_attrac  1212                    /* the lookat point should be filled i
                         +n by the calling function */
      wpr_attrac  1213    
      wpr_attrac  1214  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    000015AE E008                   MOV         #8,R0
    000015B0 63D3                   MOV         R13,R3
    000015B2 6233                   MOV         R3,R2
    000015B4 2F32                   MOV.L       R3,@R15
    000015B6 F536                   FMOV.S      @(R0,R3),FR5
    000015B8 D315                   MOV.L       L2590+18,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    000015BA F428                   FMOV.S      @R2,FR4
    000015BC 430B                   JSR         @R3
    000015BE E400                   MOV         #0,R4
    000015C0 2A02                   MOV.L       R0,@R10
      wpr_attrac  1215                    vec3_CalcSub( &Temp2, &_CamLook, &_Cam
                         +Pos );
    000015C2 64F3                   MOV         R15,R4
    000015C4 D513                   MOV.L       L2590+22,R5; L2139
    000015C6 D216                   MOV.L       L2590+34,R2; _vec3_CalcSub
    000015C8 D60F                   MOV.L       L2590+10,R6; L2138
    000015CA 420B                   JSR         @R2
    000015CC 7430                   ADD         #48,R4
      wpr_attrac  1216                    mtx3_BuildFromZVec( &Mtx, &Temp2 );
    000015CE D315                   MOV.L       L2590+38,R3; _mtx3_BuildFromZVec
    000015D0 65F3                   MOV         R15,R5
    000015D2 64F3                   MOV         R15,R4
    000015D4 7530                   ADD         #48,R5
    000015D6 430B                   JSR         @R3
    000015D8 740C                   ADD         #12,R4
      wpr_attrac  1217                    sky_Work( mtx3_GetHeading( &Mtx ), mtx
                         +3_GetPitch( &Mtx ), mtx3_GetRoll( &Mtx ) );
    000015DA D213                   MOV.L       L2590+42,R2; _mtx3_GetRoll
    000015DC 64F3                   MOV         R15,R4
    000015DE 420B                   JSR         @R2
    000015E0 740C                   ADD         #12,R4
    000015E2 2F06                   MOV.L       R0,@-R15
    000015E4 D311                   MOV.L       L2590+46,R3; _mtx3_GetPitch
    000015E6 64F3                   MOV         R15,R4
    000015E8 430B                   JSR         @R3
    000015EA 7410                   ADD         #16,R4
    000015EC 2F06                   MOV.L       R0,@-R15
    000015EE D210                   MOV.L       L2590+50,R2; _mtx3_GetHeading
    000015F0 64F3                   MOV         R15,R4
    000015F2 420B                   JSR         @R2
    000015F4 7414                   ADD         #20,R4
    000015F6 65F6                   MOV.L       @R15+,R5
    000015F8 6403                   MOV         R0,R4
      wpr_attrac  1218                    break;
    000015FA A04C                   BRA         L2543
    000015FC 66F6                   MOV.L       @R15+,R6
    000015FE              L2590:                            
    000015FE 01F0                   .DATA.W     H'01F0
    00001600 <00000000>             .DATA.L     L2145
    00001604 <00000000>             .DATA.L     L2140
    00001608 <00000000>             .DATA.L     L2138
    0000160C <00000000>             .DATA.L     _vec3_CalcSum
    00001610 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    00001614 <00000000>             .DATA.L     L2139
    00001618 <00000004>             .DATA.L     H'00000004+L2139
    0000161C 3DCCCCCC               .DATA.L     H'3DCCCCCC
    00001620 <00000000>             .DATA.L     _vec3_CalcSub
    00001624 <00000000>             .DATA.L     _mtx3_BuildFromZVec
    00001628 <00000000>             .DATA.L     _mtx3_GetRoll
    0000162C <00000000>             .DATA.L     _mtx3_GetPitch
    00001630 <00000000>             .DATA.L     _mtx3_GetHeading
    00001634              L2333:                           ; case label 
      wpr_attrac  1219            case _CHASE_CAM:
      wpr_attrac  1220                    /* start from a fixed position and ani
                         +mate toward a moving boat, doing a look at of the boat
                         + */
      wpr_attrac  1221                    vec3_Copy( &_CamPos, pPos );
    00001634 D426                   MOV.L       L2591+4,R4 ; L2138
    00001636 4B0B                   JSR         @R11
    00001638 6583                   MOV         R8,R5
      wpr_attrac  1222                    vec3_Copy( &_CamLook, &Player_aData[nP
                         +layer].pWorldOb->Orient.Pos );
    0000163A 65C3                   MOV         R12,R5
    0000163C E050                   MOV         #80,R0
    0000163E 35EC                   ADD         R14,R5
    00001640 D424                   MOV.L       L2591+8,R4 ; L2139
    00001642 055E                   MOV.L       @(R0,R5),R5
    00001644 4B0B                   JSR         @R11
    00001646 7558                   ADD         #88,R5
      wpr_attrac  1223  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    00001648 E008                   MOV         #8,R0
    0000164A 63D3                   MOV         R13,R3
    0000164C 6233                   MOV         R3,R2
    0000164E 2F32                   MOV.L       R3,@R15
    00001650 F536                   FMOV.S      @(R0,R3),FR5
    00001652 D321                   MOV.L       L2591+12,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    00001654 F428                   FMOV.S      @R2,FR4
    00001656 430B                   JSR         @R3
    00001658 E400                   MOV         #0,R4
    0000165A 2A02                   MOV.L       R0,@R10
      wpr_attrac  1224                    vec3_CalcSub( &Temp2, &_CamLook, &_Cam
                         +Pos );
    0000165C 64F3                   MOV         R15,R4
    0000165E D51D                   MOV.L       L2591+8,R5 ; L2139
    00001660 D21E                   MOV.L       L2591+16,R2; _vec3_CalcSub
    00001662 D61B                   MOV.L       L2591+4,R6 ; L2138
    00001664 420B                   JSR         @R2
    00001666 7430                   ADD         #48,R4
      wpr_attrac  1225                    mtx3_BuildFromZVec( &Mtx, &Temp2 );
    00001668 D31D                   MOV.L       L2591+20,R3; _mtx3_BuildFromZVec
    0000166A 65F3                   MOV         R15,R5
    0000166C 64F3                   MOV         R15,R4
    0000166E 7530                   ADD         #48,R5
    00001670 430B                   JSR         @R3
    00001672 740C                   ADD         #12,R4
      wpr_attrac  1226                    sky_Work( mtx3_GetHeading( &Mtx ), mtx
                         +3_GetPitch( &Mtx ), mtx3_GetRoll( &Mtx ) );
    00001674 D21B                   MOV.L       L2591+24,R2; _mtx3_GetRoll
    00001676 64F3                   MOV         R15,R4
    00001678 420B                   JSR         @R2
    0000167A 740C                   ADD         #12,R4
    0000167C 2F06                   MOV.L       R0,@-R15
    0000167E D31A                   MOV.L       L2591+28,R3; _mtx3_GetPitch
    00001680 64F3                   MOV         R15,R4
    00001682 430B                   JSR         @R3
    00001684 7410                   ADD         #16,R4
    00001686 2F06                   MOV.L       R0,@-R15
    00001688 D218                   MOV.L       L2591+32,R2; _mtx3_GetHeading
    0000168A 64F3                   MOV         R15,R4
    0000168C 420B                   JSR         @R2
    0000168E 7414                   ADD         #20,R4
    00001690 65F6                   MOV.L       @R15+,R5
    00001692 6403                   MOV         R0,R4
    00001694 66F6                   MOV.L       @R15+,R6
      wpr_attrac  1227                    break;
    00001696              L2543:                            
    00001696 490B                   JSR         @R9
    00001698 0009                   NOP
    0000169A A005                   BRA         L2469
    0000169C 0009                   NOP
    0000169E              L2334:                           ; default label 
      wpr_attrac  1228            default:
      wpr_attrac  1229  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 1229 );
    0000169E D215                   MOV.L       L2591+40,R2; _gerr_Assert
    000016A0 D513                   MOV.L       L2591+36,R5; L2071
    000016A2 9613                   MOV.W       L2591,R6   ; H'04CD
    000016A4 420B                   JSR         @R2
    000016A6 E400                   MOV         #0,R4
      wpr_attrac  1230                    break;
    000016A8              L2469:                            
      wpr_attrac  1231            }
      wpr_attrac  1232    
      wpr_attrac  1233            _nCurrentCamPlayer = nPlayer;
    000016A8 85F2                   MOV.W       @(4,R15),R0
    000016AA D313                   MOV.L       L2591+44,R3; L2142
    000016AC 600D                   EXTU.W      R0,R0
    000016AE 2302                   MOV.L       R0,@R3
      wpr_attrac  1234            _nCurrentCamType = nCamType;
    000016B0 85F4                   MOV.W       @(8,R15),R0
      wpr_attrac  1235    }
    000016B2 7F44                   ADD         #68,R15
    000016B4 4F26                   LDS.L       @R15+,PR
    000016B6 D211                   MOV.L       L2591+48,R2; L2143
    000016B8 600D                   EXTU.W      R0,R0
    000016BA 2202                   MOV.L       R0,@R2
    000016BC 68F6                   MOV.L       @R15+,R8
    000016BE 69F6                   MOV.L       @R15+,R9
    000016C0 6AF6                   MOV.L       @R15+,R10
    000016C2 6BF6                   MOV.L       @R15+,R11
    000016C4 6CF6                   MOV.L       @R15+,R12
    000016C6 6DF6                   MOV.L       @R15+,R13
    000016C8 000B                   RTS
    000016CA 6EF6                   MOV.L       @R15+,R14
    000016CC              L2591:                            
    000016CC 04CD                   .DATA.W     H'04CD
    000016CE 00000002               .RES.W      1
    000016D0 <00000000>             .DATA.L     L2138
    000016D4 <00000000>             .DATA.L     L2139
    000016D8 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    000016DC <00000000>             .DATA.L     _vec3_CalcSub
    000016E0 <00000000>             .DATA.L     _mtx3_BuildFromZVec
    000016E4 <00000000>             .DATA.L     _mtx3_GetRoll
    000016E8 <00000000>             .DATA.L     _mtx3_GetPitch
    000016EC <00000000>             .DATA.L     _mtx3_GetHeading
    000016F0 <00000000>             .DATA.L     L2071
    000016F4 <00000000>             .DATA.L     _gerr_Assert
    000016F8 <00000000>             .DATA.L     L2142
    000016FC <00000000>             .DATA.L     L2143
      wpr_attrac  1236    
      wpr_attrac  1237    static void _CamWork( void ) {
    00001700              L2060:                           ; function: _CamWork
                                                           ; frame size=64
    00001700 2FE6                   MOV.L       R14,@-R15
    00001702 2FD6                   MOV.L       R13,@-R15
    00001704 2FC6                   MOV.L       R12,@-R15
    00001706 2FB6                   MOV.L       R11,@-R15
    00001708 2FA6                   MOV.L       R10,@-R15
    0000170A 2F96                   MOV.L       R9,@-R15
    0000170C 2F86                   MOV.L       R8,@-R15
    0000170E DC14                   MOV.L       L2592+18,R12; L2142
    00001710 931D                   MOV.W       L2592,R3   ; H'01F0
    00001712 60C2                   MOV.L       @R12,R0
    00001714 4F22                   STS.L       PR,@-R15
    00001716 203F                   MULS        R3,R0
    00001718 DD12                   MOV.L       L2592+22,R13; _Player_aData
    0000171A 7FE8                   ADD         #-24,R15
    0000171C DA0E                   MOV.L       L2592+10,R10; _xfm_GetCamRoll
    0000171E 64F3                   MOV         R15,R4
    00001720 D90C                   MOV.L       L2592+6,R9 ; _sky_Work
    00001722 001A                   STS         MACL,R0
    00001724 D80A                   MOV.L       L2592+2,R8 ; _xfm_GetCamPitch
    00001726 7410                   ADD         #16,R4
    00001728 DE0F                   MOV.L       L2592+26,R14; L2138
    0000172A 600F                   EXTS.W      R0,R0
    0000172C DB0B                   MOV.L       L2592+14,R11; _xfm_GetCamHeading
    0000172E 30DC                   ADD         R13,R0
    00001730 2F02                   MOV.L       R0,@R15
    00001732 D20F                   MOV.L       L2592+34,R2; L2143
    00001734 D50D                   MOV.L       L2592+30,R5; L2140
    00001736 6022                   MOV.L       @R2,R0
    00001738 E10A                   MOV         #10,R1
    0000173A 3012                   CMP/HS      R1,R0
    0000173C 8B01                   BF          L2593
    0000173E A185                   BRA         L2345
    00001740 0009                   NOP
    00001742              L2593:                            
    00001742 4000                   SHLL        R0
    00001744 6103                   MOV         R0,R1
    00001746 C70B                   MOVA        L2595,R0
    00001748 001D                   MOV.W       @(R0,R1),R0
    0000174A 0023                   BRAF        R0
    0000174C 0009                   NOP
    0000174E              L2594:                            
    0000174E              L2592:                            
    0000174E 01F0                   .DATA.W     H'01F0
    00001750 <00000000>             .DATA.L     _xfm_GetCamPitch
    00001754 <00000000>             .DATA.L     _sky_Work
    00001758 <00000000>             .DATA.L     _xfm_GetCamRoll
    0000175C <00000000>             .DATA.L     _xfm_GetCamHeading
    00001760 <00000000>             .DATA.L     L2142
    00001764 <00000000>             .DATA.L     _Player_aData
    00001768 <00000000>             .DATA.L     L2138
    0000176C <00000000>             .DATA.L     L2140
    00001770 <00000000>             .DATA.L     L2143
    00001774              L2595:
    00001774 003A                   .DATA.W     L2335-L2594
    00001776 003A                   .DATA.W     L2336-L2594
    00001778 003A                   .DATA.W     L2337-L2594
    0000177A 005E                   .DATA.W     L2338-L2594
    0000177C 0086                   .DATA.W     L2339-L2594
    0000177E 0114                   .DATA.W     L2340-L2594
    00001780 0146                   .DATA.W     L2341-L2594
    00001782 0202                   .DATA.W     L2342-L2594
    00001784 0258                   .DATA.W     L2343-L2594
    00001786 0296                   .DATA.W     L2344-L2594
      wpr_attrac  1238            Vec2_t Temp;
      wpr_attrac  1239            Vec3_t Temp2;
      wpr_attrac  1240    
      wpr_attrac  1241            switch( _nCurrentCamType )
      wpr_attrac  1242            {
      wpr_attrac  1243            case _GAME_CAM1:
    00001788              L2335:                           ; case label 
      wpr_attrac  1244            case _GAME_CAM2:
    00001788              L2336:                           ; case label 
      wpr_attrac  1245            case _GAME_CAM3:
    00001788              L2337:                           ; case label 
      wpr_attrac  1246                    gamecam_GameloopWork();
    00001788 D138                   MOV.L       L2596+6,
                        +                                  R1 ; _gamecam_GameloopWor
                        +                                  k
    0000178A 410B                   JSR         @R1
    0000178C 0009                   NOP
      wpr_attrac  1247                    player_DoNotDrawBoat( &Player_aData[_n
                         +CurrentCamPlayer], !gamecam_ShouldBoatBeDrawn() );
    0000178E D338                   MOV.L       L2596+10,
                        +                                  R3; _gamecam_ShouldBoatB
                        +                                  eDrawn
    00001790 430B                   JSR         @R3
    00001792 0009                   NOP
    00001794 64C2                   MOV.L       @R12,R4
    00001796 2008                   TST         R0,R0
    00001798 9365                   MOV.W       L2596,R3   ; H'01F0
    0000179A 0529                   MOVT        R5
    0000179C D235                   MOV.L       L2596+14,
                        +                                  R2; _player_DoNotDrawBoa
                        +                                  t
    0000179E 243F                   MULS        R3,R4
    000017A0 041A                   STS         MACL,R4
    000017A2 644F                   EXTS.W      R4,R4
    000017A4 420B                   JSR      R2
    000017A6 34DC                   ADD         R13,R4
      wpr_attrac  1248                    break;
    000017A8 A155                   BRA         L2477
    000017AA 0009                   NOP
    000017AC              L2338:                           ; case label 
      wpr_attrac  1249            case _ESPN_CAM:
      wpr_attrac  1250                    vec3_Copy( &_CamLook, &Player_aData[_n
                         +CurrentCamPlayer].pWorldOb->Orient.Pos );
    000017AC 65F2                   MOV.L       @R15,R5
    000017AE E050                   MOV         #80,R0
    000017B0 D332                   MOV.L       L2596+22,R3; _vec3_Copy
    000017B2 D431                   MOV.L       L2596+18,R4; L2139
    000017B4 055E                   MOV.L       @(R0,R5),R5
    000017B6 430B                   JSR         @R3
    000017B8 7558                   ADD         #88,R5
      wpr_attrac  1251                    Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( Gamecam_pSector, _CamPos.p[0], _CamPos.p[
                         +2] );
    000017BA 62E3                   MOV         R14,R2
    000017BC E008                   MOV         #8,R0
    000017BE 6323                   MOV         R2,R3
    000017C0 2F22                   MOV.L       R2,@R15
    000017C2 F438                   FMOV.S      @R3,FR4
    000017C4 F526                   FMOV.S      @(R0,R2),FR5
    000017C6 D32F                   MOV.L       L2596+30,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    000017C8 D22D                   MOV.L       L2596+26,R2; _Gamecam_pSector
    000017CA 430B                   JSR         @R3
    000017CC 6422                   MOV.L       @R2,R4
    000017CE D12C                   MOV.L       L2596+26,R1; _Gamecam_pSector
      wpr_attrac  1252                    sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1253                    break;
    000017D0 A12D                   BRA         L2549
    000017D2 2102                   MOV.L       R0,@R1
    000017D4              L2339:                           ; case label 
      wpr_attrac  1254            case _MOUNTED_CAM:
      wpr_attrac  1255                    Temp.p[0] = _BSCamPos.p[0];
    000017D4 F358                   FMOV.S      @R5,FR3
      wpr_attrac  1256                    Temp.p[1] = _BSCamPos.p[2];
    000017D6 E014                   MOV         #20,R0
    000017D8 F43A                   FMOV.S      FR3,@R4
      wpr_attrac  1257                    vec2_RotateBradians( &Temp, Player_aDa
                         +ta[_nCurrentCamPlayer].Phys.nHeading );
    000017DA 64F3                   MOV         R15,R4
    000017DC D12A                   MOV.L       L2596+34,R1; H'00000008+L2140
    000017DE F318                   FMOV.S      @R1,FR3
    000017E0 FF37                   FMOV.S      FR3,@(R0,R15)
    000017E2 65C2                   MOV.L       @R12,R5
    000017E4 933F                   MOV.W       L2596,R3   ; H'01F0
    000017E6 903F                   MOV.W       L2596+2,R0 ; H'013C
    000017E8 253F                   MULS        R3,R5
    000017EA D228                   MOV.L       L2596+38,
                        +                                  R2; _vec2_RotateBradians
    000017EC 051A                   STS         MACL,R5
    000017EE 655F                   EXTS.W      R5,R5
    000017F0 35DC                   ADD         R13,R5
    000017F2 055E                   MOV.L       @(R0,R5),R5
    000017F4 420B                   JSR         @R2
    000017F6 7410                   ADD         #16,R4
      wpr_attrac  1258                    _CamPos.p[0] = Temp.p[0] + Player_aDat
                         +a[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[0];
    000017F8 9235                   MOV.W       L2596,R2   ; H'01F0
    000017FA E050                   MOV         #80,R0
    000017FC 63C2                   MOV.L       @R12,R3
    000017FE 232F                   MULS        R2,R3
    00001800 031A                   STS         MACL,R3
    00001802 633F                   EXTS.W      R3,R3
    00001804 33DC                   ADD         R13,R3
    00001806 033E                   MOV.L       @(R0,R3),R3
    00001808 E010                   MOV         #16,R0
    0000180A F2F6                   FMOV.S      @(R0,R15),FR2
      wpr_attrac  1259                    _CamPos.p[1] = _BSCamPos.p[1] + Player
                         +_aData[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[1];
    0000180C E050                   MOV         #80,R0
    0000180E 7358                   ADD         #88,R3
    00001810 F338                   FMOV.S      @R3,FR3
    00001812 F230                   FADD        FR3,FR2
    00001814 FE2A                   FMOV.S      FR2,@R14
    00001816 61C2                   MOV.L       @R12,R1
    00001818 D31D                   MOV.L       L2596+42,R3; H'00000004+L2140
    0000181A 212F                   MULS        R2,R1
    0000181C F238                   FMOV.S      @R3,FR2
    0000181E 011A                   STS         MACL,R1
    00001820 611F                   EXTS.W      R1,R1
    00001822 31DC                   ADD         R13,R1
    00001824 001E                   MOV.L       @(R0,R1),R0
    00001826 E15C                   MOV         #92,R1
    00001828 F316                   FMOV.S      @(R0,R1),FR3
    0000182A E004                   MOV         #4,R0
    0000182C F230                   FADD        FR3,FR2
    0000182E FE27                   FMOV.S      FR2,@(R0,R14)
      wpr_attrac  1260                    _CamPos.p[2] = Temp.p[1] + Player_aDat
                         +a[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[2];
    00001830 61C2                   MOV.L       @R12,R1
    00001832 212F                   MULS        R2,R1
    00001834 011A                   STS         MACL,R1
    00001836 611F                   EXTS.W      R1,R1
    00001838 E050                   MOV         #80,R0
    0000183A 31DC                   ADD         R13,R1
    0000183C 001E                   MOV.L       @(R0,R1),R0
    0000183E E160                   MOV         #96,R1
    00001840 F316                   FMOV.S      @(R0,R1),FR3
    00001842 E014                   MOV         #20,R0
    00001844 F2F6                   FMOV.S      @(R0,R15),FR2
    00001846 E008                   MOV         #8,R0
      wpr_attrac  1261  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    00001848 61E3                   MOV         R14,R1
    0000184A F230                   FADD        FR3,FR2
    0000184C FE27                   FMOV.S      FR2,@(R0,R14)
    0000184E E008                   MOV         #8,R0
    00001850 2F12                   MOV.L       R1,@R15
    00001852 F418                   FMOV.S      @R1,FR4
    00001854 F516                   FMOV.S      @(R0,R1),FR5
    00001856 D10B                   MOV.L       L2596+30,
                        +                                  R1; _world_FindSectorCon
                        +                                  tainingPoint
    00001858 410B                   JSR         @R1
    0000185A E400                   MOV         #0,R4
    0000185C D308                   MOV.L       L2596+26,R3; _Gamecam_pSector
      wpr_attrac  1262                    sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1263                    break;
    0000185E A0E6                   BRA         L2549
    00001860 2302                   MOV.L       R0,@R3
    00001862              L2340:                           ; case label 
      wpr_attrac  1264            case _CIRCLE_CAM:
      wpr_attrac  1265                    break;
    00001862 A0F8                   BRA         L2477
    00001864 0009                   NOP
    00001866              L2596:                            
    00001866 01F0                   .DATA.W     H'01F0
    00001868 013C                   .DATA.W     H'013C
    0000186A 00000002               .RES.W      1
    0000186C <00000000>             .DATA.L     _gamecam_GameloopWork
    00001870 <00000000>             .DATA.L     _gamecam_ShouldBoatBeDrawn
    00001874 <00000000>             .DATA.L     _player_DoNotDrawBoat
    00001878 <00000000>             .DATA.L     L2139
    0000187C <00000000>             .DATA.L     _vec3_Copy
    00001880 <00000000>             .DATA.L     _Gamecam_pSector
    00001884 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    00001888 <00000008>             .DATA.L     H'00000008+L2140
    0000188C <00000000>             .DATA.L     _vec2_RotateBradians
    00001890 <00000004>             .DATA.L     H'00000004+L2140
    00001894              L2341:                           ; case label 
      wpr_attrac  1266            case _ESPN2_CAM:
      wpr_attrac  1267                    Temp.p[0] = _BSCamPos.p[0];
    00001894 F358                   FMOV.S      @R5,FR3
      wpr_attrac  1268                    Temp.p[1] = _BSCamPos.p[2];
    00001896 E014                   MOV         #20,R0
    00001898 F43A                   FMOV.S      FR3,@R4
      wpr_attrac  1269                    vec2_RotateBradians( &Temp, Player_aDa
                         +ta[_nCurrentCamPlayer].Phys.nHeading );
    0000189A 64F3                   MOV         R15,R4
    0000189C D344                   MOV.L       L2597+6,R3 ; H'00000008+L2140
    0000189E F338                   FMOV.S      @R3,FR3
    000018A0 FF37                   FMOV.S      FR3,@(R0,R15)
    000018A2 65C2                   MOV.L       @R12,R5
    000018A4 9281                   MOV.W       L2597,R2   ; H'01F0
    000018A6 9081                   MOV.W       L2597+2,R0 ; H'013C
    000018A8 252F                   MULS        R2,R5
    000018AA D342                   MOV.L       L2597+10,
                        +                                  R3; _vec2_RotateBradians
    000018AC 051A                   STS         MACL,R5
    000018AE 655F                   EXTS.W      R5,R5
    000018B0 35DC                   ADD         R13,R5
    000018B2 055E                   MOV.L       @(R0,R5),R5
    000018B4 430B                   JSR         @R3
    000018B6 7410                   ADD         #16,R4
      wpr_attrac  1270                    _CamPos.p[0] = Temp.p[0] + Player_aDat
                         +a[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[0];
    000018B8 9377                   MOV.W       L2597,R3   ; H'01F0
    000018BA E050                   MOV         #80,R0
    000018BC 62C2                   MOV.L       @R12,R2
    000018BE 223F                   MULS        R3,R2
    000018C0 021A                   STS         MACL,R2
    000018C2 622F                   EXTS.W      R2,R2
    000018C4 32DC                   ADD         R13,R2
    000018C6 022E                   MOV.L       @(R0,R2),R2
    000018C8 E010                   MOV         #16,R0
    000018CA F2F6                   FMOV.S      @(R0,R15),FR2
      wpr_attrac  1271                    _CamPos.p[1] = _BSCamPos.p[1] + Player
                         +_aData[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[1];
    000018CC E050                   MOV         #80,R0
    000018CE 7258                   ADD         #88,R2
    000018D0 F328                   FMOV.S      @R2,FR3
    000018D2 F230                   FADD        FR3,FR2
    000018D4 FE2A                   FMOV.S      FR2,@R14
    000018D6 61C2                   MOV.L       @R12,R1
    000018D8 D237                   MOV.L       L2597+14,R2; H'00000004+L2140
    000018DA 213F                   MULS        R3,R1
    000018DC F228                   FMOV.S      @R2,FR2
    000018DE 011A                   STS         MACL,R1
    000018E0 611F                   EXTS.W      R1,R1
    000018E2 31DC                   ADD         R13,R1
    000018E4 001E                   MOV.L       @(R0,R1),R0
    000018E6 E15C                   MOV         #92,R1
    000018E8 F316                   FMOV.S      @(R0,R1),FR3
    000018EA E004                   MOV         #4,R0
    000018EC F230                   FADD        FR3,FR2
    000018EE FE27                   FMOV.S      FR2,@(R0,R14)
      wpr_attrac  1272                    _CamPos.p[2] = Temp.p[1] + Player_aDat
                         +a[_nCurrentCamPlayer].pWorldOb->Orient.Pos.p[2];
    000018F0 61C2                   MOV.L       @R12,R1
    000018F2 213F                   MULS        R3,R1
    000018F4 011A                   STS         MACL,R1
    000018F6 611F                   EXTS.W      R1,R1
    000018F8 E050                   MOV         #80,R0
    000018FA 31DC                   ADD         R13,R1
    000018FC 001E                   MOV.L       @(R0,R1),R0
    000018FE E160                   MOV         #96,R1
    00001900 F316                   FMOV.S      @(R0,R1),FR3
    00001902 E014                   MOV         #20,R0
    00001904 F2F6                   FMOV.S      @(R0,R15),FR2
    00001906 E008                   MOV         #8,R0
      wpr_attrac  1273  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    00001908 61E3                   MOV         R14,R1
    0000190A F230                   FADD        FR3,FR2
    0000190C FE27                   FMOV.S      FR2,@(R0,R14)
    0000190E E008                   MOV         #8,R0
    00001910 2F12                   MOV.L       R1,@R15
    00001912 F418                   FMOV.S      @R1,FR4
    00001914 F516                   FMOV.S      @(R0,R1),FR5
    00001916 D129                   MOV.L       L2597+18,
                        +                                  R1; _world_FindSectorCon
                        +                                  tainingPoint
    00001918 410B                   JSR         @R1
    0000191A E400                   MOV         #0,R4
    0000191C D328                   MOV.L       L2597+22,R3; _Gamecam_pSector
    0000191E 2302                   MOV.L       R0,@R3
      wpr_attrac  1274                    vec3_Copy( &_CamLook, &Player_aData[_n
                         +2ndCamPlayer].pWorldOb->Orient.Pos );
    00001920 E050                   MOV         #80,R0
    00001922 D328                   MOV.L       L2597+26,R3; L2145
    00001924 9241                   MOV.W       L2597,R2   ; H'01F0
    00001926 6131                   MOV.W       @R3,R1
    00001928 D328                   MOV.L       L2597+34,R3; _vec3_Copy
    0000192A 212F                   MULS        R2,R1
    0000192C D426                   MOV.L       L2597+30,R4; L2139
    0000192E 051A                   STS         MACL,R5
    00001930 655F                   EXTS.W      R5,R5
    00001932 35DC                   ADD         R13,R5
    00001934 055E                   MOV.L       @(R0,R5),R5
    00001936 430B                   JSR         @R3
    00001938 7558                   ADD         #88,R5
      wpr_attrac  1275                    _CamLook.p[1] = ((_CamLook.p[1] - _Cam
                         +Pos.p[1]) * 0.1f) + _CamPos.p[1];
    0000193A D425                   MOV.L       L2597+38,R4; H'00000004+L2139
    0000193C E004                   MOV         #4,R0
    0000193E F4E6                   FMOV.S      @(R0,R14),FR4
    00001940 C724                   MOVA        L2597+42,R0
    00001942 F348                   FMOV.S      @R4,FR3
    00001944 F008                   FMOV.S      @R0,FR0
    00001946 F341                   FSUB        FR4,FR3
    00001948 F24C                   FMOV.S      FR4,FR2
    0000194A F23E                   FMAC        FR0,FR3,FR2
      wpr_attrac  1276                    sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1277                    break;
    0000194C A06F                   BRA         L2549
    0000194E F42A                   FMOV.S      FR2,@R4
    00001950              L2342:                           ; case label 
      wpr_attrac  1278            case _ESPN3_CAM:
      wpr_attrac  1279                    vec3_CalcSum( &_CamPos, &_BSCamPos, &P
                         +layer_aData[_nCurrentCamPlayer].pWorldOb->Orient.Pos )
                         +;
    00001950 66F2                   MOV.L       @R15,R6
    00001952 E050                   MOV         #80,R0
    00001954 D421                   MOV.L       L2597+50,R4; L2138
    00001956 D322                   MOV.L       L2597+54,R3; _vec3_CalcSum
    00001958 066E                   MOV.L       @(R0,R6),R6
    0000195A D51F                   MOV.L       L2597+46,R5; L2140
    0000195C 430B                   JSR         @R3
    0000195E 7658                   ADD         #88,R6
      wpr_attrac  1280  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    00001960 62E3                   MOV         R14,R2
    00001962 6323                   MOV         R2,R3
    00001964 E008                   MOV         #8,R0
    00001966 2F22                   MOV.L       R2,@R15
    00001968 F438                   FMOV.S      @R3,FR4
    0000196A D314                   MOV.L       L2597+18,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    0000196C F526                   FMOV.S      @(R0,R2),FR5
    0000196E 430B                   JSR         @R3
    00001970 E400                   MOV         #0,R4
    00001972 D213                   MOV.L       L2597+22,R2; _Gamecam_pSector
    00001974 2202                   MOV.L       R0,@R2
      wpr_attrac  1281                    vec3_Copy( &_CamLook, &Player_aData[_n
                       +2ndCamPlayer].pWorldOb->Orient.Pos );
    00001976 E050                   MOV         #80,R0
    00001978 D212                   MOV.L       L2597+26,R2; L2145
    0000197A 9316                   MOV.W       L2597,R3   ; H'01F0
    0000197C 6121                   MOV.W       @R2,R1
    0000197E D213                   MOV.L       L2597+34,R2; _vec3_Copy
    00001980 213F                   MULS        R3,R1
    00001982 D411                   MOV.L       L2597+30,R4; L2139
    00001984 051A                   STS         MACL,R5
    00001986 655F                   EXTS.W      R5,R5
    00001988 35DC                   ADD         R13,R5
    0000198A 055E                   MOV.L       @(R0,R5),R5
    0000198C 420B                   JSR         @R2
    0000198E 7558                   ADD         #88,R5
      wpr_attrac  1282                    _CamLook.p[1] = ((_CamLook.p[1] - _Cam
                         +Pos.p[1]) * 0.1f) + _CamPos.p[1];
    00001990 D40F                   MOV.L       L2597+38,R4; H'00000004+L2139
    00001992 E004                   MOV         #4,R0
    00001994 F4E6                   FMOV.S      @(R0,R14),FR4
    00001996 C70F                   MOVA        L2597+42,R0
    00001998 F348                   FMOV.S      @R4,FR3
    0000199A F008                   FMOV.S      @R0,FR0
    0000199C F341                   FSUB        FR4,FR3
    0000199E F24C                   FMOV.S      FR4,FR2
    000019A0 F23E                   FMAC        FR0,FR3,FR2
      wpr_attrac  1283                    sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1284                    break;
    000019A2 A044                   BRA         L2549
    000019A4 F42A                   FMOV.S      FR2,@R4
    000019A6              L2343:                           ; case label 
      wpr_attrac  1285            case _STATIONARY_CAM:
      wpr_attrac  1286                   sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1287                    break;
    000019A6 A042                   BRA         L2549
    000019A8 0009                   NOP
    000019AA              L2597:                            
    000019AA 01F0                   .DATA.W     H'01F0
    000019AC 013C                   .DATA.W     H'013C
    000019AE 00000002               .RES.W      1
    000019B0 <00000008>             .DATA.L     H'00000008+L2140
    000019B4 <00000000>             .DATA.L     _vec2_RotateBradians
    000019B8 <00000004>             .DATA.L     H'00000004+L2140
    000019BC <00000000>             .DATA.L     _world_FindSectorContainingPoint
    000019C0 <00000000>             .DATA.L     _Gamecam_pSector
    000019C4 <00000000>             .DATA.L     L2145
    000019C8 <00000000>             .DATA.L     L2139
    000019CC <00000000>             .DATA.L     _vec3_Copy
    000019D0 <00000004>             .DATA.L     H'00000004+L2139
    000019D4 3DCCCCCC               .DATA.L     H'3DCCCCCC
    000019D8 <00000000>             .DATA.L     L2140
    000019DC <00000000>             .DATA.L     L2138
    000019E0 <00000000>             .DATA.L     _vec3_CalcSum
    000019E4              L2344:                           ; case label 
      wpr_attrac  1288            case _CHASE_CAM:
      wpr_attrac  1289                    vec3_Copy( &_CamLook, &Player_aData[_n
                         +CurrentCamPlayer].pWorldOb->Orient.Pos );
    000019E4 65F2                   MOV.L       @R15,R5
    000019E6 E050                   MOV         #80,R0
    000019E8 D321                   MOV.L       L2598+6,R3 ; _vec3_Copy
    000019EA D420                   MOV.L       L2598+2,R4 ; L2139
    000019EC 055E                   MOV.L       @(R0,R5),R5
    000019EE 430B                   JSR         @R3
    000019F0 7558                   ADD         #88,R5
      wpr_attrac  1290                    _CamLook.p[1] += 15.0f;
    000019F2 D220                   MOV.L       L2598+10,R2; H'00000004+L2139
    000019F4 C720                   MOVA        L2598+14,R0
    000019F6 F308                   FMOV.S      @R0,FR3
      wpr_attrac  1291                    vec3_CalcInterpolate( &Temp2, &_CamPos
                         +, &_CamLook, 0.07f );
    000019F8 C720                   MOVA        L2598+18,R0
    000019FA F228                   FMOV.S      @R2,FR2
    000019FC 64F3                   MOV         R15,R4
    000019FE F230                   FADD        FR3,FR2
    00001A00 F22A                   FMOV.S      FR2,@R2
    00001A02 D61A                   MOV.L       L2598+2,R6 ; L2139
    00001A04 D51E                   MOV.L       L2598+22,R5; L2138
    00001A06 D31F                   MOV.L       L2598+26,
                        +                                  R3; _vec3_CalcInterpolat
                        +                                  e
    00001A08 F408                   FMOV.S      @R0,FR4
    00001A0A 430B                   JSR         @R3
    00001A0C 7404                   ADD         #4,R4
      wpr_attrac  1292                    vec3_Copy( &_CamPos, &Temp2 );
    00001A0E D218                   MOV.L       L2598+6,R2 ; _vec3_Copy
    00001A10 65F3                   MOV         R15,R5
    00001A12 D41B                   MOV.L       L2598+22,R4; L2138
    00001A14 420B                   JSR         @R2
    00001A16 7504                   ADD         #4,R5
      wpr_attrac  1293  E                 Gamecam_pSector = world_FindSectorCont
                         +ainingPoint( 0, _CamPos.p[0], _CamPos.p[2] );
    00001A18 E008                   MOV         #8,R0
    00001A1A 63E3                   MOV         R14,R3
    00001A1C 6233                   MOV         R3,R2
    00001A1E 2F32                   MOV.L       R3,@R15
    00001A20 F536                   FMOV.S      @(R0,R3),FR5
    00001A22 D319                   MOV.L       L2598+30,
                        +                                  R3; _world_FindSectorCon
                        +                                  tainingPoint
    00001A24 F428                   FMOV.S      @R2,FR4
    00001A26 430B                   JSR         @R3
    00001A28 E400                   MOV         #0,R4
    00001A2A D218                   MOV.L       L2598+34,R2; _Gamecam_pSector
    00001A2C 2202                   MOV.L       R0,@R2
      wpr_attrac  1294                    sky_Work( xfm_GetCamHeading( &_Camera 
                         +), xfm_GetCamPitch( &_Camera ), xfm_GetCamRoll( &_Came
                         +ra ) );
      wpr_attrac  1295                    break;
    00001A2E              L2549:                            
    00001A2E D418                   MOV.L       L2598+38,R4; L2141
    00001A30 4A0B                   JSR         @R10
    00001A32 0009                   NOP
    00001A34 D416                   MOV.L       L2598+38,R4; L2141
    00001A36 480B                   JSR         @R8
    00001A38 2F06                   MOV.L       R0,@-R15
    00001A3A D415                   MOV.L       L2598+38,R4; L2141
    00001A3C 4B0B                   JSR         @R11
    00001A3E 2F06                   MOV.L       R0,@-R15
    00001A40 65F6                   MOV.L       @R15+,R5
    00001A42 6403                   MOV         R0,R4
    00001A44 490B                   JSR         @R9
    00001A46 66F6                   MOV.L       @R15+,R6
    00001A48 A005                   BRA         L2477
    00001A4A 0009                   NOP
    00001A4C              L2345:                           ; default label 
      wpr_attrac  1296            default:
      wpr_attrac  1297  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 1297 );
    00001A4C D112                   MOV.L       L2598+46,R1; _gerr_Assert
    00001A4E D511                   MOV.L       L2598+42,R5; L2071
    00001A50 960B                   MOV.W       L2598,R6   ; H'0511
    00001A52 410B                   JSR         @R1
    00001A54 E400                   MOV         #0,R4
      wpr_attrac  1298                    break;  
    00001A56              L2477:                            
      wpr_attrac  1299            }       
      wpr_attrac  1300    }
    00001A56 7F18                   ADD         #24,R15
    00001A58 4F26                   LDS.L       @R15+,PR
    00001A5A 68F6                   MOV.L       @R15+,R8
    00001A5C 69F6                   MOV.L       @R15+,R9
    00001A5E 6AF6                   MOV.L       @R15+,R10
    00001A60 6BF6                   MOV.L       @R15+,R11
    00001A62 6CF6                   MOV.L       @R15+,R12
    00001A64 6DF6                   MOV.L       @R15+,R13
    00001A66 000B                   RTS
    00001A68 6EF6                   MOV.L       @R15+,R14
    00001A6A              L2598:                            
    00001A6A 0511                   .DATA.W     H'0511
    00001A6C <00000000>             .DATA.L     L2139
    00001A70 <00000000>             .DATA.L     _vec3_Copy
    00001A74 <00000004>             .DATA.L     H'00000004+L2139
    00001A78 41700000               .DATA.L     H'41700000
    00001A7C 3D8F5C28               .DATA.L     H'3D8F5C28
    00001A80 <00000000>             .DATA.L     L2138
    00001A84 <00000000>             .DATA.L     _vec3_CalcInterpolate
    00001A88 <00000000>             .DATA.L     _world_FindSectorContainingPoint
    00001A8C <00000000>             .DATA.L     _Gamecam_pSector
    00001A90 <00000000>             .DATA.L     L2141
    00001A94 <00000000>             .DATA.L     L2071
    00001A98 <00000000>             .DATA.L     _gerr_Assert
      wpr_attrac  1301    
      wpr_attrac  1302    static void _CamDraw( void ) {
    00001A9C              L2061:                           ; function: _CamDraw
                                                           ; frame size=8
    00001A9C 2FE6                   MOV.L       R14,@-R15
      wpr_attrac  1303            
      wpr_attrac  1304            switch( _nCurrentCamType )
    00001A9E D306                   MOV.L       L2599+2,R3 ; L2143
    00001AA0 4F22                   STS.L       PR,@-R15
    00001AA2 6032                   MOV.L       @R3,R0
    00001AA4 E10A                   MOV         #10,R1
    00001AA6 3012                   CMP/HS      R1,R0
    00001AA8 893E                   BT          L2356
    00001AAA 4000                   SHLL        R0
    00001AAC 6103                   MOV         R0,R1
    00001AAE C703                   MOVA        L2601,R0
    00001AB0 001D                   MOV.W       @(R0,R1),R0
    00001AB2 0023                   BRAF        R0
    00001AB4 0009                   NOP
    00001AB6              L2600:                            
    00001AB6              L2599:                            
    00001AB6 00000002               .RES.W      1
    00001AB8 <00000000>             .DATA.L     L2143
    00001ABC              L2601:
    00001ABC 001A                   .DATA.W     L2346-L2600
    00001ABE 001A                   .DATA.W     L2347-L2600
    00001AC0 001A                   .DATA.W     L2348-L2600
    00001AC2 005C                   .DATA.W     L2351-L2600
    00001AC4 0022                   .DATA.W     L2349-L2600
    00001AC6 0058                   .DATA.W     L2350-L2600
    00001AC8 005C                   .DATA.W     L2352-L2600
    00001ACA 005C                   .DATA.W     L2353-L2600
    00001ACC 005C                   .DATA.W     L2354-L2600
    00001ACE 005C                   .DATA.W     L2355-L2600
      wpr_attrac  1305            {
      wpr_attrac  1306            case _GAME_CAM1:
    00001AD0              L2346:                           ; case label 
      wpr_attrac  1307            case _GAME_CAM2:
    00001AD0              L2347:                           ; case label 
      wpr_attrac  1308            case _GAME_CAM3:
    00001AD0              L2348:                           ; case label 
      wpr_attrac  1309                    gamecam_InitXfmStack();
    00001AD0 4F26                   LDS.L       @R15+,PR
    00001AD2 D239                   MOV.L       L2602+6,
                        +                                  R2 ; _gamecam_InitXfmStac
                        +                                  k
    00001AD4 422B                   JMP         @R2
    00001AD6 6EF6                   MOV.L       @R15+,R14
    00001AD8              L2349:                           ; case label 
      wpr_attrac  1310                    break;
      wpr_attrac  1311            case _MOUNTED_CAM:
      wpr_attrac  1312                    xfm_InitCameraRot( &_Camera, _CamPos.p
                         +[0], _CamPos.p[1], _CamPos.p[2], 
      wpr_attrac  1313                                                       Pla
                         +yer_aData[_nCurrentCamPlayer].Phys.nHeading + _nCamHea
                         +ding, 0, 0 );
    00001AD8 D038                   MOV.L       L2602+10,R0; L2142
    00001ADA E700                   MOV         #0,R7
    00001ADC 9269                   MOV.W       L2602,R2   ; H'01F0
    00001ADE 6673                   MOV         R7,R6
    00001AE0 6101                   MOV.W       @R0,R1
    00001AE2 D038                   MOV.L       L2602+18,
                        +                                  R0; H'0000013C+_Player_a
                        +                                  Data
    00001AE4 212F                   MULS        R2,R1
    00001AE6 DE38                   MOV.L       L2602+22,R14; L2138
    00001AE8 D135                   MOV.L       L2602+14,R1; L2144
    00001AEA D438                   MOV.L       L2602+26,R4; L2141
    00001AEC 051A                   STS         MACL,R5
    00001AEE 6312                   MOV.L       @R1,R3
    00001AF0 D237                   MOV.L       L2602+30,R2; _xfm_InitCameraRot
    00001AF2 655F                   EXTS.W      R5,R5
    00001AF4 055E                   MOV.L       @(R0,R5),R5
    00001AF6 E008                   MOV         #8,R0
    00001AF8 F6E6                   FMOV.S      @(R0,R14),FR6
    00001AFA E004                   MOV         #4,R0
    00001AFC F5E6                   FMOV.S      @(R0,R14),FR5
    00001AFE 353C                   ADD         R3,R5
    00001B00 420B                   JSR         @R2
    00001B02 F4E8                   FMOV.S      @R14,FR4
      wpr_attrac  1314                    xfm_BuildCameraXfmAndInitStack( &_Came
                         +ra );
    00001B04 4F26                   LDS.L       @R15+,PR
    00001B06 D333                   MOV.L       L2602+34,
                        +                                  R3; _xfm_BuildCameraXfmA
                        +                                  ndInitStack
    00001B08 D430                   MOV.L       L2602+26,R4; L2141
    00001B0A 432B                   JMP         @R3
    00001B0C 6EF6                   MOV.L       @R15+,R14
    00001B0E              L2350:                           ; case label 
      wpr_attrac  1315                    break;
      wpr_attrac  1316            case _CIRCLE_CAM:
      wpr_attrac  1317                    break;  
    00001B0E A012                   BRA         L2480
    00001B10 0009                   NOP
    00001B12              L2351:                           ; case label 
      wpr_attrac  1318            case _ESPN_CAM:
      wpr_attrac  1319            case _ESPN2_CAM:
    00001B12              L2352:                           ; case label 
      wpr_attrac  1320            case _ESPN3_CAM:
    00001B12              L2353:                           ; case label 
      wpr_attrac  1321            case _STATIONARY_CAM:
    00001B12              L2354:                           ; case label 
      wpr_attrac  1322            case _CHASE_CAM:
    00001B12              L2355:                           ; case label 
      wpr_attrac  1323                    xfm_InitCameraLookFromVec( &_Camera, &
                         +_CamPos, &_CamLook );
    00001B12 D42E                   MOV.L       L2602+26,R4; L2141
    00001B14 D331                   MOV.L       L2602+42,
                        +                                  R3; _xfm_InitCameraLookF
                        +                                  romVec
    00001B16 D630                   MOV.L       L2602+38,R6; L2139
    00001B18 D52B                   MOV.L       L2602+22,R5; L2138
    00001B1A 430B                   JSR         @R3
    00001B1C 0009                   NOP
      wpr_attrac  1324                    xfm_BuildCameraXfmAndInitStack( &_Came
                         +ra );   
    00001B1E 4F26                   LDS.L       @R15+,PR
    00001B20 D22C                   MOV.L       L2602+34,
                        +                                  R2; _xfm_BuildCameraXfmA
                        +                                  ndInitStack
    00001B22 D42A                   MOV.L       L2602+26,R4; L2141
    00001B24 422B                   JMP         @R2
    00001B26 6EF6                   MOV.L       @R15+,R14
    00001B28              L2356:                           ; default label 
      wpr_attrac  1325                    break;
      wpr_attrac  1326            default:
      wpr_attrac  1327  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 1327 );
    00001B28 4F26                   LDS.L       @R15+,PR
    00001B2A D22E                   MOV.L       L2602+50,R2; _gerr_Assert
    00001B2C E400                   MOV         #0,R4
    00001B2E 9641                   MOV.W       L2602+2,R6 ; H'052F
    00001B30 D52B                   MOV.L       L2602+46,R5; L2071
    00001B32 422B                   JMP         @R2
    00001B34 6EF6                   MOV.L       @R15+,R14
    00001B36              L2480:                            
      wpr_attrac  1328                    break;  
      wpr_attrac  1329            }       
      wpr_attrac  1330    }
    00001B36 4F26                   LDS.L       @R15+,PR
    00001B38 000B                   RTS
    00001B3A 6EF6                   MOV.L       @R15+,R14
      wpr_attrac  1331    
      wpr_attrac  1332    static Mesh3d_t *_pViewText;
      wpr_attrac  1333    static Mesh3d_t *_paActiveView[3];
      wpr_attrac  1334  E static int              _bOverLayOk;
      wpr_attrac  1335    static int              _nViewWords;
      wpr_attrac  1336    static u32              _nCounter;
      wpr_attrac  1337  E static int              _bFlashOn;
      wpr_attrac  1338    
      wpr_attrac  1339    #define _DO_NOT_DRAW_OVERLAY    -1
      wpr_attrac  1340    
      wpr_attrac  1341    static ObsysLoadDef_t _aLoadTable[] = {
      wpr_attrac  1342            (void *)&_pViewText,                    "GWWDI
                         +RETXH0",
      wpr_attrac  1343            (void *)&_paActiveView[0],              "GWWPI
                         +LOONH0",
      wpr_attrac  1344            (void *)&_paActiveView[1],              "GWWLO
                         +W_ONH0",
      wpr_attrac  1345            (void *)&_paActiveView[2],              "GWWHI
                         +GHONH0",
      wpr_attrac  1346  E         0,                                            
                         +        0,
      wpr_attrac  1347    };
      wpr_attrac  1348    
      wpr_attrac  1349    static void _OverLayLoad( void ) {
    00001B3C              L2062:                           ; function: _OverLayL
                        +                                  oad
                                                           ; frame size=4
    00001B3C 4F22                   STS.L       PR,@-R15
      wpr_attrac  1350            
      wpr_attrac  1351            /* load our textures */
      wpr_attrac  1352  E         if( obsys_LoadGroup( _aLoadTable, 0 ) != -1 ) 
                         +{
    00001B3E D32B                   MOV.L       L2602+58,R3; _obsys_LoadGroup
    00001B40 D429                   MOV.L       L2602+54,R4; L2184
    00001B42 430B                   JSR         @R3
    00001B44 E500                   MOV         #0,R5
    00001B46 88FF                   CMP/EQ      #-1,R0
    00001B48 8903                   BT          L2482
      wpr_attrac  1353                    /* all of the textures could not loade
                         +d */
      wpr_attrac  1354  E                 _bOverLayOk = 0;
    00001B4A D229                   MOV.L       L2602+62,R2; L2180
    00001B4C E300                   MOV         #0,R3
    00001B4E A00B                   BRA         L2483
    00001B50 2232                   MOV.L       R3,@R2
    00001B52              L2482:                            
      wpr_attrac  1355            } else {
      wpr_attrac  1356                    /* everything loaded ok */
      wpr_attrac  1357  E                 _bOverLayOk = 1;
    00001B52 D327                   MOV.L       L2602+62,R3; L2180
      wpr_attrac  1358  E                 _nViewWords = -1;
    00001B54 E2FF                   MOV         #-1,R2
    00001B56 E401                   MOV         #1,R4
    00001B58 2342                   MOV.L       R4,@R3
      wpr_attrac  1359                    _nCounter = 0;
    00001B5A E000                   MOV         #0,R0
    00001B5C D125                   MOV.L       L2602+66,R1; L2181
    00001B5E 2122                   MOV.L       R2,@R1
    00001B60 D225                   MOV.L       L2602+70,R2; L2182
    00001B62 2202                   MOV.L       R0,@R2
      wpr_attrac  1360  E                 _bFlashOn = 1;
    00001B64 D325                   MOV.L       L2602+74,R3; L2183
    00001B66 2342                   MOV.L       R4,@R3
    00001B68              L2483:                            
      wpr_attrac  1361            }
      wpr_attrac  1362    }
    00001B68 4F26                   LDS.L       @R15+,PR
    00001B6A 000B                   RTS
    00001B6C 0009                   NOP
      wpr_attrac  1363    
      wpr_attrac  1364    static void _OverLayWork( void ) {
    00001B6E              L2063:                           ; function: _OverLayW
                        +                                  ork
                                                           ; frame size=8
    00001B6E 2FE6                   MOV.L       R14,@-R15
    00001B70 2FD6                   MOV.L       R13,@-R15
      wpr_attrac  1365            
      wpr_attrac  1366            if( !_bOverLayOk ) {
    00001B72 D11F                   MOV.L       L2602+62,R1; L2180
    00001B74 6212                   MOV.L       @R1,R2
    00001B76 2228                   TST         R2,R2
    00001B78 8B01                   BF          L2603
    00001B7A A0B9                   BRA         L2485
    00001B7C 0009                   NOP
    00001B7E              L2603:                            
      wpr_attrac  1367                    return;
      wpr_attrac  1368            }
      wpr_attrac  1369    
      wpr_attrac  1370            switch( _StageNum ) 
    00001B7E D320                   MOV.L       L2602+78,R3; L2041
    00001B80 ED02                   MOV         #2,R13
    00001B82 D41D                   MOV.L       L2602+70,R4; L2182
    00001B84 E700                   MOV         #0,R7
    00001B86 6032                   MOV.L       @R3,R0
    00001B88 D61C                   MOV.L       L2602+74,R6; L2183
    00001B8A DE1A                   MOV.L       L2602+66,R14; L2181
    00001B8C 880E                   CMP/EQ      #14,R0
    00001B8E 8F02                   BF/S        L2604
    00001B90 E501                   MOV         #1,R5
    00001B92 A0AD                   BRA         L2485
    00001B94 0009                   NOP
    00001B96              L2604:                            
    00001B96 8810                   CMP/EQ      #16,R0
    00001B98 8934                   BT          L2370
    00001B9A 8812                   CMP/EQ      #18,R0
    00001B9C 8962                   BT          L2379
    00001B9E 8814                   CMP/EQ      #20,R0
    00001BA0 8B01                   BF          L2605
    00001BA2 A0A5                   BRA         L2485
    00001BA4 0009                   NOP
    00001BA6              L2605:                            
    00001BA6 8816                   CMP/EQ      #22,R0
    00001BA8 892C                   BT          L2371
    00001BAA 8818                   CMP/EQ      #24,R0
    00001BAC 895A                   BT          L2380
    00001BAE A098                   BRA         L2388
    00001BB0 0009                   NOP
    00001BB2              L2602:                            
    00001BB2 01F0                   .DATA.W     H'01F0
    00001BB4 052F                   .DATA.W     H'052F
    00001BB6 00000002               .RES.W      1
    00001BB8 <00000000>             .DATA.L     _gamecam_InitXfmStack
    00001BBC <00000000>             .DATA.L     L2142
    00001BC0 <00000000>             .DATA.L     L2144
    00001BC4 <0000013C>             .DATA.L     H'0000013C+_Player_aData
    00001BC8 <00000000>             .DATA.L     L2138
    00001BCC <00000000>             .DATA.L     L2141
    00001BD0 <00000000>             .DATA.L     _xfm_InitCameraRot
    00001BD4 <00000000>             .DATA.L     _xfm_BuildCameraXfmAndInitStack
    00001BD8 <00000000>             .DATA.L     L2139
    00001BDC <00000000>             .DATA.L     _xfm_InitCameraLookFromVec
    00001BE0 <00000000>             .DATA.L     L2071
    00001BE4 <00000000>             .DATA.L     _gerr_Assert
    00001BE8 <00000000>             .DATA.L     L2184
    00001BEC <00000000>             .DATA.L     _obsys_LoadGroup
    00001BF0 <00000000>             .DATA.L     L2180
    00001BF4 <00000000>             .DATA.L     L2181
    00001BF8 <00000000>             .DATA.L     L2182
    00001BFC <00000000>             .DATA.L     L2183
    00001C00 <00000000>             .DATA.L     L2041
    00001C04              L2370:                           ; case label 
      wpr_attrac  1371            {
      wpr_attrac  1372            case WPR_ATTRACT_STAGE_1:
      wpr_attrac  1373            case WPR_ATTRACT_STAGE_7:
      wpr_attrac  1374                    break;
      wpr_attrac  1375            case WPR_ATTRACT_STAGE_3:
      wpr_attrac  1376            case WPR_ATTRACT_STAGE_9:
    00001C04              L2371:                           ; case label 
      wpr_attrac  1377                    switch( _nFrameCount )
    00001C04 D130                   MOV.L       L2606+26,R1; L2052
    00001C06 6012                   MOV.L       @R1,R0
    00001C08 9151                   MOV.W       L2606,R1   ; H'00FA
    00001C0A 3010                   CMP/EQ      R1,R0
    00001C0C 8910                   BT          L2372
    00001C0E 914F                   MOV.W       L2606+2,R1 ; H'0177
    00001C10 3010                   CMP/EQ      R1,R0
    00001C12 890F                   BT          L2373
    00001C14 914D                   MOV.W       L2606+4,R1 ; H'01F4
    00001C16 3010                   CMP/EQ      R1,R0
    00001C18 890E                   BT          L2374
    00001C1A 914B                   MOV.W       L2606+6,R1 ; H'0271
    00001C1C 3010                   CMP/EQ      R1,R0
    00001C1E 890D                   BT          L2375
    00001C20 9149                   MOV.W       L2606+8,R1 ; H'02EE
    00001C22 3010                   CMP/EQ      R1,R0
    00001C24 890C                   BT          L2376
    00001C26 9147                   MOV.W       L2606+10,R1; H'036B
    00001C28 3010                   CMP/EQ      R1,R0
    00001C2A 890B                   BT          L2377
    00001C2C A00D                   BRA         L2378
    00001C2E 0009                   NOP
    00001C30              L2372:                           ; case label 
      wpr_attrac  1378                    {
      wpr_attrac  1379                    case 250:
      wpr_attrac  1380                            /* turn on view 3 */
      wpr_attrac  1381                            _nViewWords = 2;
      wpr_attrac  1382                            _nCounter = 0;
      wpr_attrac  1383  E                         _bFlashOn = 1;
      wpr_attrac  1384                            break;
    00001C30 A006                   BRA         L2559
    00001C32 0009                   NOP
    00001C34              L2373:                           ; case label 
      wpr_attrac  1385                    case 375:
      wpr_attrac  1386                            /* turn on view 2 */
      wpr_attrac  1387                            _nViewWords = 1;
      wpr_attrac  1388                            _nCounter = 0;
      wpr_attrac  1389  E                         _bFlashOn = 1;
      wpr_attrac  1390                            break;
    00001C34 A035                   BRA         L2558
    00001C36 2E52                   MOV.L       R5,@R14
    00001C38              L2374:                           ; case label 
      wpr_attrac  1391                    case 500:
      wpr_attrac  1392                            /* turn on view 1 */
      wpr_attrac  1393                            _nViewWords = 0;
      wpr_attrac  1394                            _nCounter = 0;
      wpr_attrac  1395  E                         _bFlashOn = 1;
      wpr_attrac  1396                            break;
    00001C38 A033                   BRA         L2558
    00001C3A 2E72                   MOV.L       R7,@R14
    00001C3C              L2375:                           ; case label 
      wpr_attrac  1397                    case 625:
      wpr_attrac  1398                            /* turn on view 2 */
      wpr_attrac  1399                            _nViewWords = 1;
      wpr_attrac  1400                            _nCounter = 0;
      wpr_attrac  1401  E                         _bFlashOn = 1;
      wpr_attrac  1402                            break;
    00001C3C A031                   BRA         L2558
    00001C3E 2E52                   MOV.L       R5,@R14
    00001C40              L2376:                          ; case label 
      wpr_attrac  1403                    case 750:
      wpr_attrac  1404                            /* turn on view 3 */
      wpr_attrac  1405                            _nViewWords = 2;
      wpr_attrac  1406                            _nCounter = 0;
      wpr_attrac  1407  E                         _bFlashOn = 1;
      wpr_attrac  1408                            break;
    00001C40              L2559:                            
    00001C40 A02F                   BRA         L2558
    00001C42 2ED2                   MOV.L       R13,@R14
    00001C44              L2377:                           ; case label 
      wpr_attrac  1409                    case 875:
      wpr_attrac  1410  E                         _nViewWords = -1;
    00001C44 E2FF                   MOV         #-1,R2
      wpr_attrac  1411                            break;
    00001C46 A053                   BRA         L2485
    00001C48 2E22                   MOV.L       R2,@R14
    00001C4A              L2378:                           ; default label 
      wpr_attrac  1412                    default:
      wpr_attrac  1413                            ++_nCounter;
    00001C4A 6142                   MOV.L       @R4,R1
    00001C4C 7101                   ADD         #1,R1
      wpr_attrac  1414                            if( (_nCounter & 0x3) == 0x3 )
                         + {
    00001C4E 6013                   MOV         R1,R0
    00001C50 0009                   NOP
    00001C52 C903                   AND         #3,R0
    00001C54 8803                   CMP/EQ      #3,R0
    00001C56 8F4B                   BF/S        L2485
    00001C58 2412                   MOV.L       R1,@R4
      wpr_attrac  1415                                    _bFlashOn = !_bFlashOn
                         +;
    00001C5A 6062                   MOV.L       @R6,R0
    00001C5C 2008                   TST         R0,R0
    00001C5E 0029                   MOVT        R0
      wpr_attrac  1416                            }
      wpr_attrac  1417                            break;
      wpr_attrac  1418                    }
      wpr_attrac  1419                    break;
    00001C60 A046                   BRA         L2485
    00001C62 2602                   MOV.L       R0,@R6
    00001C64              L2379:                           ; case label 
      wpr_attrac  1420            case WPR_ATTRACT_STAGE_5:
      wpr_attrac  1421            case WPR_ATTRACT_STAGE_11:
    00001C64              L2380:                           ; case label 
      wpr_attrac  1422                    switch( _nFrameCount )
    00001C64 D118                   MOV.L       L2606+26,R1; L2052
    00001C66 6012                   MOV.L       @R1,R0
    00001C68 9127                   MOV.W       L2606+12,R1; H'00C8
    00001C6A 3010                   CMP/EQ      R1,R0
    00001C6C 8910                   BT          L2381
    00001C6E 9125                   MOV.W       L2606+14,R1; H'0145
    00001C70 3010                   CMP/EQ      R1,R0
    00001C72 890F                   BT          L2382
    00001C74 9123                   MOV.W       L2606+16,R1; H'01C2
    00001C76 3010                   CMP/EQ      R1,R0
    00001C78 890E                   BT          L2383
    00001C7A 9121                   MOV.W       L2606+18,R1; H'023F
    00001C7C 3010                   CMP/EQ      R1,R0
    00001C7E 890D                   BT          L2384
    00001C80 911F                   MOV.W       L2606+20,R1; H'02BC
    00001C82 3010                   CMP/EQ      R1,R0
    00001C84 890C                   BT          L2385
    00001C86 911D                   MOV.W       L2606+22,R1; H'0339
    00001C88 3010                   CMP/EQ      R1,R0
    00001C8A 890D                   BT          L2386
    00001C8C A01E                   BRA         L2387
    00001C8E 0009                   NOP
    00001C90              L2381:                           ; case label 
      wpr_attrac  1423                    {
      wpr_attrac  1424                    case 200:
      wpr_attrac  1425                            /* turn on view 3 */
      wpr_attrac  1426                            _nViewWords = 2;
      wpr_attrac  1427                            _nCounter = 0;
      wpr_attrac  1428  E                         _bFlashOn = 1;
      wpr_attrac  1429                            break;
    00001C90 A006                   BRA         L2560
    00001C92 0009                   NOP
    00001C94              L2382:                           ; case label 
      wpr_attrac  1430                    case 325:
      wpr_attrac  1431                            /* turn on view 2 */
      wpr_attrac  1432                            _nViewWords = 1;
      wpr_attrac  1433                            _nCounter = 0;
      wpr_attrac  1434  E                         _bFlashOn = 1;
      wpr_attrac  1435                            break;
    00001C94 A005                   BRA         L2558
    00001C96 2E52                   MOV.L       R5,@R14
    00001C98              L2383:                           ; case label 
      wpr_attrac  1436                    case 450:
      wpr_attrac  1437                            /* turn on view 1 */
      wpr_attrac  1438                            _nViewWords = 0;
      wpr_attrac  1439                            _nCounter = 0;
      wpr_attrac  1440  E                         _bFlashOn = 1;
      wpr_attrac  1441                            break;
    00001C98 A003                   BRA         L2558
    00001C9A 2E72                   MOV.L       R7,@R14
    00001C9C              L2384:                           ; case label 
      wpr_attrac  1442                    case 575:
      wpr_attrac  1443                            /* turn on view 2 */
      wpr_attrac  1444                            _nViewWords = 1;
      wpr_attrac  1445                            _nCounter = 0;
      wpr_attrac  1446  E                         _bFlashOn = 1;
      wpr_attrac  1447                            break;
    00001C9C A001                   BRA         L2558
    00001C9E 2E52                   MOV.L       R5,@R14
    00001CA0              L2385:                           ; case label 
      wpr_attrac  1448                    case 700:
      wpr_attrac  1449                            /* turn on view 3 */
      wpr_attrac  1450                            _nViewWords = 2;
      wpr_attrac  1451                            _nCounter = 0;
      wpr_attrac  1452  E                         _bFlashOn = 1;
      wpr_attrac  1453                            break;
    00001CA0              L2560:                            
    00001CA0 2ED2                   MOV.L       R13,@R14
    00001CA2              L2558:                            
    00001CA2 2472                   MOV.L       R7,@R4
    00001CA4 A024                   BRA         L2485
    00001CA6 2652                   MOV.L       R5,@R6
    00001CA8              L2386:                           ; case label 
      wpr_attrac  1454                    case 825:
      wpr_attrac  1455  E                         _nViewWords = -1;
    00001CA8 E1FF                   MOV         #-1,R1
      wpr_attrac  1456                            break;
    00001CAA A021                   BRA         L2485
    00001CAC 2E12                   MOV.L       R1,@R14
    00001CAE              L2606:                            
    00001CAE 00FA                   .DATA.W     H'00FA
    00001CB0 0177                   .DATA.W     H'0177
    00001CB2 01F4                   .DATA.W     H'01F4
    00001CB4 0271                   .DATA.W     H'0271
    00001CB6 02EE                   .DATA.W     H'02EE
    00001CB8 036B                   .DATA.W     H'036B
    00001CBA 00C8                   .DATA.W     H'00C8
    00001CBC 0145                   .DATA.W     H'0145
    00001CBE 01C2                   .DATA.W     H'01C2
    00001CC0 023F                   .DATA.W     H'023F
    00001CC2 02BC                   .DATA.W     H'02BC
    00001CC4 0339                   .DATA.W     H'0339
    00001CC6 00000002               .RES.W      1
    00001CC8 <00000000>             .DATA.L     L2052
    00001CCC              L2387:                           ; default label 
      wpr_attrac  1457                    default:
      wpr_attrac  1458                            ++_nCounter;
    00001CCC 6042                   MOV.L       @R4,R0
    00001CCE 7001                   ADD         #1,R0
    00001CD0 2402                   MOV.L       R0,@R4
      wpr_attrac  1459                            if( (_nCounter & 0x3) == 0x3 )
                         + {
    00001CD2 C903                   AND         #3,R0
    00001CD4 8803                   CMP/EQ      #3,R0
    00001CD6 8B0B                   BF          L2485
      wpr_attrac  1460                                    _bFlashOn = !_bFlashOn
                         +;
    00001CD8 6062                   MOV.L       @R6,R0
    00001CDA 2008                   TST         R0,R0
    00001CDC 0029                   MOVT        R0
      wpr_attrac  1461                            }
      wpr_attrac  1462                            break;
      wpr_attrac  1463                    }
      wpr_attrac  1464                    break;
    00001CDE A007                   BRA         L2485
    00001CE0 2602                   MOV.L       R0,@R6
    00001CE2              L2388:                           ; default label 
      wpr_attrac  1465            default:
      wpr_attrac  1466  E                 if( (!(0)) ) gerr_Assert( 0, "wpr_attr
                         +act.c", 1466 );
    00001CE2 D145                   MOV.L       L2607+6,R1 ; _gerr_Assert
    00001CE4 E400                   MOV         #0,R4
    00001CE6 6DF6                   MOV.L       @R15+,R13
    00001CE8 9683                   MOV.W       L2607,R6   ; H'05BA
    00001CEA D542                   MOV.L       L2607+2,R5 ; L2071
    00001CEC 412B                   JMP         @R1
    00001CEE 6EF6                   MOV.L      @R15+,R14
    00001CF0              L2485:                            
      wpr_attrac  1467                    break;
      wpr_attrac  1468            }
      wpr_attrac  1469    }
    00001CF0 6DF6                   MOV.L       @R15+,R13
    00001CF2 000B                   RTS
    00001CF4 6EF6                   MOV.L       @R15+,R14
      wpr_attrac  1470    
      wpr_attrac  1471    static void _OverLayDraw( void ) {
    00001CF6              L2064:                           ; function: _OverLayD
                        +                                  raw
                                                           ; frame size=48
    00001CF6 2FE6                   MOV.L       R14,@-R15
    00001CF8 2FD6                   MOV.L       R13,@-R15
    00001CFA 2FC6                   MOV.L       R12,@-R15
    00001CFC 2FB6                   MOV.L       R11,@-R15
    00001CFE 2FA6                   MOV.L       R10,@-R15
    00001D00 2F96                   MOV.L       R9,@-R15
    00001D02 FFFB                   FMOV.S      FR15,@-R15
    00001D04 FFEB                   FMOV.S      FR14,@-R15
    00001D06 FFDB                   FMOV.S      FR13,@-R15
    00001D08 FFCB                   FMOV.S      FR12,@-R15
      wpr_attrac  1472            u32 nPriorState;
      wpr_attrac  1473            int i;
      wpr_attrac  1474    
      wpr_attrac  1475            if( !_bOverLayOk ) {
    00001D0A D23C                   MOV.L       L2607+10,R2; L2180
    00001D0C 4F22                   STS.L       PR,@-R15
    00001D0E 6322                   MOV.L       @R2,R3
    00001D10 2338                   TST         R3,R3
    00001D12 7FFC                   ADD         #-4,R15
    00001D14 8960                   BT          L2495
      wpr_attrac  1476                    return;
      wpr_attrac  1477            }
      wpr_attrac  1478            
      wpr_attrac  1479            /* draw view text if need be */
      wpr_attrac  1480  E         if( _nViewWords != -1 ) {
    00001D16 DC3A                   MOV.L       L2607+14,R12; L2181
    00001D18 60C2                   MOV.L       @R12,R0
    00001D1A 88FF                   CMP/EQ      #-1,R0
    00001D1C 895C                   BT          L2495
      wpr_attrac  1481                    /* setup the ortho draw */
      wpr_attrac  1482                    mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.
                         +0f, 1.0f, 0.0f );
    00001D1E FF9D                   FLDI1       FR15
    00001D20 FD8D                   FLDI0       FR13
    00001D22 DD38                   MOV.L       L2607+18,
                        +                                  R13; _mesh3d_SetOrthoEff
                        +                                  ects
    00001D24 F6FC                   FMOV.S      FR15,FR6
    00001D26 F5FC                   FMOV.S      FR15,FR5
    00001D28 F8DC                   FMOV.S      FR13,FR8
    00001D2A F7FC                   FMOV.S      FR15,FR7
    00001D2C 4D0B                   JSR         @R13
    00001D2E F4FC                   FMOV.S      FR15,FR4
      wpr_attrac  1483            
      wpr_attrac  1484  E                 nPriorState = gutil_ZbufferSetState( 3
                         + );
    00001D30 D235                   MOV.L       L2607+22,
                        +                                  R2; _gutil_ZbufferSetSta
                        +                                  te
    00001D32 420B                   JSR         @R2
    00001D34 E403                   MOV         #3,R4
    00001D36 2F02                   MOV.L       R0,@R15
      wpr_attrac  1485  E                 mesh3d_DrawOrtho( _pViewText, -110.0f,
                         + 121.0f, 32000.0f, 0, 1.0f );
    00001D38 C735                   MOVA        L2607+30,R0
    00001D3A FC08                   FMOV.S      @R0,FR12
    00001D3C C735                   MOVA        L2607+34,R0
    00001D3E F508                   FMOV.S      @R0,FR5
    00001D40 C735                   MOVA        L2607+38,R0
    00001D42 DB32                   MOV.L       L2607+26,R11; _mesh3d_DrawOrtho
    00001D44 E500                   MOV         #0,R5
    00001D46 D335                   MOV.L       L2607+42,R3; L2178
    00001D48 F408                   FMOV.S      @R0,FR4
    00001D4A F7FC                   FMOV.S      FR15,FR7
    00001D4C F6CC                   FMOV.S      FR12,FR6
    00001D4E 4B0B                   JSR         @R11
    00001D50 6432                   MOV.L       @R3,R4
    00001D52 C734                   MOVA        L2607+50,R0
    00001D54 D932                   MOV.L       L2607+46,R9; L2179
    00001D56 FE08                   FMOV.S      @R0,FR14
      wpr_attrac  1486    
      wpr_attrac  1487                    for( i=0; i < 3; i++ ) {
    00001D58 EE00                   MOV         #0,R14
    00001D5A EA03                   MOV         #3,R10
    00001D5C              L2497:                            
      wpr_attrac  1488                            if( i == _nViewWords && _bFlas
                         +hOn ) {
    00001D5C 63C2                   MOV.L       @R12,R3
    00001D5E 3E30                   CMP/EQ      R3,R14
    00001D60 8B09                   BF          L2498
    00001D62 D231                   MOV.L       L2607+54,R2; L2183
    00001D64 6122                   MOV.L       @R2,R1
    00001D66 2118                   TST         R1,R1
    00001D68 8905                   BT          L2498
      wpr_attrac  1489                                    mesh3d_SetOrthoEffects
                         +( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
    00001D6A F6FC                   FMOV.S      FR15,FR6
    00001D6C F5FC                   FMOV.S      FR15,FR5
    00001D6E F8DC                   FMOV.S      FR13,FR8
    00001D70 F7FC                   FMOV.S      FR15,FR7
    00001D72 A005                   BRA         L2561
    00001D74 F4FC                   FMOV.S      FR15,FR4
    00001D76              L2498:                            
      wpr_attrac  1490                           } else {
      wpr_attrac  1491                                    mesh3d_SetOrthoEffects
                         +( 0.25f, 0.25f, 0.25f, 1.0f, 0.0f );
    00001D76 F5EC                   FMOV.S      FR14,FR5
    00001D78 F4EC                   FMOV.S      FR14,FR4
    00001D7A F6EC                   FMOV.S      FR14,FR6
    00001D7C F8DC                   FMOV.S      FR13,FR8
    00001D7E F7FC                   FMOV.S      FR15,FR7
    00001D80              L2561:                            
    00001D80 4D0B                   JSR         @R13
    00001D82 0009                   NOP
      wpr_attrac  1492                            }
      wpr_attrac  1493  E                         mesh3d_DrawOrtho( _paActiveVie
                         +w[i], -200.0f, 30.0f + (i * -43.0f), 32000.0f, 0, 1.0f
                         + );
    00001D84 4E5A                   LDS         R14,FPUL
    00001D86 C729                   MOVA        L2607+58,R0
    00001D88 F208                   FMOV.S      @R0,FR2
    00001D8A C729                   MOVA        L2607+62,R0
    00001D8C F508                   FMOV.S      @R0,FR5
    00001D8E C729                   MOVA        L2607+66,R0
    00001D90 F32D                   FLOAT       FPUL,FR3
    00001D92 F408                   FMOV.S      @R0,FR4
    00001D94 E500                   MOV         #0,R5
    00001D96 F6CC                   FMOV.S      FR12,FR6
    00001D98 F7FC                   FMOV.S      FR15,FR7
    00001D9A F322                   FMUL        FR2,FR3
    00001D9C F531                   FSUB        FR3,FR5
    00001D9E 60E3                   MOV         R14,R0
    00001DA0 0009                   NOP
    00001DA2 4008                   SHLL2       R0
    00001DA4 4B0B                   JSR         @R11
    00001DA6 049E                   MOV.L       @(R0,R9),R4
    00001DA8 7E01                   ADD         #1,R14
    00001DAA 3EA3                   CMP/GE      R10,R14
    00001DAC 8BD6                   BF          L2497
      wpr_attrac  1494                    }
      wpr_attrac  1495                    mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.
                         +0f, 1.0f, 0.0f );
    00001DAE F6FC                   FMOV.S      FR15,FR6
    00001DB0 F5FC                   FMOV.S      FR15,FR5
    00001DB2 F8DC                   FMOV.S      FR13,FR8
    00001DB4 F7FC                   FMOV.S      FR15,FR7
    00001DB6 4D0B                   JSR         @R13
    00001DB8 F4FC                   FMOV.S      FR15,FR4
      wpr_attrac  1496                    gutil_ZbufferSetState( nPriorState );
    00001DBA 64F2                   MOV.L       @R15,R4
    00001DBC 7F04                   ADD         #4,R15
    00001DBE 4F26                   LDS.L       @R15+,PR
    00001DC0 D311                   MOV.L       L2607+22,
                        +                                  R3; _gutil_ZbufferSetSta
                        +                                  te
    00001DC2 FCF9                   FMOV.S      @R15+,FR12
    00001DC4 FDF9                   FMOV.S      @R15+,FR13
    00001DC6 FEF9                   FMOV.S      @R15+,FR14
    00001DC8 FFF9                   FMOV.S      @R15+,FR15
    00001DCA 69F6                   MOV.L       @R15+,R9
    00001DCC 6AF6                   MOV.L       @R15+,R10
    00001DCE 6BF6                   MOV.L       @R15+,R11
    00001DD0 6CF6                   MOV.L       @R15+,R12
    00001DD2 6DF6                   MOV.L       @R15+,R13
    00001DD4 432B                   JMP         @R3
    00001DD6 6EF6                   MOV.L       @R15+,R14
    00001DD8              L2495:                            
      wpr_attrac  1497            }
      wpr_attrac  1498    }
    00001DD8 7F04                   ADD         #4,R15
    00001DDA 4F26                   LDS.L       @R15+,PR
    00001DDC FCF9                   FMOV.S      @R15+,FR12
    00001DDE FDF9                   FMOV.S      @R15+,FR13
    00001DE0 FEF9                   FMOV.S      @R15+,FR14
    00001DE2 FFF9                   FMOV.S      @R15+,FR15
    00001DE4 69F6                   MOV.L       @R15+,R9
    00001DE6 6AF6                   MOV.L       @R15+,R10
    00001DE8 6BF6                   MOV.L       @R15+,R11
    00001DEA 6CF6                   MOV.L       @R15+,R12
    00001DEC 6DF6                   MOV.L       @R15+,R13
    00001DEE 000B                   RTS
    00001DF0 6EF6                   MOV.L       @R15+,R14
    00001DF2              L2607:                            
    00001DF2 05BA                   .DATA.W     H'05BA
    00001DF4 <00000000>             .DATA.L     L2071
    00001DF8 <00000000>             .DATA.L     _gerr_Assert
    00001DFC <00000000>             .DATA.L     L2180
    00001E00 <00000000>             .DATA.L     L2181
    00001E04 <00000000>             .DATA.L     _mesh3d_SetOrthoEffects
    00001E08 <00000000>             .DATA.L     _gutil_ZbufferSetState
    00001E0C <00000000>             .DATA.L     _mesh3d_DrawOrtho
    00001E10 46FA0000               .DATA.L     H'46FA0000
    00001E14 42F20000               .DATA.L     H'42F20000
    00001E18 C2DC0000               .DATA.L     H'C2DC0000
    00001E1C <00000000>             .DATA.L     L2178
    00001E20 <00000000>             .DATA.L     L2179
    00001E24 3E800000               .DATA.L     H'3E800000
    00001E28 <00000000>             .DATA.L     L2183
    00001E2C 422C0000               .DATA.L     H'422C0000
    00001E30 41F00000               .DATA.L     H'41F00000
    00001E34 C3480000               .DATA.L     H'C3480000
      wpr_attrac  1499    
      wpr_attrac  1500    
      wpr_attrac  1501    
C   00000000              L2022:                           ; static: _StageInfo
    00000000 000E0E0000             .DATA.B     H'00,H'0E,H'0E,H'00,H'00,H'FF
             FF           
    00000006 012C                   .DATA.W     H'012C
    00000008 <00000000>             .DATA.L     L2023
    0000000C 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000    
    00000014 000F0F00FF             .DATA.B     H'00,H'0F,H'0F,H'00,H'FF,H'00
             00           
    0000001A 012C                   .DATA.W     H'012C
    0000001C <00000000>             .DATA.L     L2024
    00000020 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000028 001010FF00             .DATA.B     H'00,H'10,H'10,H'FF,H'00,H'00
             00           
    0000002E 012C                   .DATA.W     H'012C
    00000030 <00000000>             .DATA.L     L2025
    00000034 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    0000003C 00111100FF             .DATA.B     H'00,H'11,H'11,H'00,H'FF,H'FF
             FF           
    00000042 012C                   .DATA.W     H'012C
    00000044 <00000000>             .DATA.L     L2026
    00000048 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000050 001212FFFF             .DATA.B     H'00,H'12,H'12,H'FF,H'FF,H'00
             00           
    00000056 012C                   .DATA.W     H'012C
    00000058 <00000000>             .DATA.L     L2027
    0000005C 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000064 001313FF00             .DATA.B     H'00,H'13,H'13,H'FF,H'00,H'FF
             FF           
    0000006A 012C                   .DATA.W     H'012C
    0000006C <00000000>             .DATA.L     L2028
    00000070 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000078 0014140080             .DATA.B     H'00,H'14,H'14,H'00,H'80,H'80
             80           
    0000007E 012C                   .DATA.W     H'012C
    00000080 <00000000>             .DATA.L     L2029
    00000084 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    0000008C 0015158080             .DATA.B     H'00,H'15,H'15,H'80,H'80,H'0000           
    00000092 012C                   .DATA.W     H'012C
    00000094 <00000000>             .DATA.L     L2030
    00000098 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    000000A0 0016168000             .DATA.B     H'00,H'16,H'16,H'80,H'00,H'80
             80           
    000000A6 012C                   .DATA.W     H'012C
    000000A8 <00000000>             .DATA.L     L2031
    000000AC 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    000000B4 0017178080             .DATA.B     H'00,H'17,H'17,H'80,H'80,H'80
             80           
    000000BA 012C                   .DATA.W     H'012C
    000000BC <00000000>             .DATA.L     L2032
    000000C0 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    000000C8 001818FF80             .DATA.B     H'00,H'18,H'18,H'FF,H'80,H'40
             40           
    000000CE 012C                   .DATA.W     H'012C
    000000D0 <00000000>             .DATA.L     L2033
    000000D4 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    000000DC 0019198040             .DATA.B     H'00,H'19,H'19,H'80,H'40,H'FF
             FF           
    000000E2 012C                   .DATA.W     H'012C
    000000E4 <00000000>             .DATA.L     L2034
    000000E8 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    000000F0 000E0E40FF             .DATA.B     H'00,H'0E,H'0E,H'40,H'FF,H'80
             80           
    000000F6 012C                   .DATA.W     H'012C
    000000F8 <00000000>             .DATA.L     L2035
    000000FC 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000104 00000E0000             .DATA.B     H'00,H'00,H'0E,H'00,H'00,H'00
             00           
    0000010A 0000                   .DATA.W     H'0000
    0000010C <00000000>             .DATA.L     L2036
    00000110 0000000000             .DATA.W     H'0000,H'0000,H'0000,H'0000
             000000       
    00000118 01010FFF80             .DATA.B     H'01,H'01,H'0F,H'FF,H'80,H'40
             40           
    0000011E 0B22                   .DATA.W     H'0B22
    00000120 <00000000>             .DATA.L     L2037
    00000124 0003000000             .DATA.W     H'0003,H'0000,H'0000,H'0000
             000000       
    0000012C 0202108040             .DATA.B     H'02,H'02,H'10,H'80,H'40,H'20
             20           
    00000132 04E2                   .DATA.W     H'04E2
    00000134 <00000000>             .DATA.L     L2038
    00000138 0000000100             .DATA.W     H'0000,H'0001,H'0000,H'0000
             000000       
    00000140 0103114020             .DATA.B     H'01,H'03,H'11,H'40,H'20,H'10
             10           
    00000146 0AF0                   .DATA.W     H'0AF0
    00000148 <00000000>             .DATA.L     L2039
    0000014C 0004000000             .DATA.W     H'0004,H'0000,H'0001,H'0000
             010000       
    00000154 02041280FF             .DATA.B     H'02,H'04,H'12,H'80,H'FF,H'00
             00           
    0000015A 04E2                   .DATA.W     H'04E2
    0000015C <00000000>             .DATA.L     L2038
    00000160 0002000300             .DATA.W     H'0002,H'0003,H'0000,H'0000
             000000       
    00000168 01051380FF             .DATA.B     H'01,H'05,H'13,H'80,H'FF,H'FF
             FF           
    0000016E 0B86                   .DATA.W     H'0B86
    00000170 <00000000>             .DATA.L     L2040
    00000174 0001000000             .DATA.W     H'0001,H'0000,H'0002,H'0000
             020000       
    0000017C 0206148000             .DATA.B     H'02,H'06,H'14,H'80,H'00,H'FF
             FF           
    00000182 04E2                   .DATA.W     H'04E2
    00000184 <00000000>             .DATA.L     L2038
    00000188 0004000500             .DATA.W     H'0004,H'0005,H'0000,H'0000000000       
    00000190 010715FF00             .DATA.B     H'01,H'07,H'15,H'FF,H'00,H'FF
             FF           
    00000196 0B22                   .DATA.W     H'0B22
    00000198 <00000000>             .DATA.L     L2037
    0000019C 0003000000             .DATA.W     H'0003,H'0000,H'0000,H'0000
             000000       
    000001A4 020816FF00             .DATA.B     H'02,H'08,H'16,H'FF,H'00,H'00
             00           
    000001AA 04E2                   .DATA.W     H'04E2
    000001AC <00000000>             .DATA.L     L2038
    000001B0 0006000700             .DATA.W     H'0006,H'0007,H'0000,H'0000
             000000       
    000001B8 0109178080             .DATA.B     H'01,H'09,H'17,H'80,H'80,H'00
             00           
    000001BE 0B22                   .DATA.W     H'0B22
    000001C0 <00000000>             .DATA.L     L2039
    000001C4 0004000000             .DATA.W     H'0004,H'0000,H'0001,H'0000
             010000       
    000001CC 020A180000             .DATA.B     H'02,H'0A,H'18,H'00,H'00,H'FF
             FF           
    000001D2 04E2                   .DATA.W     H'04E2
    000001D4 <00000000>             .DATA.L     L2038
    000001D8 0008000200             .DATA.W     H'0008,H'0002,H'0000,H'0000
             000000       
    000001E0 010B198000             .DATA.B     H'01,H'0B,H'19,H'80,H'00,H'80
             80           
    000001E6 0AF0                   .DATA.W     H'0AF0
    000001E8 <00000000>             .DATA.L     L2040
    000001EC 0001000000             .DATA.W     H'0001,H'0000,H'0002,H'0000
             020000       
    000001F4 020C0E0080             .DATA.B     H'02,H'0C,H'0E,H'00,H'80,H'80
             80           
    000001FA 04E2                   .DATA.W     H'04E2
    000001FC <00000000>             .DATA.L     L2038
    00000200 0005000300             .DATA.W     H'0005,H'0003,H'0000,H'0000
             000000       
    00000208              L2071:
    00000208 7770725F61             .SDATA      "wpr_attract.c"
             7474726163   
             742E63       
    00000215 00                     .DATA.B     H'00
    00000216 00000002               .RES.W      1
    00000218              L2110:
    00000218 4A6F696E20             .SDATA      "Join Network Game"
             4E6574776F   
             726B204761   
             6D65         
    00000229 0A00                   .DATA.B     H'0A,H'00
    0000022B 00000001               .RES.B      1
    0000022C              L2112:
    0000022C 4154545241             .SDATA      "ATTRACT MODE"
             4354204D4F   
             4445         
    00000238 0A00                   .DATA.B     H'0A,H'00
    0000023A 00000002               .RES.W      1
    0000023C              L2113:
    0000023C 5374616765             .SDATA      "Stage number %d"
             206E756D62   
             6572202564   
    0000024B 0A00                   .DATA.B     H'0A,H'00
    0000024D 00000001               .RES.B      1
    0000024E 00000002               .RES.W      1
    00000250              L2115:
    00000250 54696D6520             .SDATA      "Time (secs) %f"
             2873656373   
             29202566     
    0000025E 0A00                   .DATA.B     H'0A,H'00
    00000260              L2117:
    00000260 5374617469             .SDATA      "Static screen here."
             6320736372   
             65656E2068   
             6572652E     
    00000273 0A00                   .DATA.B     H'0A,H'00
    00000275 00000001               .RES.B      1
    00000276 00000002               .RES.W      1
    00000278              L2118:
    00000278 5761697469             .SDATA      "Waiting to sync up."
             6E6720746F   
             2073796E63   
             2075702E     
    0000028B 0A00                   .DATA.B     H'0A,H'00
    0000028D 00000001               .RES.B      1
    0000028E 00000002               .RES.W      1
    00000290              L2023:
    00000290 4257574C4F             .SDATA     
             474F415431   
             30           
    0000029B 00                     .DATA.B     H'00
    0000029C              L2024:
    0000029C 4257574859             .SDATA      "BWWHYDRAT10"
             4452415431   
             30           
    000002A7 00                     .DATA.B     H'00
    000002A8              L2025:
    000002A8 4257573344             .SDATA      "BWW3DFXAT10"
             4658415431   
             30           
    000002B3 00                     .DATA.B     H'00
    000002B4              L2026:
    000002B4 4257574854             .SDATA      "BWWHTRAAT10"
             5241415431   
             30           
    000002BF 00                     .DATA.B     H'00
    000002C0              L2027:
    000002C0 4257574241             .SDATA      "BWWBANSAT10"
             4E53415431   
             30           
    000002CB 00                     .DATA.B     H'00
    000002CC              L2028:
    000002CC 4257574355             .SDATA      "BWWCUTTAT10"
             5454415431   
             30           
    000002D7 00                     .DATA.B     H'00
    000002D8              L2029:
    000002D8 4257574441             .SDATA      "BWWDAMNAT10"
             4D4E415431   
             30           
    000002E3 00                     .DATA.B     H'00
    000002E4              L2030:
    000002E4 4257574D49             .SDATA      "BWWMISSAT10"
             5353415431   
             30           
    000002EF 00                     .DATA.B     H'00
    000002F0              L2031:
    000002F0 4257575241             .SDATA      "BWWRADHAT10"
             4448415431   
             30           
    000002FB 00                     .DATA.B     H'00
    000002FC              L2032:
    000002FC 4257575241             .SDATA      "BWWRAZRAT10"
             5A52415431   
             30           
    00000307 00                     .DATA.B     H'00
    00000308              L2033:
    00000308 4257575448            .SDATA      "BWWTHREAT10"
             5245415431   
             30           
    00000313 00                     .DATA.B     H'00
    00000314              L2034:
    00000314 4257575449             .SDATA      "BWWTIDAAT10"
             4441415431   
             30           
    0000031F 00                     .DATA.B     H'00
    00000320              L2035:
    00000320 4257574449             .SDATA      "BWWDIREAT10"
             5245415431   
             30           
    0000032B 00                     .DATA.B     H'00
    0000032C              L2036:
    0000032C 4757574A4F             .SDATA      "GWWJOINATH0"
             494E415448   
             30           
    00000337 00                     .DATA.B     H'00
    00000338              L2037:
    00000338 4832575057             .SDATA      "H2WPWELTRH0"
             454C545248   
             30           
    00000343 00                     .DATA.B     H'00
    00000344              L2038:
    00000344 4857544849             .SDATA      "HWTHISCTRH0"
             5343545248   
             30           
    0000034F 00                     .DATA.B     H'00
    00000350              L2039:
    00000350 4831574152             .SDATA      "H1WARCTTRH0"
             4354545248   
             30           
    0000035B 00                     .DATA.B     H'00
    0000035C              L2040:
    0000035C 483357414D             .SDATA      "H3WAMAZTRH0"
             415A545248   
             30           
    00000367 00                     .DATA.B     H'00
    00000368              L2185:
    00000368 4757574449             .SDATA      "GWWDIRETXH0"
             5245545848   
             30           
    00000373 00                     .DATA.B     H'00
    00000374              L2186:
    00000374 4757575049             .SDATA      "GWWPILOONH0"
             4C4F4F4E48   
             30           
    0000037F 00                     .DATA.B     H'00
    00000380              L2187:
    00000380 4757574C4F             .SDATA      "GWWLOW_ONH0"
             575F4F4E48   
             30           
    0000038B 00                     .DATA.B     H'00
    0000038C              L2188:
    0000038C 4757574849             .SDATA      "GWWHIGHONH0"
             47484F4E48   
             30           
    00000397 00                     .DATA.B     H'00
D   00000000              L2050:                           ; static: _bReleaseWo
                        +                                  rldObs
    00000000 00000000               .DATA.L     H'00000000
    00000004              L2184:                           ; static: _aLoadTable
    00000004 <00000000>             .DATA.L     L2178,L2185,L2179,L2186,
             <00000000> +                       H'00000004+L2179,L2187,
             <00000000> +                       H'00000008+L2179,L2188
             <00000000>   
             <00000004>   
             <00000000>   
             <00000008>   
             <00000000>   
    00000024 0000000000             .DATA.L     H'00000000,H'00000000
             000000       
B   00000000              L2041:                           ; static: _StageNum
    00000000 00000004               .RES.L      1
    00000004              L2042:                           ; static: _nR
    00000004 00000004               .RES.L      1
    00000008              L2043:                           ; static: _nG
    00000008 00000004               .RES.L      1
    0000000C              L2044:                           ; static: _nB
    0000000C 00000004               .RES.L      1
    00000010              L2045:                           ; static: _bActive
    00000010 00000004               .RES.L      1
    00000014              L2046:                           ; static: _bLoadOk
    00000014 00000004               .RES.L      1
    00000018              L2047:                           ; static: _pJoinNetGa
                        +                                  me
    00000018 00000004               .RES.L      1
    0000001C              L2048:                           ; static: _pCurStatic
                        +                                  Screen
    0000001C 00000004               .RES.L      1
    00000020              L2049:                           ; static: CurWorld
    00000020 00000004               .RES.L      1
    00000024              L2051:                           ; static: _HumanContr
                        +                                  ols
    00000024 0000001C               .RES.L      7
    00000040              L2052:                           ; static: _nFrameCoun
                        +                                  t
    00000040 00000004               .RES.L      1
    00000044              L2138:                           ; static: _CamPos
    00000044 0000000C               .RES.L      3
    00000050              L2139:                           ; static: _CamLook
    00000050 0000000C               .RES.L      3
    0000005C              L2140:                           ; static: _BSCamPos
    0000005C 0000000C               .RES.L      3
    00000068              L2141:                           ; static: _Camera
    00000068 000000A0               .RES.L      40
    00000108              L2142:                           ; static: _nCurrentCa
                        +                                  mPlayer
    00000108 00000004               .RES.L      1
    0000010C              L2143:                           ; static: _nCurrentCa
                        +                                  mType
    0000010C 00000004               .RES.L      1
    00000110              L2144:                           ; static: _nCamHeadin
                        +                                  g
    00000110 00000004               .RES.L      1
    00000114              L2145:                           ; static: _n2ndCamPla
                        +                                  yer
    00000114 00000004               .RES.L      1
    00000118              L2178:                           ; static: _pViewText
    00000118 00000004               .RES.L      1
    0000011C              L2179:                           ; static: _paActiveVi
                        +                                  ew
    0000011C 0000000C               .RES.L      3
    00000128              L2180:                           ; static: _bOverLayOk
    00000128 00000004               .RES.L      1
    0000012C              L2181:                           ; static: _nViewWords
    0000012C 00000004               .RES.L      1
    00000130              L2182:                           ; static: _nCounter
    00000130 00000004               .RES.L      1
    00000134              L2183:                           ; static: _bFlashOn
    00000134 00000004               .RES.L      1
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:23:10  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:     1501



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               00001E38 Byte(s)
CONSTANT SECTION (C):                               00000398 Byte(s)
DATA     SECTION (D):                               0000002C Byte(s)
BSS      SECTION (B):                               00000138 Byte(s)

 TOTAL PROGRAM SIZE: 00002334 Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:          112
NUMBER OF EXTERNAL DEFINITION SYMBOLS:          12
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:           404
*** COMMAND PARAMETER ***


  wpr_attract.c -ob=.\obj\wpr_attract.obj -cpu=sh4 -division=cpu -endian=little 
-fpu=single -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -d
ebug -listfile=.\obj\wpr_attract.lst 

xfm.h

Found at 1xAA36C10:

maximum tra
9�$���                         +nsform stack depth ([0] is always current camera) */
9�%���           xfm.h    37    
9�&���           xfm.h    38    #define CAMMODE_LOOK    0       /* camera look mode */
9�'���           xfm.h    39    #define CAMMODE_ROT             1       /* camera rota
9�'���                         +tion mode */
9�(���           xfm.h    40    
9�)���           xfm.h    41    #define XFM_TYPE_GEN    0       /* general transformat
9�)���                         +ion (xlat/rot/scale or combos) */
9�*���           xfm.h    42    #define XFM_TYPE_T              1       /* translation
9�*���                         + (no scale) */
9�+���           xfm.h    43    #define XFM_TYPE_R              2       /* rotation or
9�+���                         + rotation/scale */
9�,���           xfm.h    44    #define XFM_TYPE_S              3       /* scale only 
9�,���                         +*/
9�-���           xfm.h    45    
9�.���           xfm.h    46    
9�/���           xfm.h    47    typedef struct {                /* Composite Matrix De
9�/���                         +finition: */
9�0���           xfm.h    48            float mf[4][3];         /*  forward transforma
9�0���                         +tion: [col][row] */
9�1���           xfm.h    49            float mr[4][3];         /*  reverse transforma
9�1���                         +tion: [col][row] */
9�2���           xfm.h    50            float sf, sr;           /*  forward and revers
9�2���                         +e scales */
9�3���           xfm.h    51            int type;                       /*  type code 
9�3���                         +(see XFM_TYPE_* for info) */
9�4���           xfm.h    52    } Xfm_t;
9�5���           xfm.h    53    
9�6���           xfm.h    54    typedef struct {
9�7���           xfm.h    55            Xfm_t xfm;      /* camera transformation */
9�8���           xfm.h    56            Vec3_t pos;     /* current camera position */
9�9���           xfm.h    57            Vec3_t look;/* valid for CAMMODE_LOOK mode onl
9�9���                         +y: point camera is looking at */
9�:���           xfm.h    58            Vec3_t up;      /* valid for CAMMODE_LOOK mode
9�:���                         + only: points up (used for roll). Must be unit! */
9�;���           xfm.h    59            int rot[3];     /* valid for CAMMODE_ROT mode 
9�;���                         +only: yaw/pitch/roll (ry/rx/rz) of camera */
9�<���           xfm.h    60            int mode;       /* current camera mode (CAMMOD
9�<���                         +E_LOOK or CAMMODE_ROT) */
9�=���           xfm.h    61    } Cam_t;
9�>���           xfm.h    62    
9�?���           xfm.h    63    
9�@���           xfm.h    64    
9�A���           xfm.h    65    #if defined(__cplusplus)
9�B���           xfm.h    66 X  extern "C" {
9�C���           xfm.h    67    #endif
9�D���           xfm.h    68    
9�E���           xfm.h    69  E extern Xfm_t Xfm_aStack[ 32  ]; /* transformation stac
9�E���                         +k */
9�F���           xfm.h    70    extern Xfm_t *Xfm_pStackTop;    /* points to the xfm o
9�F���                         +n the top of the stack */
9�G���           xfm.h    71    extern int Xfm_nStackElements;  /* number of xfms curr
9�G���                         +ently on the stack */
9�H���           xfm.h    72    extern Cam_t *Xfm_pStackCam;    /* points to the camer
9�H���                         +a last used to initialize stack */
9�I���           xfm.h    73    extern u32 Xfm_nCameraKey;              /* increments 
9�I���                         +each time the stack is initialized */
9�J���           xfm.h    74    extern u32 Xfm_nStackKey;               /* increments 
9�J���                         +each time the stack top changes */
9�K���           xfm.h    75    extern float Xfm_mIdentity[4][3];
9�L���           xfm.h    76    
9�M���           xfm.h    77  E extern int xfm_ModuleInit( void );
9�N���           xfm.h    78    extern void xfm_Reset( void );
9�O���           xfm.h    79    extern Xfm_t *xfm_Zero( Xfm_t *xr );
9�)

waterfall.h

Found at 1xABA4378:


E�����      waterfall.    27    
E�����      waterfall.    28    
E�����      waterfall.    29    #define WATERFALL_CALIBRATION_TOOL_ENABLED      0
E�����      waterfall.    30    
E�����      waterfall.    31    #define WATERFALL_TEXTURE_COUNT         4
E� ���      waterfall.    32    #define WATERFALL_TEXINDEX_MAIN         0
E�!���      waterfall.    33    #define WATERFALL_TEXINDEX_LEFT         1
E�"���      waterfall.    34    #define WATERFALL_TEXINDEX_RIGHT        2
E�#���      waterfall.    35    #define WATERFALL_TEXINDEX_MIST         3
E�$���      waterfall.    36    
E�%���      waterfall.    37    typedef u32 WaterfallHandle_t;
E�&���      waterfall.    38    
E�'���      waterfall.    39    typedef enum {
E�(���      waterfall.    40            WATERFALL_FLAG_DONT_DRAW        = 0x00000001, 
E�(���                         +  /* Don't draw this waterfall */
E�)���      waterfall.    41            WATERFALL_FLAG_NO_MIST          = 0x00000002, 
E�)���                         +  /* Don't draw mist with this waterfall */
E�*���      waterfall.    42            WATERFALL_FLAG_FLAIR_EDGES      = 0x00000004, 
E�*���                         +  /* Flair the edges outward */
E�+���      waterfall.    43            WATERFALL_FLAG_NO_SOUND         = 0x00000008, 
E�+���                         +  /* No sound for this waterfall */
E�,���      waterfall.    44            WATERFALL_FLAG_SELECTED         = 0x00000010, 
E�,���                         +  /* This waterfall is selected (used for tools) */
E�-���      waterfall.    45    
E�.���      waterfall.    46            WATERFALL_FLAG_NONE                     = 0
E�/���      waterfall.    47    } WaterfallFlags_t;
E�0���      waterfall.    48    
E�1���      waterfall.    49    
E�2���      waterfall.    50    #if defined(__cplusplus)
E�3���      waterfall.    51 X  extern "C" {
E�4���      waterfall.    52    #endif
E�5���      waterfall.    53    
E�6���      waterfall.    54  E #if 0
E�7���      waterfall.    55 X  extern float _WHITESAT_PERCENT_TO_END;
E�8���      waterfall.    56 X  extern float _WHITESAT_MULTIPLIER;
E�9���      waterfall.    57 X  
E�:���      waterfall.    58 X  extern float _TEX_T_SCROLL_DELTA1;
E�;���      waterfall.    59 X  extern float _TEX_T_SCROLL_DELTA2;
E�<���      waterfall.    60 X  extern float _TEX_T_TILE_DELTA1;
E�=���      waterfall.    61 X  extern float _TEX_T_TILE_DELTA2;
E�>���      waterfall.    62 X  extern float _TEX_S_RIGHTEDGE_DELTA;
E�?���      waterfall.    63    #endif
E�@���      waterfall.    64    
E�A���      waterfall.    65    
E�B���      waterfall.    66  E extern int waterfall_ModuleInit( void );
E�C���      waterfall.    67    extern float waterfall_GetWhiteSat( void );
E�D���      waterfall.    68    extern void waterfall_SetWhiteSat( float fWhiteSat );
E�E���      waterfall.    69    extern WaterfallHandle_t waterfall_InitInstance( const
E�E���                         + Vec3_t *pOrigin, float fWidth, float fHeight,
E�F���      waterfall.    70                          

wpr_banker.c

Found at 1xAF2E130:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:23:19  PAGE    1

************ OBJECT LISTING ************

FILE NAME: wpr_banker.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

      wpr_banker     1    /*****************************************************
                         +******************************** */
      wpr_banker     2    /* wpr_banker.h - "handles coin related issues, also d
                         +raws "insert coins" or  */
      wpr_banker     3    /*                                "free play" whenever
                         + requested, if required are is loaded                 
                         +    */
      wpr_banker     4    /* */
      wpr_banker     5    /* Author: Michael Starich    */
      wpr_banker     6    /*****************************************************
                         +******************************** */
      wpr_banker     7    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
      wpr_banker     8    /* Copyright (c) 1998 */
      wpr_banker     9    /* */
      wpr_banker    10    /* The contents of this file may not be disclosed to t
                         +hird */
      wpr_banker    11    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
      wpr_banker    12    /* without the prior written permission of Midway Home
                         + Entertainment. */
      wpr_banker    13    /*****************************************************
                         +******************************** */
      wpr_banker    14    /* Modification History: */
      wpr_banker    15    /* */
      wpr_banker    16    /* Date     Who         Description */
      wpr_banker    17    /* -------- ----------  ------------------------------
                         +-------------------------------- */
      wpr_banker    18    /* 04/10/98 Starich     Created. */
      wpr_banker    19    /*****************************************************
                         +******************************** */
      wpr_banker    20    #include "gendefs.h"
      wpr_banker    21    #include "wpr_banker.h"
      wpr_banker    22    #include "text.h"
      wpr_banker    23    #include "controls.h"
      wpr_banker    24    #include "gameloop.h"
      wpr_banker    25    #include "operator.h"
      wpr_banker    26    
      wpr_banker    27    /*==================== */
      wpr_banker    28    /* private definitions */
      wpr_banker    29    
      wpr_banker    30    #define _FLASH_TIME             0.50f
      wpr_banker    31    
      wpr_banker    32    /*================= */
      wpr_banker    33    /* public variables */
      wpr_banker    34    
      wpr_banker    35    /*================== */
      wpr_banker    36    /* private variables */
      wpr_banker    37    
      wpr_banker    38    /*=================== */
      wpr_banker    39    /* private prototypes */
      wpr_banker    40    
      wpr_banker    41  E static int _bDraw;
      wpr_banker    42    static f32 _fTimer;
      wpr_banker    43    static u32 _nBalance;
      wpr_banker    44    static u32 _nCost;
      wpr_banker    45    
      wpr_banker    46    /*================= */
      wpr_banker    47    /* public functions */
      wpr_banker    48    
      wpr_banker    49    /* resets all global vars */
      wpr_banker    50  E int wpr_banker_ModuleInit( void ) {
P   00000000              _wpr_banker_ModuleInit:          ; function: wpr_banke
                        +                                  r_ModuleInit
                                                           ; frame size=0
      wpr_banker    51  E         _bDraw = 0;
    00000000 D343                   MOV.L       L1321+2,R3 ; L1277
    00000002 E400                   MOV         #0,R4
    00000004 2342                   MOV.L       R4,@R3
      wpr_banker    52            _fTimer = 0.0f;
    00000006 D243                   MOV.L       L1321+6,R2 ; L1278
    00000008 F38D                   FLDI0       FR3
    0000000A F23A                   FMOV.S      FR3,@R2
      wpr_banker    53            _nBalance = 0;
    0000000C D142                   MOV.L       L1321+10,R1; L1279
    0000000E 2142                   MOV.L       R4,@R1
      wpr_banker    54            _nCost = OperatorSettings.nRequiredCoins;
    00000010 D042                   MOV.L       L1321+14,
                        +                                  R0; H'00000010+_Operator
                        +                                  Settings
    00000012 D243                   MOV.L       L1321+18,R2; L1280
    00000014 6302                   MOV.L       @R0,R3
    00000016 2232                   MOV.L       R3,@R2
      wpr_banker    55    
      wpr_banker    56  E         return 1;
      wpr_banker    57    }
    00000018 000B                   RTS
    0000001A E001                   MOV         #1,R0
      wpr_banker    58    
      wpr_banker    59    /* returns TRUE if the user has enough balance */
      wpr_banker    60    /* to cover the cost of a race */
      wpr_banker    61    /* returns FALSE otherwise */
      wpr_banker    62  E int wpr_banker_BuyAGame( void ) {
    0000001C              _wpr_banker_BuyAGame:            ; function: wpr_banke
                        +                                  r_BuyAGame
                                                           ; frame size=8
      wpr_banker    63            u32 nTemp;
      wpr_banker    64    
      wpr_banker    65            /* move our timer forward */
      wpr_banker    66            _fTimer += Gameloop_fTargetFrameTime;
      wpr_banker    67  E         if( _fTimer >= 0.50f ) {
    0000001C C742                   MOVA        L1321+26,R0
    0000001E 2FE6                   MOV.L       R14,@-R15
    00000020 D43C                   MOV.L       L1321+6,R4 ; L1278
    00000022 D340                   MOV.L       L1321+22,
                        +                                  R3; _Gameloop_fTargetFra
                        +                                  meTime
    00000024 F248                   FMOV.S      @R4,FR2
    00000026 F338                   FMOV.S      @R3,FR3
    00000028 4F22                   STS.L       PR,@-R15
    0000002A F230                   FADD        FR3,FR2
    0000002C F42A                   FMOV.S      FR2,@R4
    0000002E F408                   FMOV.S      @R0,FR4
    00000030 F32C                   FMOV.S      FR2,FR3
    00000032 F435                   FCMP/GT     FR3,FR4
    00000034 890D                   BT          L1308
      wpr_banker    68                    /* since we timed out switch our draw 
                         +state and reset our timer */
      wpr_banker    69                    _bDraw = !_bDraw;
    00000036 D536                   MOV.L       L1321+2,R5 ; L1277
    00000038 6052                   MOV.L       @R5,R0
    0000003A 2008                   TST         R0,R0
    0000003C 0029                   MOVT        R0
    0000003E 2502                   MOV.L       R0,@R5
      wpr_banker    70  E                 while( _fTimer >= 0.50f ) {
    00000040 F348                   FMOV.S      @R4,FR3
    00000042 F435                   FCMP/GT     FR3,FR4
    00000044 8905                   BT          L1308
    00000046              L1311:                            
      wpr_banker    71  E                         _fTimer -= 0.50f;
    00000046 F348                   FMOV.S      @R4,FR3
    00000048 F341                   FSUB        FR4,FR3
    0000004A F23C                   FMOV.S      FR3,FR2
    0000004C F425                   FCMP/GT     FR2,FR4
    0000004E 8FFA                   BF/S        L1311
    00000050 F43A                   FMOV.S      FR3,@R4
    00000052              L1308:                            
      wpr_banker    72                    }
      wpr_banker    73            }
      wpr_banker    74            /* check the amount coins deposited */
      wpr_banker    75            _nBalance += controls_CheckNumCoins();
    00000052 D236                   MOV.L       L1321+30,
                        +                                  R2; _controls_CheckNumCo
                        +                                  ins
    00000054 DE30                   MOV.L       L1321+10,R14; L1279
    00000056 420B                   JSR         @R2
    00000058 0009                   NOP
    0000005A 63E2                   MOV.L       @R14,R3
    0000005C 330C                   ADD         R0,R3
    0000005E 2E32                   MOV.L       R3,@R14
      wpr_banker    76  E         nTemp = controls_Click( 0x2 );
    00000060 D233                   MOV.L       L1321+34,R2; _controls_Click
    00000062 420B                   JSR         @R2
    00000064 E402                   MOV         #2,R4
    00000066 D32E                   MOV.L       L1321+18,R3; L1280
    00000068 62E2                   MOV.L       @R14,R2
    0000006A 6432                   MOV.L       @R3,R4
    0000006C 3242                   CMP/HS      R4,R2
    0000006E 8F0A                   BF/S        L1312
    00000070 6503                   MOV         R0,R5
      wpr_banker    77            if( _nBalance >= _nCost ) {
      wpr_banker    78                    /* now we should check for the throttl
                         +e button being pressed */
      wpr_banker    79  E                 if( nTemp & 0x2 ) {
    00000072 E002                   MOV         #2,R0
    00000074 2508                   TST         R0,R5
    00000076 8906                   BT          L1312
      wpr_banker    80                            _nBalance -= _nCost;
    00000078 61E2                   MOV.L       @R14,R1
      wpr_banker    81  E                         return 1;
    0000007A E001                   MOV         #1,R0
    0000007C 4F26                   LDS.L       @R15+,PR
    0000007E 3148                   SUB         R4,R1
    00000080 2E12                   MOV.L       R1,@R14
    00000082 000B                   RTS
    00000084 6EF6                   MOV.L       @R15+,R14
    00000086              L1312:                            
      wpr_banker    82                    }
      wpr_banker    83            }
      wpr_banker    84    
      wpr_banker    85  E         return 0;
    00000086 E000                   MOV         #0,R0
      wpr_banker    86    }
    00000088              L1314:                            
    00000088 4F26                   LDS.L       @R15+,PR
    0000008A 000B                   RTS
    0000008C 6EF6                   MOV.L       @R15+,R14
      wpr_banker    87    
      wpr_banker    88    void wpr_banker_ResetFlashTime( void ) {
    0000008E              _wpr_banker_ResetFlashTime:      ; function: wpr_banke
                        +                                  r_ResetFlashTime
                                                           ; frame size=0
      wpr_banker    89  E         _bDraw = 0;
    0000008E D220                   MOV.L       L1321+2,R2 ; L1277
    00000090 E300                   MOV         #0,R3
    00000092 2232                   MOV.L       R3,@R2
      wpr_banker    90            _fTimer = 0.0f;
    00000094 D11F                   MOV.L       L1321+6,R1 ; L1278
    00000096 F38D                   FLDI0       FR3
      wpr_banker    91    }
    00000098 000B                   RTS
    0000009A F13A                   FMOV.S      FR3,@R1
      wpr_banker    92    
      wpr_banker    93    /* draw text related to coins/free play */
      wpr_banker    94    void wpr_banker_Draw( void ) {
    0000009C              _wpr_banker_Draw:                ; function: wpr_banke
                        +                                  r_Draw
                                                           ; frame size=24
    0000009C 2FE6                   MOV.L       R14,@-R15
    0000009E FFFB                   FMOV.S      FR15,@-R15
    000000A0 4F22                   STS.L       PR,@-R15
      wpr_banker    95            /* select our font */
      wpr_banker    96            text_SetFont( TEXT_FONT_SMALL );
    000000A2 D324                   MOV.L       L1321+38,R3; _text_SetFont
    000000A4 430B                   JSR         @R3
    000000A6 E401                   MOV         #1,R4
      wpr_banker    97    
      wpr_banker    98            /* flash the instruction text */
      wpr_banker    99            if( _bDraw ) {
    000000A8 D219                   MOV.L       L1321+2,R2 ; L1277
    000000AA C724                   MOVA        L1321+46,R0
    000000AC DE22                   MOV.L       L1321+42,R14; _text_PrintStr
    000000AE 6322                   MOV.L       @R2,R3
    000000B0 2338                   TST         R3,R3
    000000B2 8D11                   BT/S        L1315
    000000B4 FF08                   FMOV.S      @R0,FR15
      wpr_banker   100                    /* see if we should draw "insert coins
                         +" or "press throttle"    */
      wpr_banker   101                    if( _nBalance < _nCost ) {
    000000B6 D11A                   MOV.L       L1321+18,R1; L1280
    000000B8 D017                   MOV.L       L1321+10,R0; L1279
    000000BA 6312                   MOV.L       @R1,R3
    000000BC 6102                   MOV.L       @R0,R1
    000000BE 3132                   CMP/HS      R3,R1
    000000C0 8904                   BT          L1316
      wpr_banker   102                            text_PrintStr( 185, 375, "Inse
                         +rt Coins\n" );
    000000C2 D41F                   MOV.L       L1321+50,R4; L1292
    000000C4 C71F                   MOVA        L1321+54,R0
    000000C6 F5FC                   FMOV.S      FR15,FR5
    000000C8 A004                   BRA         L1320
    000000CA F408                   FMOV.S      @R0,FR4
    000000CC              L1316:                            
      wpr_banker   103                    } else {
      wpr_banker   104                            text_PrintStr( 175, 375, "Pres
                         +s Throttle\n" );
    000000CC C71F                   MOVA        L1321+62,R0
    000000CE D41E                   MOV.L       L1321+58,R4; L1294
    000000D0 F408                   FMOV.S      @R0,FR4
    000000D2 F5FC                   FMOV.S      FR15,FR5
    000000D4              L1320:                            
    000000D4 4E0B                   JSR         @R14
    000000D6 0009                   NOP
    000000D8              L1315:                            
    000000D8 D311                   MOV.L       L1321+18,R3; L1280
    000000DA E200                   MOV         #0,R2
    000000DC 6532                   MOV.L       @R3,R5
    000000DE 3526                   CMP/HI      R2,R5
    000000E0 8B0C                   BF          L1318
      wpr_banker   105                    }
      wpr_banker   106            }
      wpr_banker   107            /* see if we should draw "free play" or "num c
                         +oins/cost" */
      wpr_banker   108            if( _nCost > 0 ) {
      wpr_banker   109                    text_PrintF( 460, 375, "%d/%d\n", _nBa
                         +lance, _nCost );
    000000E2 2F56                   MOV.L       R5,@-R15
    000000E4 D10C                   MOV.L       L1321+10,R1; L1279
    000000E6 6012                   MOV.L       @R1,R0
    000000E8 2F06                   MOV.L       R0,@-R15
    000000EA C71A                   MOVA        L1321+70,R0
    000000EC D318                   MOV.L       L1321+66,R3; L1296
    000000EE 2F36                   MOV.L       R3,@-R15
    000000F0 D219                   MOV.L       L1321+74,R2; _text_PrintF
    000000F2 F5FC                   FMOV.S      FR15,FR5
    000000F4 420B                   JSR         @R2
    000000F6 F408                   FMOV.S      @R0,FR4
    000000F8 A005                   BRA         L1319
    000000FA 7F0C                   ADD         #12,R15
    000000FC              L1318:                            
      wpr_banker   110            } else {
      wpr_banker   111                    text_PrintStr( 400, 375, "Free Play\n"
                         + );
    000000FC D417                   MOV.L       L1321+78,R4; L1298
    000000FE C718                   MOVA        L1321+82,R0
    00000100 F5FC                   FMOV.S      FR15,FR5
    00000102 4E0B                   JSR         @R14
    00000104 F408                   FMOV.S      @R0,FR4
    00000106              L1319:                            
      wpr_banker   112            }
      wpr_banker   113    }
    00000106 4F26                   LDS.L       @R15+,PR
    00000108 FFF9                   FMOV.S      @R15+,FR15
    0000010A 000B                   RTS
    0000010C 6EF6                   MOV.L       @R15+,R14
    0000010E              L1321:                            
    0000010E 00000002               .RES.W      1
    00000110 <00000000>             .DATA.L     L1277
    00000114 <00000000>             .DATA.L     L1278
    00000118 <00000000>             .DATA.L     L1279
    0000011C <00000010>             .DATA.L     H'00000010+_OperatorSettings
    00000120 <00000000>             .DATA.L     L1280
    00000124 <00000000>             .DATA.L     _Gameloop_fTargetFrameTime
    00000128 3F000000               .DATA.L     H'3F000000
    0000012C <00000000>             .DATA.L     _controls_CheckNumCoins
    00000130 <00000000>             .DATA.L     _controls_Click
    00000134 <00000000>             .DATA.L     _text_SetFont
    00000138 <00000000>             .DATA.L     _text_PrintStr
    0000013C 43BB8000               .DATA.L     H'43BB8000
    00000140 <00000000>             .DATA.L     L1292
    00000144 43390000               .DATA.L     H'43390000
    00000148 <00000000>             .DATA.L     L1294
    0000014C 432F0000               .DATA.L     H'432F0000
    00000150 <00000000>             .DATA.L     L1296
    00000154 43E60000               .DATA.L     H'43E60000
    00000158 <00000000>             .DATA.L     _text_PrintF
    0000015C <00000000>             .DATA.L     L1298
    00000160 43C80000               .DATA.L     H'43C80000
      wpr_banker   114    
      wpr_banker   115    /*================== */
      wpr_banker   116    /* private functions */
C   00000000              L1292:
    00000000 496E736572             .SDATA      "Insert Coins"
             7420436F69   
             6E73         
    0000000C 0A00                   .DATA.B     H'0A,H'00
    0000000E 00000002               .RES.W      1
    00000010              L1294:
    00000010 5072657373             .SDATA      "Press Throttle"
             205468726F   
             74746C65     
    0000001E 0A00                   .DATA.B     H'0A,H'00
    00000020              L1296:
    00000020 25642F2564             .SDATA      "%d/%d"
    00000025 0A00                   .DATA.B     H'0A,H'00
    00000027 00000001               .RES.B      1
    00000028              L1298:
    00000028 4672656520             .SDATA      "Free Play"
             506C6179     
    00000031 0A00                   .DATA.B     H'0A,H'00
B   00000000              L1277:                           ; static: _bDraw
    00000000 00000004               .RES.L      1
    00000004              L1278:                           ; static: _fTimer
    00000004 00000004               .RES.L      1
    00000008              L1279:                           ; static: _nBalance
    00000008 00000004               .RES.L      1
    0000000C              L1280:                           ; static: _nCost
    0000000C 00000004               .RES.L      1
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:23:19  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:      116



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               00000164 Byte(s)
CONSTANT SECTION (C):                               00000033 Byte(s)
DATA     SECTION (D):                               00000000 Byte(s)
BSS      SECTION (B):                               00000010 Byte(s)

 TOTAL PROGRAM SIZE: 000001A7 Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:            7
NUMBER OF EXTERNAL DEFINITION SYMBOLS:           4
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:            29
*** COMMAND PARAMETER ***


  wpr_banker.c -ob=.\obj\wpr_banker.obj -cpu=sh4 -division=cpu -endian=little -f
pu=single -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -deb
ug -listfile=.\obj\wpr_banker.lst

hud_text.c

Found at 1xAF830F0:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:16:49  PAGE    1

************ OBJECT LISTING ************

FILE NAME: hud_text.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

      hud_text.c     1    /*****************************************************
                         +******************************** */
      hud_text.c     2    /* hud_text.c -  */
      hud_text.c     3    /* */
      hud_text.c     4    /* Author: Michael Starich    */
      hud_text.c     5    /*****************************************************
                         +******************************** */
      hud_text.c     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
      hud_text.c     7    /* Copyright (c) 1998 */
      hud_text.c     8    /* */
      hud_text.c     9    /* The contents of this file may not be disclosed to t
                         +hird */
      hud_text.c    10    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
      hud_text.c    11    /* without the prior written permission of Midway Home
                         + Entertainment. */
      hud_text.c    12    /*****************************************************
                         +******************************** */
      hud_text.c    13    /* Modification History: */
      hud_text.c    14    /* */
      hud_text.c    15    /* Date     Who         Description */
      hud_text.c    16    /* -------- ----------  ------------------------------
                         +-------------------------------- */
      hud_text.c    17    /* 07/09/98 Starich     Created. */
      hud_text.c    18    /*****************************************************
                         +******************************** */
      hud_text.c    19    #include "gendefs.h"
      hud_text.c    20    #include "hud_text.h"
      hud_text.c    21    #include "text.h"
      hud_text.c    22    #include "player.h"
      hud_text.c    23    #include "glcount.h"
      hud_text.c    24    #include "viewport.h"
      hud_text.c    25    #include "obsys.h"
      hud_text.c    26    #include "mesh3d.h"
      hud_text.c    27    #include "hud_wrongway.h"
      hud_text.c    28    
      hud_text.c    29    /*==================== */
      hud_text.c    30    /* private definitions */
      hud_text.c    31    
      hud_text.c    32    #define _Z_DEPTH                        1.0f
      hud_text.c    33    #define _MESHES_COLON           10
      hud_text.c    34    #define _MESHES_PERIOD          11
      hud_text.c    35    
      hud_text.c    36    #define _NUM_FRAMES_TIME_EXTENDED       30
      hud_text.c    37    #define _NUM_FRAMES_BOOSTER                     30    
      hud_text.c    38    
      hud_text.c    39    /* checkpt/split time defs */
      hud_text.c    40    #define _CHECKPT_TARGET_X               445.0f
      hud_text.c    41    #define _CHECKPT_STARTING_X             570.0f
      hud_text.c    42    #define _CHECKPT_LINE1_Y                175.0f
      hud_text.c    43    #define _CHECKPT_LINE2_Y                ( -195.0f + 20
                         +0.0f )
      hud_text.c    44    #define _CHECKPT_LINE3_Y                215.0f  
      hud_text.c    45    #define _CHECKPT_LINE4_Y                ( -235.0f + 20
                         +0.0f )  
      hud_text.c    46    #define _CHECKPT_SLIDEIN( x )   ( ( _CHECKPT_TARGET_X 
                         +- (x) ) * 0.30f )
      hud_text.c    47    #define _CHECKPT_SLIDEOUT( x )  ( ( _CHECKPT_STARTING_
                         +X - (x) ) * 0.30f )     
      hud_text.c    48    
      hud_text.c    49    /* push throttle vars */
      hud_text.c    50    #define _INITIAL_PUSH_WAIT      2.0f
      hud_text.c    51    #define _DISPLAY_PUSH_TIME      4.0f
      hud_text.c    52    #define _REG_SAMPLE_TIME        6.0f
      hud_text.c    53    
      hud_text.c    54    /* coordinates for drawing, origin upper left corner *
                         +/
      hud_text.c    55    #define _321GO_Y                        140.0f
      hud_text.c    56    
      hud_text.c    57    #define _RANK1D1_X                      414.0f
      hud_text.c    58    #define _RANK1D2_X                      405.0f
      hud_text.c    59    #define _RANK1_Y                        140.0f
      hud_text.c    60    #define _RANK2_X                        445.0f
      hud_text.c    61    #define _RANK2_Y                        145.0f
      hud_text.c    62    #define _RANK3_X                        478.0f
      hud_text.c    63    #define _RANK3_Y                        143.0f
      hud_text.c    64    
      hud_text.c    65    #define _COUNTDOWN_Y            25.0f
      hud_text.c    66    
      hud_text.c    67    #define _TIME_OUT1_Y            120.0f
      hud_text.c    68    #define _TIME_OUT2_Y            165.0f
      hud_text.c    69    
      hud_text.c    70    #define _WINNER_Y                       100.0f  
      hud_text.c    71    
      hud_text.c    72    #define _ELAPSED_X                      -150.0f
      hud_text.c    73    #define _ELAPSED_Y                      182.0f
      hud_text.c    74    
      hud_text.c    75    #define _TIME_EXTENDED1_Y       120.0f
      hud_text.c    76    #define _TIME_EXTENDED2_Y       165.0f
      hud_text.c    77    
      hud_text.c    78    #define _BOOSTER_Y                      355.0f
      hud_text.c    79    
      hud_text.c    80    #define _FINISH_STATS1_Y        195.0f
      hud_text.c    81    #define _FINISH_STATS2_X        315.0f
      hud_text.c    82    #define _FINISH_STATS2_X2D      330.0f  
      hud_text.c    83    #define _FINISH_STATS2_Y        167.0f
      hud_text.c    84    #define _FINISH_STATS3_Y        265.0f
      hud_text.c    85    #define _FINISH_STATS4_Y        325.0f
      hud_text.c    86    
      hud_text.c    87    #define _FINISH_STATS5_X        -70.0f
      hud_text.c    88    #define _FINISH_STATS5_Y        -95.0f
      hud_text.c    89    #define _FINISH_STATS5_X2       315.0f
      hud_text.c    90    #define _FINISH_STATS5_Y2       297.0f
      hud_text.c    91    
      hud_text.c    92    #define _FINISH_STATS6_X        -40.0f
      hud_text.c    93    #define _FINISH_STATS6_Y        -155.0f
      hud_text.c    94    
      hud_text.c    95    #define _PUSH_THROTTLE1_Y       130.0f
      hud_text.c    96    #define _PUSH_THROTTLE2_Y       175.0f
      hud_text.c    97    #define _PUSH_THROTTLE3_Y       220.0f
      hud_text.c    98                    
      hud_text.c    99    /*================= */
      hud_text.c   100    /* public variables */
      hud_text.c   101    
      hud_text.c   102    /*================== */
      hud_text.c   103    /* private variables */
      hud_text.c   104    
      hud_text.c   105  E static int _bForceOn;
      hud_text.c   106  E static int _bTexturesLoaded;
      hud_text.c   107    static u32 _nDrawFlags;
      hud_text.c   108    static u16 _nTimeExtendedCounter;
      hud_text.c   109    static u16 _nBoosterCounter;
      hud_text.c   110    static Mesh3d_t *_paDigits[12];
      hud_text.c   111    static ObsysLoadDef_t _aLoadTable[] = {
      hud_text.c   112            (void *)&_paDigits[0],  "GHWTIME__H0",  /* NUM
                         +_0, */
      hud_text.c   113            (void *)&_paDigits[1],  "GHWTIME__H1",  /* NUM
                         +_1, */
      hud_text.c   114            (void *)&_paDigits[2],  "GHWTIME__H2",  /* NUM
                         +_2, */
      hud_text.c   115            (void *)&_paDigits[3],  "GHWTIME__H3",  /* NUM
                         +_3, */
      hud_text.c   116            (void *)&_paDigits[4],  "GHWTIME__H4",  /* NUM
                         +_4, */
      hud_text.c   117            (void *)&_paDigits[5],  "GHWTIME__H5",  /* NUM
                         +_5, */
      hud_text.c   118            (void *)&_paDigits[6],  "GHWTIME__H6",  /* NUM
                         +_6, */
      hud_text.c   119            (void *)&_paDigits[7],  "GHWTIME__H7",  /* NUM
                         +_7, */
      hud_text.c   120            (void *)&_paDigits[8],  "GHWTIME__H8",  /* NUM
                         +_8, */
      hud_text.c   121            (void *)&_paDigits[9],  "GHWTIME__H9",  /* NUM
                         +_9, */
      hud_text.c   122            (void *)&_paDigits[10], "GHWCOLN__H0",  /* COL
                         +ON, */
      hud_text.c   123            (void *)&_paDigits[11], "GHWPERD__H0",  /* PER
                         +IOD, */
      hud_text.c   124  E         0,                                      0,
      hud_text.c   125    };
      hud_text.c   126    /* checkpt/split time vars */
      hud_text.c   127    static f32 _fBestX1, _fBestX2, _fYourX1, _fYourX2, _fY
                         +ourTime, _fBestTime;
      hud_text.c   128  E static int _bNewHighScore, _bSlideOn;
      hud_text.c   129    static u32 _nCheckPtCounter;
      hud_text.c   130    /* finish stats vars */
      hud_text.c   131    static f32 _fBestFinishTime;
      hud_text.c   132    static char _pszBestTimeInitials[4];
      hud_text.c   133    /* push throttle vars */
      hud_text.c   134    static f32 _fTimer, _fDisplayTime;
      hud_text.c   135  E static int _bInitialWait, _bDisplay;
      hud_text.c   136    
      hud_text.c   137    /*=================== */
      hud_text.c   138    /* private prototypes */
      hud_text.c   139    
      hud_text.c   140  E static int _Flash2On2Off( void );
      hud_text.c   141  E static int _Flash3On3Off( void );
      hud_text.c   142  E static int _Flash4On4Off( void );
      hud_text.c   143  E static int _Flash8On8Off( void );
      hud_text.c   144    static void _DrawTime( f32 fTime, f32 fX, f32 fY, f32 
                         +fScale );
      hud_text.c   145    
      hud_text.c   146    /*================= */
      hud_text.c   147    /* public functions */
      hud_text.c   148    
      hud_text.c   149  E int hud_text_ModuleInit( void ) {
P   00000000              _hud_text_ModuleInit:            ; function: hud_text_
                        +                                  ModuleInit
                                                           ; frame size=0
      hud_text.c   150  E         return 1;
      hud_text.c   151    }
    00000000 000B                   RTS
    00000002 E001                   MOV         #1,R0
      hud_text.c   152    
      hud_text.c   153    void hud_text_Load( void ) {
    00000004              _hud_text_Load:                  ; function: hud_text_
                        +                                  Load
                                                           ; frame size=8
    00000004 2FE6                   MOV.L       R14,@-R15
    00000006 4F22                   STS.L       PR,@-R15
      hud_text.c   154            text_ResetSystem();
    00000008 D344                   MOV.L       L2246,R3   ; _text_ResetSystem
    0000000A 430B                   JSR         @R3
    0000000C 0009                   NOP
      hud_text.c   155            text_LoadFont( TEXT_FONT_HUD2 );
    0000000E D244                   MOV.L       L2246+4,R2 ; _text_LoadFont
    00000010 420B                   JSR         @R2
    00000012 E404                   MOV         #4,R4
    00000014 D343                   MOV.L       L2246+8,R3 ; L1782
    00000016 EE00                   MOV         #0,R14
    00000018 23E2                   MOV.L       R14,@R3
    0000001A D243                   MOV.L       L2246+12,R2; L1783
    0000001C 22E1                   MOV.W       R14,@R2
    0000001E D143                   MOV.L       L2246+16,R1; L1784
    00000020 21E1                   MOV.W       R14,@R1
    00000022 D343                   MOV.L       L2246+20,R3; L1780
    00000024 23E2                   MOV.L       R14,@R3
      hud_text.c   156    
      hud_text.c   157            hud_text_ResetSystem();
      hud_text.c   158    
      hud_text.c   159  E         if( obsys_LoadGroup( _aLoadTable, 0 ) != -1 ) 
                         +{
    00000026 D443                   MOV.L       L2246+24,R4; L1786
    00000028 D243                   MOV.L       L2246+28,R2; _obsys_LoadGroup
    0000002A 420B                   JSR         @R2
    0000002C 65E3                   MOV         R14,R5
    0000002E 88FF                   CMP/EQ      #-1,R0
    00000030 8902                   BT          L2085
      hud_text.c   160  E                 _bTexturesLoaded = 0;
    00000032 D242                   MOV.L       L2246+32,R2; L1781
    00000034 A003                   BRA         L2086
    00000036 22E2                   MOV.L       R14,@R2
    00000038              L2085:                            
      hud_text.c   161            } else {
      hud_text.c   162  E                 _bTexturesLoaded = 1;
    00000038 D340                   MOV.L       L2246+32,R3; L1781
    0000003A E101                   MOV         #1,R1
    0000003C 2312                   MOV.L       R1,@R3
    0000003E              L2086:                            
      hud_text.c   163            }
      hud_text.c   164    }
    0000003E 4F26                   LDS.L       @R15+,PR
    00000040 000B                   RTS
    00000042 6EF6                   MOV.L       @R15+,R14
      hud_text.c   165    
      hud_text.c   166    void hud_text_Draw( f32 fDx, f32 fDy, f32 fTime ) {
    00000044              _hud_text_Draw:                  ; function: hud_text_
                        +                                  Draw
                                                           ; frame size=88
    00000044 2FE6                   MOV.L       R14,@-R15
    00000046 2FD6                   MOV.L       R13,@-R15
    00000048 2FC6                   MOV.L       R12,@-R15
    0000004A 2FB6                   MOV.L       R11,@-R15
    0000004C 2FA6                   MOV.L       R10,@-R15
    0000004E 2F96                   MOV.L       R9,@-R15
    00000050 2F86                   MOV.L       R8,@-R15
    00000052 FFFB                   FMOV.S      FR15,@-R15
    00000054 FFEB                   FMOV.S      FR14,@-R15
    00000056 FFDB                   FMOV.S      FR13,@-R15
    00000058 FFCB                   FMOV.S      FR12,@-R15
      hud_text.c   167            u32 nTemp;
      hud_text.c   168            f32 fX, fY, fTemp;
      hud_text.c   169    
      hud_text.c   170            if( _nDrawFlags == HUD_TEXT_FLAGS_DRAW_NOTHING
                         + ) {
    0000005A DC32                   MOV.L       L2246+8,R12; L1782
    0000005C 4F22                   STS.L       PR,@-R15
    0000005E 63C2                   MOV.L       @R12,R3
    00000060 FF4C                   FMOV.S      FR4,FR15
    00000062 2338                   TST         R3,R3
    00000064 FE5C                   FMOV.S      FR5,FR14
    00000066 7FE0                   ADD         #-32,R15
    00000068 8F02                   BF/S        L2247
    0000006A FD6C                   FMOV.S      FR6,FR13
    0000006C A5D8                   BRA         L2088
    0000006E 0009                   NOP
    00000070              L2247:                            
      hud_text.c   171                    return;
      hud_text.c   172            }
      hud_text.c   173    
      hud_text.c   174            /* do all hud font 1 draws */
      hud_text.c   175            text_SetFont( TEXT_FONT_HUD2 );
    00000070 D333                   MOV.L       L2246+36,R3; _text_SetFont
    00000072 430B                   JSR         @R3
    00000074 E404                   MOV         #4,R4
    00000076 C737                   MOVA        L2246+56,R0
    00000078 63C2                   MOV.L       @R12,R3
    0000007A DE35                   MOV.L       L2246+52,R14; _text_PrintStr
    0000007C E801                   MOV         #1,R8
    0000007E F308                   FMOV.S      @R0,FR3
    00000080 2388                   TST         R8,R3
    00000082 DA30                   MOV.L       L2246+40,
                        +                                  R10; _Viewport_half_hres
                        +                                  _f
    00000084 DD31                   MOV.L       L2246+48,R13; _Text_fScale
    00000086 DB30                   MOV.L       L2246+44,R11; _text_SetStyle
    00000088 FCEC                   FMOV.S      FR14,FR12
    0000008A 8D19                   BT/S        L2089
    0000008C FC30                   FADD        FR3,FR12
      hud_text.c   176            
      hud_text.c   177            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_3 ) {
      hud_text.c   178                    if( fTime < 0.85f ) {
    0000008E C732                   MOVA        L2246+60,R0
    00000090 F208                   FMOV.S      @R0,FR2
    00000092 F2D5                   FCMP/GT     FR13,FR2
    00000094 8B14                   BF          L2089
      hud_text.c   179                            Text_fScale = ( fTime > 0.35f 
                         +) ? ( (1.35f - fTime) * 1.5f ) : 1.5f;
    00000096 C731                   MOVA        L2246+64,R0
    00000098 F108                   FMOV.S      @R0,FR1
    0000009A FD15                   FCMP/GT     FR1,FR13
    0000009C 8B06                   BF          L2091
    0000009E C730                   MOVA        L2246+68,R0
    000000A0 F208                   FMOV.S      @R0,FR2
    000000A2 C730                   MOVA        L2246+72,R0
    000000A4 F108                   FMOV.S      @R0,FR1
    000000A6 F2D1                   FSUB        FR13,FR2
    000000A8 A002                   BRA         L2092
    000000AA F212                   FMUL        FR1,FR2
    000000AC              L2091:                            
    000000AC C72D                   MOVA        L2246+72,R0
    000000AE F208                   FMOV.S      @R0,FR2
    000000B0              L2092:                            
    000000B0 FD2A                   FMOV.S      FR2,@R13
      hud_text.c   180                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    000000B2 4B0B                   JSR         @R11
    000000B4 E40D                   MOV         #13,R4
      hud_text.c   181  E                         text_PrintStr( Viewport_half_h
                         +res_f + fDx, 140.0f + fDy, "3\n" );
    000000B6 F4A8                   FMOV.S      @R10,FR4
    000000B8 D42B                   MOV.L       L2246+76,R4; L1834
    000000BA F5CC                   FMOV.S      FR12,FR5
    000000BC 4E0B                   JSR         @R14
    000000BE F4F0                   FADD        FR15,FR4
    000000C0              L2089:                            
      hud_text.c   182                    }
      hud_text.c   183            }
      hud_text.c   184    
      hud_text.c   185            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_2 ) {
    000000C0 60C2                   MOV.L       @R12,R0
    000000C2 C802                   TST         #2,R0
    000000C4 8918                   BT          L2093
      hud_text.c   186                    if( fTime < 1.85f ) {
    000000C6 C729                   MOVA        L2246+80,R0
    000000C8 F308                   FMOV.S      @R0,FR3
    000000CA F3D5                   FCMP/GT     FR13,FR3
    000000CC 8B14                   BF          L2093
      hud_text.c   187                            Text_fScale = ( fTime > 1.35f 
                         +) ? ( (2.35f - fTime) * 1.5f ) : 1.5f;
    000000CE C724                   MOVA        L2246+68,R0
    000000D0 F208                   FMOV.S      @R0,FR2
    000000D2 FD25                   FCMP/GT     FR2,FR13
    000000D4 8B06                   BF          L2095
    000000D6 C726                   MOVA        L2246+84,R0
    000000D8 F308                   FMOV.S      @R0,FR3
    000000DA C722                   MOVA        L2246+72,R0
    000000DC F208                   FMOV.S      @R0,FR2
    000000DE F3D1                   FSUB        FR13,FR3
    000000E0 A002                   BRA         L2096
    000000E2 F322                   FMUL        FR2,FR3
    000000E4              L2095:                            
    000000E4 C71F                   MOVA        L2246+72,R0
    000000E6 F308                   FMOV.S      @R0,FR3
    000000E8              L2096:                            
    000000E8 FD3A                   FMOV.S      FR3,@R13
      hud_text.c   188                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    000000EA 4B0B                   JSR         @R11
    000000EC E40D                   MOV         #13,R4
      hud_text.c   189  E                         text_PrintStr( Viewport_half_h
                         +res_f + fDx, 140.0f + fDy, "2\n" );
    000000EE F4A8                   FMOV.S      @R10,FR4
    000000F0 D420                   MOV.L       L2246+88,R4; L1837
    000000F2 F5CC                   FMOV.S      FR12,FR5
    000000F4 4E0B                   JSR         @R14
    000000F6 F4F0                   FADD        FR15,FR4
    000000F8              L2093:                            
      hud_text.c   190                    }
      hud_text.c   191            }
      hud_text.c   192    
      hud_text.c   193            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_1 ) {
    000000F8 60C2                   MOV.L       @R12,R0
    000000FA C804                   TST         #4,R0
    000000FC 894A                   BT          L2097
      hud_text.c   194                    if( fTime < 2.85f ) {
    000000FE C71E                   MOVA        L2246+92,R0
    00000100 F308                   FMOV.S      @R0,FR3
    00000102 F3D5                   FCMP/GT     FR13,FR3
    00000104 8B46                   BF          L2097
      hud_text.c   195                            Text_fScale = ( fTime > 2.35f 
                         +) ? ( (3.35f - fTime) * 1.5f ) : 1.5f; 
    00000106 C71A                   MOVA        L2246+84,R0
    00000108 F208                   FMOV.S      @R0,FR2
    0000010A FD25                   FCMP/GT     FR2,FR13
    0000010C 8B38                   BF          L2099
    0000010E C71B                   MOVA        L2246+96,R0
    00000110 F308                   FMOV.S      @R0,FR3
    00000112 C714                   MOVA        L2246+72,R0
    00000114 F208                   FMOV.S      @R0,FR2
    00000116 F3D1                   FSUB        FR13,FR3
    00000118 A034                   BRA         L2100
    0000011A F322                   FMUL        FR2,FR3
    0000011C              L2246:                            
    0000011C <00000000>             .DATA.L     _text_ResetSystem
    00000120 <00000000>             .DATA.L     _text_LoadFont
    00000124 <00000000>             .DATA.L     L1782
    00000128 <00000000>             .DATA.L     L1783
    0000012C <00000000>             .DATA.L     L1784
    00000130 <00000000>             .DATA.L     L1780
    00000134 <00000000>             .DATA.L     L1786
    00000138 <00000000>             .DATA.L     _obsys_LoadGroup
    0000013C <00000000>             .DATA.L     L1781
    00000140 <00000000>             .DATA.L     _text_SetFont
    00000144 <00000000>             .DATA.L     _Viewport_half_hres_f
    00000148 <00000000>             .DATA.L     _text_SetStyle
    0000014C <00000000>             .DATA.L     _Text_fScale
    00000150 <00000000>             .DATA.L     _text_PrintStr
    00000154 430C0000               .DATA.L     H'430C0000
    00000158 3F599999               .DATA.L     H'3F599999
    0000015C 3EB33333               .DATA.L     H'3EB33333
    00000160 3FACCCCC               .DATA.L     H'3FACCCCC
    00000164 3FC00000               .DATA.L     H'3FC00000
    00000168 <00000000>             .DATA.L     L1834
    0000016C 3FECCCCC               .DATA.L     H'3FECCCCC
    00000170 40166666               .DATA.L     H'40166666
    00000174 <00000000>             .DATA.L     L1837
    00000178 40366666               .DATA.L     H'40366666
    0000017C 40566666               .DATA.L     H'40566666
    00000180              L2099:                            
    00000180 C740                   MOVA        L2248+2,R0
    00000182 F308                   FMOV.S      @R0,FR3
    00000184              L2100:                            
    00000184 FD3A                   FMOV.S      FR3,@R13
      hud_text.c   196                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    00000186 4B0B                   JSR         @R11
    00000188 E40D                   MOV         #13,R4
      hud_text.c   197  E                         text_PrintStr( Viewport_half_h
                         +res_f + fDx, 140.0f + fDy, "1\n" );
    0000018A F4A8                   FMOV.S      @R10,FR4
    0000018C D43E                   MOV.L       L2248+6,R4 ; L1840
    0000018E F5CC                   FMOV.S      FR12,FR5
    00000190 4E0B                   JSR         @R14
    00000192 F4F0                   FADD        FR15,FR4
    00000194              L2097:                            
      hud_text.c   198                    }
      hud_text.c   199            }
      hud_text.c   200    
      hud_text.c   201            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_GO ) {
    00000194 60C2                   MOV.L       @R12,R0
    00000196 C808                   TST         #8,R0
    00000198 8909                   BT          L2101
      hud_text.c   202                    Text_fScale = 1.5f;
    0000019A C73A                   MOVA        L2248+2,R0
    0000019C F308                   FMOV.S      @R0,FR3
    0000019E FD3A                   FMOV.S      FR3,@R13
      hud_text.c   203                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    000001A0 4B0B                   JSR         @R11
    000001A2 E40D                   MOV         #13,R4
      hud_text.c   204  E                 text_PrintStr( Viewport_half_hres_f + 
                         +fDx, 140.0f + fDy, "GO!\n" );
    000001A4 F4A8                   FMOV.S      @R10,FR4
    000001A6 D439                   MOV.L       L2248+10,R4; L1842
    000001A8 F5CC                   FMOV.S      FR12,FR5
    000001AA 4E0B                   JSR         @R14
    000001AC F4F0                   FADD        FR15,FR4
    000001AE              L2101:                            
      hud_text.c   205            }
      hud_text.c   206    
      hud_text.c   207            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_RANK ) {
    000001AE C738                   MOVA        L2248+14,R0
    000001B0 FD08                   FMOV.S      @R0,FR13
    000001B2 60C2                   MOV.L       @R12,R0
    000001B4 C810                   TST         #16,R0
    000001B6 8937                   BT          L2102
      hud_text.c   208                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    000001B8 4B0B                   JSR         @R11
    000001BA E40D                   MOV         #13,R4
      hud_text.c   209                    /* draw a 1 or 2 digit place */
      hud_text.c   210  E                 fX = ( Player_aData[Player_nHuman].nPl
                         +ace < 10 ) ? 414.0f + fDx : 405.0f + fDx;
    000001BC D135                   MOV.L       L2248+18,R1; _Player_nHuman
    000001BE 9360                   MOV.W       L2248,R3   ; H'01F0
    000001C0 6211                   MOV.W       @R1,R2
    000001C2 E10A                   MOV         #10,R1
    000001C4 223F                   MULS        R3,R2
    000001C6 D234                   MOV.L       L2248+22,R2; _Player_aData
    000001C8 031A                   STS         MACL,R3
    000001CA 633F                   EXTS.W      R3,R3
    000001CC 332C                   ADD         R2,R3
    000001CE 1F37                   MOV.L       R3,@(28,R15)
    000001D0 5338                   MOV.L       @(32,R3),R3
    000001D2 3312                   CMP/HS      R1,R3
    000001D4 8D03                   BT/S        L2103
    000001D6 F4FC                   FMOV.S      FR15,FR4
    000001D8 C730                   MOVA        L2248+26,R0
    000001DA A002                   BRA         L2233
    000001DC F308                   FMOV.S      @R0,FR3
    000001DE              L2103:                            
    000001DE C730                   MOVA        L2248+30,R0
    000001E0 F308                   FMOV.S      @R0,FR3
    000001E2              L2233:                            
      hud_text.c   211                    Text_fScale = 0.75f;
    000001E2 C730                   MOVA        L2248+34,R0
    000001E4 F430                   FADD        FR3,FR4
    000001E6 F308                   FMOV.S      @R0,FR3
    000001E8 FD3A                   FMOV.S      FR3,@R13
      hud_text.c   212  E                 text_PrintNumber( fX, 140.0f + fDy, Pl
                         +ayer_aData[Player_nHuman].nPlace );
    000001EA 54F7                   MOV.L       @(28,R15),R4
    000001EC D32E                   MOV.L       L2248+38,R3; _text_PrintNumber
    000001EE 5448                   MOV.L       @(32,R4),R4
    000001F0 430B                   JSR         @R3
    000001F2 F5CC                   FMOV.S      FR12,FR5
      hud_text.c   213                    /* draw "of" */
      hud_text.c   214                    Text_fScale = 0.35f;
    000001F4 C72D                   MOVA        L2248+42,R0
    000001F6 F308                   FMOV.S      @R0,FR3
      hud_text.c   215  E                 text_PrintStr( 445.0f + fDx, 145.0f + 
                         +fDy, "OF\n" );
    000001F8 C72E                   MOVA        L2248+50,R0
    000001FA FD3A                   FMOV.S      FR3,@R13
    000001FC F308                   FMOV.S      @R0,FR3
    000001FE F5EC                   FMOV.S      FR14,FR5
    00000200 F530                   FADD        FR3,FR5
    00000202 D42B                   MOV.L       L2248+46,R4; L1844
    00000204 F4FC                   FMOV.S      FR15,FR4
    00000206 4E0B                   JSR         @R14
    00000208 F4D0                   FADD        FR13,FR4
      hud_text.c   216                    /* draw number of players */
      hud_text.c   217                    Text_fScale = 0.50f;
    0000020A C72B                   MOVA        L2248+54,R0
    0000020C F308                   FMOV.S      @R0,FR3
      hud_text.c   218  E                 text_PrintNumber( 478.0f + fDx, 143.0f
                         + + fDy, Player_nTotalCount );
    0000020E C72C                   MOVA        L2248+62,R0
    00000210 FD3A                   FMOV.S      FR3,@R13
    00000212 F308                   FMOV.S      @R0,FR3
    00000214 C72B                   MOVA        L2248+66,R0
    00000216 F5EC                   FMOV.S      FR14,FR5
    00000218 F530                   FADD        FR3,FR5
    0000021A D328                   MOV.L       L2248+58,R3; _Player_nTotalCount
    0000021C D222                   MOV.L       L2248+38,R2; _text_PrintNumber
    0000021E F208                   FMOV.S      @R0,FR2
    00000220 6432                   MOV.L       @R3,R4
    00000222 F4FC                   FMOV.S      FR15,FR4
    00000224 420B                   JSR         @R2
    00000226 F420                   FADD        FR2,FR4
    00000228              L2102:                            
      hud_text.c   219            }
      hud_text.c   220    
      hud_text.c   221            if( _nDrawFlags & HUD_TEXT_FLAGS_DRAW_COUNTDOW
                         +N ) {
    00000228 60C2                   MOV.L       @R12,R0
    0000022A C820                   TST         #32,R0
    0000022C 8F02                   BF/S        L2249
    0000022E FC9D                   FLDI1       FR12
    00000230 A08C                   BRA         L2105
    00000232 0009                   NOP
    00000234              L2249:                            
      hud_text.c   222                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    00000234 4B0B                   JSR         @R11
    00000236 E40D                   MOV         #13,R4
      hud_text.c   223                    fX = Viewport_half_hres_f + fDx;
      hud_text.c   224  E                 fY = 25.0f + fDy;
    00000238 C723                   MOVA        L2248+70,R0
    0000023A F4A8                   FMOV.S      @R10,FR4
    0000023C F308                   FMOV.S      @R0,FR3
      hud_text.c   225                    Text_fScale = 0.67f;
    0000023E C723                   MOVA        L2248+74,R0
    00000240 F208                   FMOV.S      @R0,FR2
    00000242 C724                   MOVA        L2248+82,R0
    00000244 F4F0                   FADD        FR15,FR4
    00000246 F5EC                   FMOV.S      FR14,FR5
    00000248 FD2A                   FMOV.S      FR2,@R13
    0000024A D321                   MOV.L       L2248+78,
                        +                                  R3; _Player_fCountdownSe
                        +                                  cs
    0000024C F238                   FMOV.S      @R3,FR2
    0000024E FF2A                   FMOV.S      FR2,@R15
    00000250 F208                   FMOV.S      @R0,FR2
    00000252 F1F8                   FMOV.S      @R15,FR1
    00000254 F215                   FCMP/GT     FR1,FR2
    00000256 8D02                   BT/S        L2106
    00000258 F530                   FADD        FR3,FR5
      hud_text.c   226                    
      hud_text.c   227                    if( Player_fCountdownSecs >= 99.0f ) {
      hud_text.c   228                            text_PrintNumber( fX, fY, 99 )
                         +;
    0000025A A04A                   BRA         L2239
    0000025C E463                   MOV         #99,R4
    0000025E              L2106:                            
      hud_text.c   229                    } else if( Player_fCountdownSecs < 1.0
                         +f ) {
    0000025E FC15                   FCMP/GT     FR1,FR12
    00000260 8B04                   BF          L2108
      hud_text.c   230                            text_PrintStr( fX, fY, "00\n" 
                         +);
    00000262 D41D                   MOV.L       L2248+86,R4; L1848
    00000264 4E0B                   JSR         @R14
    00000266 0009                   NOP
    00000268 A070                   BRA         L2105
    0000026A 0009                   NOP
    0000026C              L2108:                            
      hud_text.c   231                    } else {
      hud_text.c   232                            nTemp = (u32)Player_fCountdown
                         +Secs;
    0000026C C71B                   MOVA        L2248+90,R0
    0000026E F2F8                   FMOV.S      @R15,FR2
    00000270 F108                   FMOV.S      @R0,FR1
    00000272 F215                   FCMP/GT     FR1,FR2
    00000274 8B36                   BF          L2110
    00000276 C71A                   MOVA        L2248+94,R0
    00000278 F1F8                   FMOV.S      @R15,FR1
    0000027A F208                   FMOV.S      @R0,FR2
    0000027C F120                   FADD        FR2,FR1
    0000027E A032                   BRA         L2111
    00000280 F21C                   FMOV.S      FR1,FR2
    00000282              L2248:                            
    00000282 01F0                   .DATA.W     H'01F0
    00000284 3FC00000               .DATA.L     H'3FC00000
    00000288 <00000000>             .DATA.L     L1840
    0000028C <00000000>             .DATA.L     L1842
    00000290 43DE8000               .DATA.L     H'43DE8000
    00000294 <00000000>             .DATA.L     _Player_nHuman
    00000298 <00000000>             .DATA.L     _Player_aData
    0000029C 43CF0000               .DATA.L     H'43CF0000
    000002A0 43CA8000               .DATA.L     H'43CA8000
    000002A4 3F400000               .DATA.L     H'3F400000
    000002A8 <00000000>             .DATA.L     _text_PrintNumber
    000002AC 3EB33333               .DATA.L     H'3EB33333
    000002B0 <00000000>             .DATA.L     L1844
    000002B4 43110000               .DATA.L     H'43110000
    000002B8 3F000000               .DATA.L     H'3F000000
    000002BC <00000000>             .DATA.L     _Player_nTotalCount
    000002C0 430F0000               .DATA.L     H'430F0000
    000002C4 43EF0000               .DATA.L     H'43EF0000
    000002C8 41C80000               .DATA.L     H'41C80000
    000002CC 3F2B851E               .DATA.L     H'3F2B851E
    000002D0 <00000000>             .DATA.L     _Player_fCountdownSecs
    000002D4 42C60000               .DATA.L     H'42C60000
    000002D8 <00000000>             .DATA.L     L1848
    000002DC 4F000000               .DATA.L     H'4F000000
    000002E0 CF800000               .DATA.L     H'CF800000
    000002E4              L2110:                            
    000002E4 F2F8                   FMOV.S      @R15,FR2
    000002E6              L2111:                            
    000002E6 F23D                   FTRC        FR2,FPUL
      hud_text.c   233                            if( nTemp >= 10 ) {
    000002E8 E20A                   MOV         #10,R2
    000002EA 095A                   STS         FPUL,R9
    000002EC 3922                   CMP/HS      R2,R9
    000002EE 8B05                   BF          L2112
      hud_text.c   234                                    text_PrintNumber( fX, 
                         +fY, nTemp );    
    000002F0 6493                   MOV         R9,R4
    000002F2              L2239:                            
    000002F2 D12E                   MOV.L       L2250+2,R1 ; _text_PrintNumber
    000002F4 410B                   JSR         @R1
    000002F6 0009                   NOP
    000002F8 A028                   BRA         L2105
    000002FA 0009                   NOP
    000002FC              L2112:                            
      hud_text.c   235                            } else if( nTemp >= 5 )  {
    000002FC E105                   MOV         #5,R1
    000002FE 3912                   CMP/HS      R1,R9
    00000300 8B12                   BF          L2114
    00000302 D32B                   MOV.L       L2250+6,R3 ; L1780
    00000304 6032                   MOV.L       @R3,R0
    00000306 2008                   TST         R0,R0
    00000308 8B04                   BF          L2115
    0000030A D22A                   MOV.L       L2250+10,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    0000030C 6022                   MOV.L       @R2,R0
    0000030E C908                   AND         #8,R0
    00000310 A001                   BRA         L1981
    00000312 6403                   MOV         R0,R4
    00000314              L2115:                            
    00000314 6483                   MOV         R8,R4
    00000316              L1981:
    00000316 2448                   TST         R4,R4
    00000318 8918                   BT          L2105
      hud_text.c   236                                    if( _Flash8On8Off() ) 
                         +{
      hud_text.c   237                                            text_PrintF( f
                         +X, fY, "0%d\n", nTemp );        
    0000031A 2F96                   MOV.L       R9,@-R15
    0000031C D327                   MOV.L       L2250+18,R3; _text_PrintF
    0000031E D226                   MOV.L       L2250+14,R2; L1853
    00000320 430B                   JSR         @R3
    00000322 2F26                   MOV.L       R2,@-R15
    00000324 A012                   BRA         L2105
    00000326 7F08                   ADD         #8,R15
    00000328              L2114:                            
    00000328 D021                   MOV.L       L2250+6,R0 ; L1780
    0000032A 6302                   MOV.L       @R0,R3
    0000032C 2338                   TST         R3,R3
    0000032E 8B04                   BF          L2119
    00000330 D320                   MOV.L       L2250+10,
                        +                                  R3; _Gameloop_nFrameCoun
                        +                                  ter
    00000332 6032                   MOV.L       @R3,R0
    00000334 C904                   AND         #4,R0
    00000336 A001                   BRA         L1986
    00000338 6403                   MOV         R0,R4
    0000033A              L2119:                            
    0000033A 6483                   MOV         R8,R4
    0000033C              L1986:
    0000033C 2448                   TST         R4,R4
    0000033E 8905                   BT          L2105
      hud_text.c   238                                    }
      hud_text.c   239                            } else {
      hud_text.c   240                                    if( _Flash4On4Off() ) 
                         +{
      hud_text.c   241                                            text_PrintF( f
                         +X, fY, "0%d\n", nTemp );        
    00000340 2F96                   MOV.L       R9,@-R15
    00000342 D31E                   MOV.L       L2250+18,R3; _text_PrintF
    00000344 D21C                   MOV.L       L2250+14,R2; L1853
    00000346 430B                   JSR         @R3
    00000348 2F26                   MOV.L       R2,@-R15
    0000034A 7F08                   ADD         #8,R15
    0000034C              L2105:                            
    0000034C C71C                   MOVA        L2250+22,R0
    0000034E F2EC                   FMOV.S      FR14,FR2
    00000350 F308                   FMOV.S      @R0,FR3
    00000352 E010                   MOV         #16,R0
    00000354 F230                   FADD        FR3,FR2
    00000356 FF27                   FMOV.S      FR2,@(R0,R15)
    00000358 C71A                   MOVA        L2250+26,R0
    0000035A F108                   FMOV.S      @R0,FR1
    0000035C E014                   MOV         #20,R0
    0000035E F0EC                   FMOV.S      FR14,FR0
    00000360 F010                   FADD        FR1,FR0
    00000362 FF07                   FMOV.S      FR0,@(R0,R15)
    00000364 60C2                   MOV.L       @R12,R0
    00000366 C840                   TST         #64,R0
    00000368 8913                   BT          L2122
      hud_text.c   242                                    }
      hud_text.c   243                            }
      hud_text.c   244                    }
      hud_text.c   245            }
      hud_text.c   246            
      hud_text.c   247            if( _nDrawFlags & HUD_TEXT_FLAGS_TIME_EXPIRED 
                         +) {
      hud_text.c   248                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    0000036A 4B0B                   JSR         @R11
    0000036C E40D                   MOV         #13,R4
      hud_text.c   249                    Text_fScale = 1.15f;
    0000036E C716                   MOVA        L2250+30,R0
    00000370 F308                   FMOV.S      @R0,FR3
      hud_text.c   250                    fX = Viewport_half_hres_f + fDx;
    00000372 E004                   MOV         #4,R0
    00000374 FD3A                   FMOV.S      FR3,@R13
    00000376 F3A8                   FMOV.S      @R10,FR3
    00000378 F3F0                   FADD        FR15,FR3
    0000037A FF37                   FMOV.S      FR3,@(R0,R15)
      hud_text.c   251  E                 text_PrintStr( fX, 120.0f + fDy, "TIME
                         +\n" );
    0000037C E010                   MOV         #16,R0
    0000037E F5F6                   FMOV.S      @(R0,R15),FR5
    00000380 D412                   MOV.L       L2250+34,R4; L1857
    00000382 4E0B                   JSR         @R14
    00000384 F43C                   FMOV.S      FR3,FR4
      hud_text.c   252  E                 text_PrintStr( fX, 165.0f + fDy, "EXPI
                         +RED!\n" );
    00000386 E014                   MOV         #20,R0
    00000388 D411                   MOV.L       L2250+38,R4; L1858
    0000038A F5F6                   FMOV.S      @(R0,R15),FR5
    0000038C E004                   MOV         #4,R0
    0000038E 4E0B                   JSR         @R14
    00000390 F4F6                   FMOV.S      @(R0,R15),FR4
    00000392              L2122:                            
      hud_text.c   253            }
      hud_text.c   254            
      hud_text.c   255            if( _nDrawFlags & HUD_TEXT_FLAGS_WINNER ) {
    00000392 60C2                   MOV.L       @R12,R0
    00000394 C880                   TST         #128,R0
    00000396 892D                   BT          L2123
    00000398 D305                   MOV.L       L2250+6,R3 ; L1780
    0000039A 6232                   MOV.L       @R3,R2
    0000039C 2228                   TST         R2,R2
    0000039E 8B19                   BF          L2124
    000003A0 D204                   MOV.L       L2250+10,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    000003A2 6022                   MOV.L       @R2,R0
    000003A4 C904                   AND         #4,R0
    000003A6 A016                   BRA         L1991
    000003A8 6403                   MOV         R0,R4
    000003AA              L2250:                            
    000003AA 00000002               .RES.W      1
    000003AC <00000000>             .DATA.L     _text_PrintNumber
    000003B0 <00000000>             .DATA.L     L1780
    000003B4 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000003B8 <00000000>             .DATA.L     L1853
    000003BC <00000000>             .DATA.L     _text_PrintF
    000003C0 42F00000               .DATA.L     H'42F00000
    000003C4 43250000               .DATA.L     H'43250000
    000003C8 3F933333               .DATA.L     H'3F933333
    000003CC <00000000>             .DATA.L     L1857
    000003D0 <00000000>             .DATA.L     L1858
    000003D4              L2124:                            
    000003D4 6483                   MOV         R8,R4
    000003D6              L1991:
    000003D6 2448                   TST         R4,R4
    000003D8 890C                   BT          L2123
      hud_text.c   256                    if( _Flash4On4Off() ) {
      hud_text.c   257                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    000003DA 4B0B                   JSR         @R11
    000003DC E40D                   MOV         #13,R4
      hud_text.c   258                            Text_fScale = 1.10f;
    000003DE C733                   MOVA        L2251+8,R0
    000003E0 F308                   FMOV.S      @R0,FR3
      hud_text.c   259  E                         text_PrintStr( Viewport_half_h
                         +res_f + fDx, 100.0f  + fDy, "WINNER!\n" );
    000003E2 C734                   MOVA        L2251+16,R0
    000003E4 FD3A                   FMOV.S      FR3,@R13
    000003E6 F308                   FMOV.S      @R0,FR3
    000003E8 F5EC                   FMOV.S      FR14,FR5
    000003EA F530                   FADD        FR3,FR5
    000003EC F4A8                   FMOV.S      @R10,FR4
    000003EE D430                   MOV.L       L2251+12,R4; L1861
    000003F0 4E0B                   JSR         @R14
    000003F2 F4F0                   FADD        FR15,FR4
    000003F4              L2123:                            
      hud_text.c   260                    }
      hud_text.c   261            }
      hud_text.c   262    
      hud_text.c   263            if( _nDrawFlags & HUD_TEXT_FLAGS_ELAPSED_TIME 
                         +) {
    000003F4 62C2                   MOV.L       @R12,R2
    000003F6 9355                   MOV.W       L2251,R3   ; H'0800
    000003F8 2238                   TST         R3,R2
    000003FA 892A                   BT          L2127
      hud_text.c   264                    mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.
                         +0f, 1.0f, 0.0f );
    000003FC D22E                   MOV.L       L2251+20,
                        +                                  R2; _mesh3d_SetOrthoEffe
                        +                                  cts
    000003FE F5CC                   FMOV.S      FR12,FR5
    00000400 F6CC                   FMOV.S      FR12,FR6
    00000402 F88D                   FLDI0       FR8
    00000404 F7CC                   FMOV.S      FR12,FR7
    00000406 420B                   JSR         @R2
    00000408 F4CC                   FMOV.S      FR12,FR4
    0000040A D12E                   MOV.L       L2251+32,R1; _Player_nHuman
    0000040C C72B                   MOVA        L2251+24,R0
    0000040E 934A                   MOV.W       L2251+2,R3 ; H'01F0
    00000410 6211                   MOV.W       @R1,R2
    00000412 F308                   FMOV.S      @R0,FR3
    00000414 C72A                   MOVA        L2251+28,R0
    00000416 223F                   MULS        R3,R2
    00000418 F208                   FMOV.S      @R0,FR2
    0000041A D02B                   MOV.L       L2251+36,
                        +                                  R0; H'00000030+_Player_a
                        +                                  Data
    0000041C F18D                   FLDI0       FR1
    0000041E 031A                   STS         MACL,R3
    00000420 F6EC                   FMOV.S      FR14,FR6
    00000422 F630                   FADD        FR3,FR6
    00000424 F5FC                   FMOV.S      FR15,FR5
    00000426 633F                   EXTS.W      R3,R3
    00000428 F036                   FMOV.S      @(R0,R3),FR0
    0000042A F014                   FCMP/EQ     FR1,FR0
    0000042C 8F05                   BF/S        L2128
    0000042E F520                   FADD        FR2,FR5
      hud_text.c   265                    if( Player_aData[Player_nHuman].fFinis
                         +hTime == 0.0f ) {
      hud_text.c   266  E                         _DrawTime( Player_fElapsedSecs
                         +, -150.0f + fDx, 182.0f + fDy, 0.75f );
    00000430 C726                   MOVA        L2251+40,R0
    00000432 D327                   MOV.L       L2251+44,
                        +                                  R3; _Player_fElapsedSecs
    00000434 F708                   FMOV.S      @R0,FR7
    00000436 A00A                   BRA         L2234
    00000438 F438                   FMOV.S      @R3,FR4
    0000043A              L2128:                            
      hud_text.c   267                    } else {
      hud_text.c   268  E                         _DrawTime( Player_aData[Player
                         +_nHuman].fFinishTime, -150.0f + fDx, 182.0f + fDy, 0.7
                         +5f );
    0000043A D122                   MOV.L       L2251+32,R1; _Player_nHuman
    0000043C C723                   MOVA        L2251+40,R0
    0000043E 9332                   MOV.W       L2251+2,R3 ; H'01F0
    00000440 6211                   MOV.W       @R1,R2
    00000442 F708                   FMOV.S      @R0,FR7
    00000444 223F                   MULS        R3,R2
    00000446 D020                   MOV.L       L2251+36,
                        +                                  R0; H'00000030+_Player_a
                        +                                  Data
    00000448 031A                   STS         MACL,R3
    0000044A 633F                   EXTS.W      R3,R3
    0000044C F436                   FMOV.S      @(R0,R3),FR4
    0000044E              L2234:                            
    0000044E B4B9                   BSR         L1818
    00000450 0009                   NOP
    00000452              L2127:                            
      hud_text.c   269                    }
      hud_text.c   270            }
      hud_text.c   271    
      hud_text.c   272            if( _nDrawFlags & HUD_TEXT_FLAGS_TIME_EXTENDED
                         + ) {
    00000452 62C2                   MOV.L       @R12,R2
    00000454 9328                   MOV.W       L2251+4,R3 ; H'1000
    00000456 2238                   TST         R3,R2
    00000458 8955                   BT          L2130
    0000045A D11E                   MOV.L       L2251+48,R1; L1780
    0000045C 6012                   MOV.L       @R1,R0
    0000045E 2008                   TST         R0,R0
    00000460 8B04                   BF          L2131
    00000462 D21D                   MOV.L       L2251+52,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    00000464 6022                   MOV.L       @R2,R0
    00000466 C904                   AND         #4,R0
    00000468 A001                   BRA         L1996
    0000046A 6403                   MOV         R0,R4
    0000046C              L2131:                            
    0000046C 6483                   MOV         R8,R4
    0000046E              L1996:
    0000046E D91B                   MOV.L       L2251+56,R9; L1783
    00000470 2448                   TST         R4,R4
    00000472 893B                   BT          L2133
      hud_text.c   273                    if( _Flash4On4Off() ) {
      hud_text.c   274                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    00000474 4B0B                   JSR         @R11
    00000476 E40D                   MOV         #13,R4
      hud_text.c   275                            Text_fScale = 0.65f;
    00000478 C719                   MOVA        L2251+60,R0
    0000047A F308                   FMOV.S      @R0,FR3
      hud_text.c   276                            fX = Viewport_half_hres_f + fD
                         +x;
    0000047C E00C                   MOV         #12,R0
    0000047E FD3A                   FMOV.S      FR3,@R13
    00000480 F3A8                   FMOV.S      @R10,FR3
    00000482 F3F0                   FADD        FR15,FR3
    00000484 FF37                   FMOV.S      FR3,@(R0,R15)
      hud_text.c   277  E                         text_PrintStr( fX, 120.0f + fD
                         +y, "TIME\n" );
    00000486 E010                   MOV         #16,R0
    00000488 F5F6                   FMOV.S      @(R0,R15),FR5
    0000048A D416                   MOV.L       L2251+64,R4; L1857
    0000048C 4E0B                   JSR         @R14
    0000048E F43C                   FMOV.S      FR3,FR4
      hud_text.c   278  E                         text_PrintStr( fX, 165.0f + fD
                         +y, "EXTENDED!\n" );
    00000490 E014                   MOV         #20,R0
    00000492 D415                   MOV.L       L2251+68,R4; L1867
    00000494 F5F6                   FMOV.S      @(R0,R15),FR5
    00000496 E00C                   MOV         #12,R0
    00000498 4E0B                   JSR         @R14
    0000049A F4F6                   FMOV.S      @(R0,R15),FR4
      hud_text.c   279    
      hud_text.c   280                            ++_nTimeExtendedCounter;
    0000049C 6391                   MOV.W       @R9,R3
    0000049E 7301                   ADD         #1,R3
    000004A0 A031                   BRA         L2130
    000004A2 2931                   MOV.W       R3,@R9
    000004A4              L2251:                            
    000004A4 0800                   .DATA.W     H'0800
    000004A6 01F0                   .DATA.W     H'01F0
    000004A8 1000                   .DATA.W     H'1000
    000004AA 00000002               .RES.W      1
    000004AC 3F8CCCCC               .DATA.L     H'3F8CCCCC
    000004B0 <00000000>             .DATA.L     L1861
    000004B4 42C80000               .DATA.L     H'42C80000
    000004B8 <00000000>             .DATA.L     _mesh3d_SetOrthoEffects
    000004BC 43360000               .DATA.L     H'43360000
    000004C0 C3160000               .DATA.L     H'C3160000
    000004C4 <00000000>             .DATA.L     _Player_nHuman
    000004C8 <00000030>             .DATA.L     H'00000030+_Player_aData
    000004CC 3F400000               .DATA.L     H'3F400000
    000004D0 <00000000>             .DATA.L     _Player_fElapsedSecs
    000004D4 <00000000>             .DATA.L     L1780
    000004D8 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000004DC <00000000>             .DATA.L     L1783
    000004E0 3F266666               .DATA.L     H'3F266666
    000004E4 <00000000>             .DATA.L     L1857
    000004E8 <00000000>             .DATA.L     L1867
    000004EC              L2133:                            
      hud_text.c   281                    } else {
      hud_text.c   282  E                         if( _nTimeExtendedCounter >= 3
                         +0 ) {
    000004EC 6191                   MOV.W       @R9,R1
    000004EE E31E                   MOV         #30,R3
    000004F0 611D                   EXTU.W      R1,R1
    000004F2 3133                   CMP/GE      R3,R1
    000004F4 8B07                   BF          L2130
      hud_text.c   283                                    /* auto kill this part
                         +icular message */
      hud_text.c   284                                    _nTimeExtendedCounter 
                         += 0;
    000004F6 E100                   MOV         #0,R1
    000004F8 2911                   MOV.W       R1,@R9
      hud_text.c   285  E                                 hud_text_SetFlag( 0, H
                         +UD_TEXT_FLAGS_TIME_EXTENDED );
    000004FA 955D                   MOV.W       L2252,R5   ; H'1000
    000004FC B3A8                   BSR         _hud_text_SetFlag
    000004FE 6413                   MOV         R1,R4
      hud_text.c   286  E                                 hud_wrongway_EnableTex
                         +t( 1 );
    00000500 D32F                   MOV.L       L2252+8,
                        +                                  R3 ; _hud_wrongway_Enable
                        +                                  Text
    00000502 430B                   JSR         @R3
    00000504 E401                   MOV         #1,R4
    00000506              L2130:                            
    00000506 C730                   MOVA        L2252+16,R0
    00000508 F2EC                   FMOV.S      FR14,FR2
    0000050A F308                   FMOV.S      @R0,FR3
    0000050C E008                   MOV         #8,R0
    0000050E D92D                   MOV.L       L2252+12,R9; L1784
    00000510 F230                   FADD        FR3,FR2
    00000512 FF27                   FMOV.S      FR2,@(R0,R15)
    00000514 62C2                   MOV.L       @R12,R2
    00000516 9350                   MOV.W       L2252+2,R3 ; H'2000
    00000518 2238                   TST         R3,R2
    0000051A 8929                   BT          L2136
    0000051C D12B                   MOV.L       L2252+20,R1; L1780
    0000051E 6012                   MOV.L       @R1,R0
    00000520 2008                   TST         R0,R0
    00000522 8B04                   BF          L2137
    00000524 D22A                   MOV.L       L2252+24,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    00000526 6022                   MOV.L       @R2,R0
    00000528 C902                   AND         #2,R0
    0000052A A001                   BRA         L2001
    0000052C 6403                   MOV         R0,R4
    0000052E              L2137:                            
    0000052E 6483                   MOV         R8,R4
    00000530              L2001:
    00000530 2448                   TST         R4,R4
    00000532 8913                   BT          L2139
      hud_text.c   287                            }       
      hud_text.c   288                    }
      hud_text.c   289            }
      hud_text.c   290    
      hud_text.c   291            if( _nDrawFlags & HUD_TEXT_FLAGS_SBOOSTER ) {
      hud_text.c   292                    if( _Flash2On2Off() ) {
      hud_text.c   293                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    00000534 4B0B                   JSR         @R11
    00000536 E40D                   MOV         #13,R4
      hud_text.c   294                            Text_fScale = 0.45f;
      hud_text.c   295  E                         text_PrintF( Viewport_half_hre
                         +s_f + fDx, 355.0f + fDy, "BOOSTER +%d SECS!\n", (u32)4
                         +.5f );
    00000538 E304                   MOV         #4,R3
    0000053A C726                   MOVA        L2252+28,R0
    0000053C F308                   FMOV.S      @R0,FR3
    0000053E E010                   MOV         #16,R0
    00000540 FD3A                   FMOV.S      FR3,@R13
    00000542 2F36                   MOV.L       R3,@-R15
    00000544 D224                   MOV.L       L2252+32,R2; L1872
    00000546 2F26                   MOV.L       R2,@-R15
    00000548 F4A8                   FMOV.S      @R10,FR4
    0000054A D124                   MOV.L       L2252+36,R1; _text_PrintF
    0000054C F5F6                   FMOV.S      @(R0,R15),FR5
    0000054E 410B                   JSR         @R1
    00000550 F4F0                   FADD        FR15,FR4
      hud_text.c   296    
      hud_text.c   297                            ++_nBoosterCounter;
    00000552 6391                   MOV.W       @R9,R3
    00000554 7F08                   ADD         #8,R15
    00000556 7301                   ADD         #1,R3
    00000558 A00A                   BRA         L2136
    0000055A 2931                   MOV.W       R3,@R9
    0000055C              L2139:                            
      hud_text.c   298                    } else {
      hud_text.c   299  E                         if( _nBoosterCounter >= 30  ) 
                         +{
    0000055C 6191                   MOV.W       @R9,R1
    0000055E E31E                   MOV         #30,R3
    00000560 611D                   EXTU.W      R1,R1
    00000562 3133                   CMP/GE      R3,R1
    00000564 8B04                   BF          L2136
      hud_text.c   300                                    /* auto kill this part
                         +icular message */
      hud_text.c   301                                    _nBoosterCounter = 0;
    00000566 E100                   MOV         #0,R1
    00000568 2911                   MOV.W       R1,@R9
      hud_text.c   302  E                                 hud_text_SetFlag( 0, H
                         +UD_TEXT_FLAGS_SBOOSTER );
    0000056A 9526                   MOV.W       L2252+2,R5 ; H'2000
    0000056C B370                   BSR         _hud_text_SetFlag
    0000056E 6413                   MOV         R1,R4
    00000570              L2136:                            
      hud_text.c   303                            }
      hud_text.c   304                    }
      hud_text.c   305            }
      hud_text.c   306    
      hud_text.c   307            if( _nDrawFlags & HUD_TEXT_FLAGS_LBOOSTER ) { 
    00000570 62C2                   MOV.L       @R12,R2
    00000572 9323                   MOV.W       L2252+4,R3 ; H'4000
    00000574 2238                   TST         R3,R2
    00000576 893D                   BT          L2142
    00000578 D114                   MOV.L       L2252+20,R1; L1780
    0000057A 6012                   MOV.L       @R1,R0
    0000057C 2008                   TST         R0,R0
    0000057E 8B04                   BF          L2143
    00000580 D213                   MOV.L       L2252+24,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    00000582 6022                   MOV.L       @R2,R0
    00000584 C902                   AND         #2,R0
    00000586 A001                   BRA         L2006
    00000588 6403                   MOV         R0,R4
    0000058A              L2143:                            
    0000058A 6483                   MOV         R8,R4
    0000058C              L2006:
    0000058C 2448                   TST         R4,R4
    0000058E 8927                   BT          L2145
      hud_text.c   308                    if( _Flash2On2Off() ) { 
      hud_text.c   309                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    00000590 4B0B                   JSR         @R11
    00000592 E40D                   MOV         #13,R4
      hud_text.c   310                            Text_fScale = 0.45f;
      hud_text.c   311  E                         text_PrintF( Viewport_half_hre
                         +s_f + fDx, 355.0f + fDy, "BOOSTER +%d SECS!\n", (u32)9
                         +.00f );
    00000594 E309                   MOV         #9,R3
    00000596 C70F                   MOVA        L2252+28,R0
    00000598 F308                   FMOV.S      @R0,FR3
    0000059A E010                   MOV         #16,R0
    0000059C FD3A                   FMOV.S      FR3,@R13
    0000059E 2F36                   MOV.L       R3,@-R15
    000005A0 D20D                   MOV.L       L2252+32,R2; L1872
    000005A2 2F26                   MOV.L       R2,@-R15
    000005A4 F4A8                   FMOV.S      @R10,FR4
    000005A6 D10D                   MOV.L       L2252+36,R1; _text_PrintF
    000005A8 F5F6                   FMOV.S      @(R0,R15),FR5
    000005AA 410B                   JSR         @R1
    000005AC F4F0                   FADD        FR15,FR4
      hud_text.c   312    
      hud_text.c   313                            ++_nBoosterCounter;
    000005AE 6391                   MOV.W       @R9,R3
    000005B0 7F08                   ADD         #8,R15
    000005B2 7301                   ADD         #1,R3
    000005B4 A01E                   BRA         L2142
    000005B6 2931                   MOV.W       R3,@R9
    000005B8              L2252:                            
    000005B8 1000                   .DATA.W     H'1000
    000005BA 2000                   .DATA.W     H'2000
    000005BC 4000                   .DATA.W     H'4000
    000005BE 00000002               .RES.W      1
    000005C0 <00000000>             .DATA.L     _hud_wrongway_EnableText
    000005C4 <00000000>             .DATA.L     L1784
    000005C8 43B18000               .DATA.L     H'43B18000
    000005CC <00000000>             .DATA.L     L1780
    000005D0 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000005D4 3EE66666               .DATA.L     H'3EE66666
    000005D8 <00000000>             .DATA.L     L1872
    000005DC <00000000>             .DATA.L     _text_PrintF
    000005E0              L2145:                            
      hud_text.c   314                    } else {
      hud_text.c   315  E                         if( _nBoosterCounter >= 30  ) 
                         +{ 
    000005E0 6191                   MOV.W       @R9,R1
    000005E2 E31E                   MOV         #30,R3
    000005E4 611D                   EXTU.W      R1,R1
    000005E6 3133                   CMP/GE      R3,R1
    000005E8 8B04                   BF          L2142
      hud_text.c   316                                    /* auto kill this part
                         +icular message */
      hud_text.c   317                                    _nBoosterCounter = 0;
    000005EA E100                   MOV         #0,R1
    000005EC 2911                   MOV.W       R1,@R9
      hud_text.c   318  E                                 hud_text_SetFlag( 0, H
                         +UD_TEXT_FLAGS_LBOOSTER );
    000005EE 957F                   MOV.W       L2253,R5   ; H'4000
    000005F0 B32E                   BSR         _hud_text_SetFlag
    000005F2 6413                   MOV         R1,R4
    000005F4              L2142:                            
    000005F4 C73F                   MOVA        L2253+4,R0
    000005F6 F2EC                   FMOV.S      FR14,FR2
    000005F8 F308                   FMOV.S      @R0,FR3
    000005FA E018                   MOV         #24,R0
    000005FC F230                   FADD        FR3,FR2
    000005FE FF27                   FMOV.S      FR2,@(R0,R15)
    00000600 D33D                   MOV.L       L2253+8,R3 ; H'00008000
    00000602 62C2                   MOV.L       @R12,R2
    00000604 2238                   TST         R3,R2
    00000606 8B01                   BF          L2254
    00000608 A15F                   BRA         L2148
    0000060A 0009                   NOP
    0000060C              L2254:                            
    0000060C D43B                   MOV.L       L2253+12,R4; L1806
    0000060E D23D                   MOV.L       L2253+20,R2; L1799
    00000610 6142                   MOV.L       @R4,R1
    00000612 D93B                   MOV.L       L2253+16,R9; L1802
    00000614 2118                   TST         R1,R1
    00000616 8F02                   BF/S        L2255
    00000618 F528                   FMOV.S      @R2,FR5
    0000061A A07F                   BRA         L2149
    0000061C 0009                   NOP
    0000061E              L2255:                            
      hud_text.c   319                            }
      hud_text.c   320                    }
      hud_text.c   321            }
      hud_text.c   322    
      hud_text.c   323            if( _nDrawFlags & HUD_TEXT_FLAGS_SPLIT_TIME ) 
                         +{
      hud_text.c   324                    if( _bSlideOn ) {
      hud_text.c   325  E                         if( _fBestX1 != 445.0f ) {
    0000061E F5D4                   FCMP/EQ     FR13,FR5
    00000620 C739                   MOVA        L2253+24,R0
    00000622 8D10                   BT/S        L2150
    00000624 F408                   FMOV.S      @R0,FR4
      hud_text.c   326  E                                 _fBestX1 += ( ( 445.0f
                         + - (_fBestX1) ) * 0.30f );
    00000626 F1DC                   FMOV.S      FR13,FR1
    00000628 F151                   FSUB        FR5,FR1
    0000062A D136                   MOV.L       L2253+20,R1; L1799
    0000062C C737                   MOVA        L2253+28,R0
    0000062E F008                   FMOV.S      @R0,FR0
    00000630 F318                   FMOV.S      @R1,FR3
    00000632 6313                   MOV         R1,R3
    00000634 F31E                   FMAC        FR0,FR1,FR3
    00000636 F33A                   FMOV.S      FR3,@R3
      hud_text.c   327  E                                 fTemp = 445.0f - _fBes
                         +tX1;
    00000638 F318                   FMOV.S      @R1,FR3
    0000063A F5DC                   FMOV.S      FR13,FR5
    0000063C F531                   FSUB        FR3,FR5
      hud_text.c   328                                    if( fTemp > -0.5f ) {
    0000063E F545                   FCMP/GT     FR4,FR5
    00000640 8B01                   BF          L2150
      hud_text.c   329  E                                         _fBestX1 = 445
                         +.0f;
    00000642 D030                   MOV.L       L2253+20,R0; L1799
    00000644 F0DA                   FMOV.S      FR13,@R0
    00000646              L2150:                            
      hud_text.c   330                                    }
      hud_text.c   331                            }
      hud_text.c   332  E                         if( _fBestX2 != 445.0f && _nCh
                         +eckPtCounter > 5 ) {
    00000646 D332                   MOV.L       L2253+32,R3; L1800
    00000648 F338                   FMOV.S      @R3,FR3
    0000064A F3D4                   FCMP/EQ     FR13,FR3
    0000064C 8916                   BT          L2152
    0000064E D031                   MOV.L       L2253+36,R0; L1807
    00000650 E105                   MOV         #5,R1
    00000652 6202                   MOV.L       @R0,R2
    00000654 3216                   CMP/HI      R1,R2
    00000656 8B11                   BF          L2152
      hud_text.c   333  E                                 _fBestX2 += ( ( 445.0f
                         + - (_fBestX2) ) * 0.30f );
    00000658 D32D                   MOV.L       L2253+32,R3; L1800
    0000065A C72C                   MOVA        L2253+28,R0
    0000065C F3DC                   FMOV.S      FR13,FR3
    0000065E F038                   FMOV.S      @R3,FR0
    00000660 6233                   MOV         R3,R2
    00000662 F228                   FMOV.S      @R2,FR2
    00000664 6133                   MOV         R3,R1
    00000666 F301                   FSUB        FR0,FR3
    00000668 F008                   FMOV.S      @R0,FR0
      hud_text.c   334  E                                 fTemp = 445.0f - _fBes
                         +tX2;
    0000066A F5DC                   FMOV.S      FR13,FR5
    0000066C F23E                   FMAC        FR0,FR3,FR2
    0000066E F32C                   FMOV.S      FR2,FR3
    00000670 F531                   FSUB        FR3,FR5
      hud_text.c   335                                    if( fTemp > -0.5f ) {
    00000672 F545                   FCMP/GT     FR4,FR5
    00000674 8F02                   BF/S        L2152
    00000676 F12A                   FMOV.S      FR2,@R1
      hud_text.c   336  E                                         _fBestX2 = 445
                         +.0f;
    00000678 D025                   MOV.L       L2253+32,R0; L1800
    0000067A F0DA                   FMOV.S      FR13,@R0
    0000067C              L2152:                            
      hud_text.c   337                                    }
      hud_text.c   338                            }
      hud_text.c   339  E                         if( _fYourX1 != 445.0f && _nCh
                         +eckPtCounter > 10 ) {
    0000067C D326                   MOV.L       L2253+40,R3; L1801
    0000067E F338                   FMOV.S      @R3,FR3
    00000680 F3D4                   FCMP/EQ     FR13,FR3
    00000682 8916                   BT          L2154
    00000684 D023                   MOV.L       L2253+36,R0; L1807
    00000686 E10A                   MOV         #10,R1
    00000688 6202                   MOV.L       @R0,R2
    0000068A 3216                   CMP/HI      R1,R2
    0000068C 8B11                   BF          L2154
      hud_text.c   340  E                                 _fYourX1 += ( ( 445.0f
                         + - (_fYourX1) ) * 0.30f );
    0000068E D322                   MOV.L       L2253+40,R3; L1801
    00000690 C71E                   MOVA        L2253+28,R0
    00000692 F3DC                   FMOV.S      FR13,FR3
    00000694 F038                   FMOV.S      @R3,FR0
    00000696 6233                   MOV         R3,R2
    00000698 F228                   FMOV.S      @R2,FR2
    0000069A 6133                   MOV         R3,R1
    0000069C F301                   FSUB        FR0,FR3
    0000069E F008                   FMOV.S      @R0,FR0
      hud_text.c   341  E                                 fTemp = 445.0f - _fYou
                         +rX1;
    000006A0 F5DC                   FMOV.S      FR13,FR5
    000006A2 F23E                   FMAC        FR0,FR3,FR2
    000006A4 F32C                   FMOV.S      FR2,FR3
    000006A6 F531                   FSUB        FR3,FR5
      hud_text.c   342                                    if( fTemp > -0.5f ) {
    000006A8 F545                   FCMP/GT     FR4,FR5
    000006AA 8F02                   BF/S        L2154
    000006AC F12A                   FMOV.S      FR2,@R1
      hud_text.c   343  E                                         _fYourX1 = 445
                         +.0f;
    000006AE D01A                   MOV.L       L2253+40,R0; L1801
    000006B0 F0DA                   FMOV.S      FR13,@R0
    000006B2              L2154:                            
      hud_text.c   344                                    }
      hud_text.c   345                            }
      hud_text.c   346  E                         if( _fYourX2 != 445.0f && _nCh
                         +eckPtCounter > 15 ) {
    000006B2 F398                   FMOV.S      @R9,FR3
    000006B4 F3D4                   FCMP/EQ     FR13,FR3
    000006B6 8B01                   BF          L2256
    000006B8 A09E                   BRA         L2158
    000006BA 0009                   NOP
    000006BC              L2256:                            
    000006BC D115                   MOV.L       L2253+36,R1; L1807
    000006BE E20F                   MOV         #15,R2
    000006C0 6312                   MOV.L       @R1,R3
    000006C2 3326                   CMP/HI      R2,R3
    000006C4 8901                   BT          L2257
    000006C6 A097                   BRA         L2158
    000006C8 0009                   NOP
    000006CA              L2257:                            
      hud_text.c   347  E                                 _fYourX2 += ( ( 445.0f
                         + - (_fYourX2) ) * 0.30f );
    000006CA F098                   FMOV.S      @R9,FR0
    000006CC C70F                   MOVA        L2253+28,R0
    000006CE F3DC                   FMOV.S      FR13,FR3
    000006D0 F301                   FSUB        FR0,FR3
    000006D2 F298                   FMOV.S      @R9,FR2
    000006D4 F008                   FMOV.S      @R0,FR0
      hud_text.c   348  E                                 fTemp = 445.0f - _fYou
                         +rX2;
    000006D6 F5DC                   FMOV.S      FR13,FR5
    000006D8 F23E                   FMAC        FR0,FR3,FR2
    000006DA F32C                   FMOV.S      FR2,FR3
    000006DC F531                   FSUB        FR3,FR5
      hud_text.c   349                                    if( fTemp > -0.5f ) {
    000006DE F545                   FCMP/GT     FR4,FR5
    000006E0 8D02                   BT/S        L2258
    000006E2 F92A                   FMOV.S      FR2,@R9
    000006E4 A088                   BRA         L2158
    000006E6 0009                   NOP
    000006E8              L2258:                            
      hud_text.c   350  E                                         _fYourX2 = 445
                         +.0f;
      hud_text.c   351  E                                         _bSlideOn = 0;
    000006E8 E200                   MOV         #0,R2
    000006EA F9DA                   FMOV.S      FR13,@R9
    000006EC A084                   BRA         L2158
    000006EE 2422                   MOV.L       R2,@R4
    000006F0              L2253:                            
    000006F0 4000                   .DATA.W     H'4000
    000006F2 00000002               .RES.W      1
    000006F4 432F0000               .DATA.L     H'432F0000
    000006F8 00008000               .DATA.L     H'00008000
    000006FC <00000000>             .DATA.L     L1806
    00000700 <00000000>             .DATA.L     L1802
    00000704 <00000000>             .DATA.L     L1799
    00000708 BF000000               .DATA.L     H'BF000000
    0000070C 3E999999               .DATA.L     H'3E999999
    00000710 <00000000>             .DATA.L     L1800
    00000714 <00000000>             .DATA.L     L1807
    00000718 <00000000>             .DATA.L     L1801
    0000071C              L2149:                            
      hud_text.c   352                                    }
      hud_text.c   353                            }
      hud_text.c   354                    } else {
      hud_text.c   355  E                         if( _fBestX1 != 570.0f && _nCh
                         +eckPtCounter > 130 ) {
    0000071C C749                   MOVA        L2259+8,R0
    0000071E F408                   FMOV.S      @R0,FR4
    00000720 F544                   FCMP/EQ     FR4,FR5
    00000722 8916                   BT          L2159
    00000724 D348                   MOV.L       L2259+12,R3; L1807
    00000726 9089                   MOV.W       L2259,R0   ; H'0082
    00000728 6132                   MOV.L       @R3,R1
    0000072A 3106                   CMP/HI      R0,R1
    0000072C 8B11                   BF          L2159
      hud_text.c   356  E                                 _fBestX1 += ( ( 570.0f
                         + - (_fBestX1) ) * 0.30f ) ;
    0000072E F34C                   FMOV.S      FR4,FR3
    00000730 F351                   FSUB        FR5,FR3
    00000732 D347                   MOV.L       L2259+20,R3; L1799
    00000734 C745                   MOVA        L2259+16,R0
    00000736 F008                   FMOV.S      @R0,FR0
      hud_text.c   357  E                                 fTemp = 570.0f - _fBes
                         +tX1;
      hud_text.c   358                                    if( fTemp < 0.5f ) {
    00000738 C746                   MOVA        L2259+24,R0
    0000073A F238                   FMOV.S      @R3,FR2
    0000073C 6233                   MOV         R3,R2
    0000073E F23E                   FMAC        FR0,FR3,FR2
    00000740 F22A                   FMOV.S      FR2,@R2
    00000742 F54C                   FMOV.S      FR4,FR5
    00000744 F32C                   FMOV.S      FR2,FR3
    00000746 F531                   FSUB        FR3,FR5
    00000748 F208                   FMOV.S      @R0,FR2
    0000074A F255                   FCMP/GT     FR5,FR2
    0000074C 8B01                   BF          L2159
      hud_text.c   359  E                                         _fBestX1 = 570
                         +.0f;
    0000074E D140                   MOV.L       L2259+20,R1; L1799
    00000750 F14A                   FMOV.S      FR4,@R1
    00000752              L2159:                            
    00000752 D341                   MOV.L       L2259+28,R3; L1800
    00000754 F538                   FMOV.S      @R3,FR5
    00000756 F544                   FCMP/EQ     FR4,FR5
    00000758 8916                   BT          L2161
    0000075A D03B                   MOV.L       L2259+12,R0; L1807
    0000075C 916F                   MOV.W       L2259+2,R1 ; H'0087
    0000075E 6202                   MOV.L       @R0,R2
    00000760 3216                   CMP/HI      R1,R2
    00000762 8B11                   BF          L2161
      hud_text.c   360                                    }
      hud_text.c   361                            }
      hud_text.c   362  E                         if( _fBestX2 != 570.0f && _nCh
                         +eckPtCounter > 135 ) {
      hud_text.c   363  E                                 _fBestX2 += ( ( 570.0f
                         + - (_fBestX2) ) * 0.30f ) ;
    00000764 F34C                   FMOV.S      FR4,FR3
    00000766 F351                   FSUB        FR5,FR3
    00000768 D33B                   MOV.L       L2259+28,R3; L1800
    0000076A C738                   MOVA        L2259+16,R0
    0000076C F008                   FMOV.S      @R0,FR0
      hud_text.c   364  E                                 fTemp = 570.0f - _fBes
                         +tX2;
      hud_text.c   365                                    if( fTemp < 0.5f ) {
    0000076E C739                   MOVA        L2259+24,R0
    00000770 F238                   FMOV.S      @R3,FR2
    00000772 6233                   MOV         R3,R2
    00000774 F23E                   FMAC        FR0,FR3,FR2
    00000776 F22A                   FMOV.S      FR2,@R2
    00000778 F54C                   FMOV.S      FR4,FR5
    0000077A F32C                   FMOV.S      FR2,FR3
    0000077C F531                   FSUB        FR3,FR5
    0000077E F208                   FMOV.S      @R0,FR2
    00000780 F255                   FCMP/GT     FR5,FR2
    00000782 8B01                   BF          L2161
      hud_text.c   366  E                                         _fBestX2 = 570
                         +.0f;
    00000784 D134                   MOV.L       L2259+28,R1; L1800
    00000786 F14A                   FMOV.S      FR4,@R1
    00000788              L2161:                            
    00000788 D334                   MOV.L       L2259+32,R3; L1801
    0000078A F538                   FMOV.S      @R3,FR5
    0000078C F544                   FCMP/EQ     FR4,FR5
    0000078E 8916                   BT          L2163
    00000790 D02D                   MOV.L       L2259+12,R0; L1807
    00000792 9155                   MOV.W       L2259+4,R1 ; H'008C
    00000794 6202                   MOV.L       @R0,R2
    00000796 3216                   CMP/HI      R1,R2
    00000798 8B11                   BF          L2163
      hud_text.c   367                                    }
      hud_text.c   368                            }
      hud_text.c   369  E                         if( _fYourX1 != 570.0f && _nCh
                         +eckPtCounter > 140 ) {
      hud_text.c   370  E                                 _fYourX1 += ( ( 570.0f
                         + - (_fYourX1) ) * 0.30f ) ;
    0000079A F34C                   FMOV.S      FR4,FR3
    0000079C F351                   FSUB        FR5,FR3
    0000079E D32F                   MOV.L       L2259+32,R3; L1801
    000007A0 C72A                   MOVA        L2259+16,R0
    000007A2 F008                   FMOV.S      @R0,FR0
      hud_text.c   371  E                                 fTemp = 570.0f - _fYou
                         +rX1;
      hud_text.c   372                                    if( fTemp < 0.5f ) {
    000007A4 C72B                   MOVA        L2259+24,R0
    000007A6 F238                   FMOV.S      @R3,FR2
    000007A8 6233                   MOV         R3,R2
    000007AA F23E                   FMAC        FR0,FR3,FR2
    000007AC F22A                   FMOV.S      FR2,@R2
    000007AE F54C                   FMOV.S      FR4,FR5
    000007B0 F32C                   FMOV.S      FR2,FR3
    000007B2 F531                   FSUB        FR3,FR5
    000007B4 F208                   FMOV.S      @R0,FR2
    000007B6 F255                   FCMP/GT     FR5,FR2
    000007B8 8B01                   BF          L2163
      hud_text.c   373  E                                         _fYourX1 = 570
                         +.0f;
    000007BA D128                   MOV.L       L2259+32,R1; L1801
    000007BC F14A                   FMOV.S      FR4,@R1
    000007BE              L2163:                            
      hud_text.c   374                                    }
      hud_text.c   375                            }
      hud_text.c   376  E                         if( _fYourX2 != 570.0f && _nCh
                         +eckPtCounter > 145 ) {
    000007BE F398                   FMOV.S      @R9,FR3
    000007C0 F344                   FCMP/EQ     FR4,FR3
    000007C2 8919                   BT          L2158
    000007C4 D120                   MOV.L       L2259+12,R1; L1807
    000007C6 923C                   MOV.W       L2259+6,R2 ; H'0091
    000007C8 6312                   MOV.L       @R1,R3
    000007CA 3326                   CMP/HI      R2,R3
    000007CC 8B14                   BF          L2158
      hud_text.c   377  E                                 _fYourX2 += ( ( 570.0f
                         + - (_fYourX2) ) * 0.30f ) ;
    000007CE F098                   FMOV.S      @R9,FR0
    000007D0 C71E                   MOVA        L2259+16,R0
    000007D2 F34C                   FMOV.S      FR4,FR3
    000007D4 F301                   FSUB        FR0,FR3
    000007D6 F298                   FMOV.S      @R9,FR2
    000007D8 F008                   FMOV.S      @R0,FR0
      hud_text.c   378  E                                 fTemp = 570.0f - _fYou
                         +rX2;
      hud_text.c   379                                    if( fTemp < 0.5f ) {
    000007DA C71E                   MOVA        L2259+24,R0
    000007DC F23E                   FMAC        FR0,FR3,FR2
    000007DE F92A                   FMOV.S      FR2,@R9
    000007E0 F54C                   FMOV.S      FR4,FR5
    000007E2 F32C                   FMOV.S      FR2,FR3
    000007E4 F531                   FSUB        FR3,FR5
    000007E6 F208                   FMOV.S      @R0,FR2
    000007E8 F255                   FCMP/GT     FR5,FR2
    000007EA 8B05                   BF          L2158
      hud_text.c   380  E                                         _fYourX2 = 570
                         +.0f;
      hud_text.c   381  E                                         _bSlideOn = 0;
    000007EC E200                   MOV         #0,R2
    000007EE F94A                   FMOV.S      FR4,@R9
    000007F0 2422                   MOV.L       R2,@R4
      hud_text.c   382                                            /* auto kill t
                         +his particular message */
      hud_text.c   383  E                                         hud_text_SetFl
                         +ag( 0, HUD_TEXT_FLAGS_SPLIT_TIME );
    000007F2 D51B                   MOV.L       L2259+36,R5; H'00008000
    000007F4 B22C                   BSR         _hud_text_SetFlag
    000007F6 6423                   MOV         R2,R4
    000007F8              L2158:                            
      hud_text.c   384                                    }
      hud_text.c   385                            }
      hud_text.c   386                    }
      hud_text.c   387    
      hud_text.c   388                    ++_nCheckPtCounter;
    000007F8 D413                   MOV.L       L2259+12,R4; L1807
    000007FA 6242                   MOV.L       @R4,R2
    000007FC 7201                   ADD         #1,R2
    000007FE 2422                   MOV.L       R2,@R4
      hud_text.c   389                    /* now draw the words */
      hud_text.c   390                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    00000800 4B0B                   JSR         @R11
    00000802 E40D                   MOV         #13,R4
      hud_text.c   391                    Text_fScale = 0.30f;
    00000804 C711                   MOVA        L2259+16,R0
    00000806 F308                   FMOV.S      @R0,FR3
      hud_text.c   392  E                 text_PrintStr( _fBestX1 + fDx, 175.0f 
                         ++ fDy, "BEST TIME\n" );
    00000808 E018                   MOV         #24,R0
    0000080A FD3A                   FMOV.S      FR3,@R13
    0000080C D310                   MOV.L       L2259+20,R3; L1799
    0000080E F5F6                   FMOV.S      @(R0,R15),FR5
    00000810 F438                   FMOV.S      @R3,FR4
    00000812 D414                   MOV.L       L2259+40,R4; L1898
    00000814 4E0B                   JSR         @R14
    00000816 F4F0                   FADD        FR15,FR4
      hud_text.c   393  E                 text_PrintStr( _fYourX1 + fDx, 215.0f 
                         + + fDy, "YOUR TIME\n" );
    00000818 C714                   MOVA        L2259+48,R0
    0000081A F5EC                   FMOV.S      FR14,FR5
    0000081C F308                   FMOV.S      @R0,FR3
    0000081E D30F                   MOV.L       L2259+32,R3; L1801
    00000820 F530                   FADD        FR3,FR5
    00000822 D411                   MOV.L       L2259+44,R4; L1899
    00000824 F438                   FMOV.S      @R3,FR4
    00000826 4E0B                   JSR         @R14
    00000828 F4F0                   FADD        FR15,FR4
      hud_text.c   394                    /* now draw the times */
      hud_text.c   395                    mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.
                         +0f, 1.0f, 0.0f );
    0000082A D211                   MOV.L       L2259+52,
                        +                                  R2; _mesh3d_SetOrthoEffe
                        +                                  cts
    0000082C F5CC                   FMOV.S      FR12,FR5
    0000082E F6CC                   FMOV.S      FR12,FR6
    00000830 F88D                   FLDI0       FR8
    00000832 F7CC                   FMOV.S      FR12,FR7
    00000834 420B                   JSR         @R2
    00000836 F4CC                   FMOV.S      FR12,FR4
      hud_text.c   396  E                 _DrawTime( _fBestTime, _fBestX2 + fDx 
                         +- 275.0f, ( -195.0f + 200.0f ) + fDy, 0.65f );
    00000838 A01C                   BRA         L2240
    0000083A 0009                   NOP
    0000083C              L2259:                            
    0000083C 0082                   .DATA.W     H'0082
    0000083E 0087                   .DATA.W     H'0087
    00000840 008C                   .DATA.W     H'008C
    00000842 0091                   .DATA.W     H'0091
    00000844 440E8000               .DATA.L     H'440E8000
    00000848 <00000000>             .DATA.L     L1807
    0000084C 3E999999               .DATA.L     H'3E999999
    00000850 <00000000>             .DATA.L     L1799
    00000854 3F000000               .DATA.L     H'3F000000
    00000858 <00000000>             .DATA.L     L1800
    0000085C <00000000>             .DATA.L     L1801
    00000860 00008000               .DATA.L     H'00008000
    00000864 <00000000>             .DATA.L     L1898
    00000868 <00000000>             .DATA.L     L1899
    0000086C 43570000               .DATA.L     H'43570000
    00000870 <00000000>             .DATA.L     _mesh3d_SetOrthoEffects
    00000874              L2240:                            
    00000874 D33C                   MOV.L       L2260+14,R3; L1800
    00000876 C73A                   MOVA        L2260+6,R0
    00000878 F708                   FMOV.S      @R0,FR7
    0000087A C73A                   MOVA        L2260+10,R0
    0000087C F238                   FMOV.S      @R3,FR2
    0000087E F308                   FMOV.S      @R0,FR3
    00000880 C73A                   MOVA        L2260+18,R0
    00000882 F2F0                   FADD        FR15,FR2
    00000884 F108                   FMOV.S      @R0,FR1
    00000886 F6EC                   FMOV.S      FR14,FR6
    00000888 F630                   FADD        FR3,FR6
    0000088A D239                   MOV.L       L2260+22,R2; L1804
    0000088C F52C                   FMOV.S      FR2,FR5
    0000088E F510                   FADD        FR1,FR5
    00000890 B298                   BSR         L1818
    00000892 F428                   FMOV.S      @R2,FR4
      hud_text.c   397                    if( (_bNewHighScore && _Flash3On3Off()
                         + ) || !_bNewHighScore ) {
    00000894 D137                   MOV.L       L2260+26,R1; L1805
    00000896 6312                   MOV.L       @R1,R3
    00000898 2338                   TST         R3,R3
    0000089A 8903                   BT          L2169
    0000089C B264                   BSR         L1815
    0000089E 0009                   NOP
    000008A0 2008                   TST         R0,R0
    000008A2 8B03                   BF          L2168
    000008A4              L2169:                            
    000008A4 D133                   MOV.L       L2260+26,R1; L1805
    000008A6 6312                   MOV.L       @R1,R3
    000008A8 2338                   TST         R3,R3
    000008AA 8B0E                   BF          L2148
    000008AC              L2168:                            
      hud_text.c   398  E                         _DrawTime( _fYourTime, _fYourX
                         +2 + fDx - 275.0f, ( -235.0f + 200.0f )  + fDy, 0.65f )
                         +;
    000008AC F298                   FMOV.S      @R9,FR2
    000008AE C72C                   MOVA        L2260+6,R0
    000008B0 F708                   FMOV.S      @R0,FR7
    000008B2 C731                   MOVA        L2260+30,R0
    000008B4 F2F0                   FADD        FR15,FR2
    000008B6 F308                   FMOV.S      @R0,FR3
    000008B8 C72C                   MOVA        L2260+18,R0
    000008BA F6EC                   FMOV.S      FR14,FR6
    000008BC F108                   FMOV.S      @R0,FR1
    000008BE F630                   FADD        FR3,FR6
    000008C0 D32E                   MOV.L       L2260+34,R3; L1803
    000008C2 F52C                   FMOV.S      FR2,FR5
    000008C4 F510                   FADD        FR1,FR5
    000008C6 B27D                   BSR         L1818
    000008C8 F438                   FMOV.S      @R3,FR4
    000008CA              L2148:                            
      hud_text.c   399                    }
      hud_text.c   400            }
      hud_text.c   401    
      hud_text.c   402            if( _nDrawFlags & HUD_TEXT_FLAGS_FINISH_STATS 
                         +) {
    000008CA 62C2                   MOV.L       @R12,R2
    000008CC 9345                   MOV.W       L2260,R3   ; H'0100
    000008CE 2238                   TST         R3,R2
    000008D0 8B01                   BF          L2261
    000008D2 A0FA                   BRA         L2170
    000008D4 0009                   NOP
    000008D6              L2261:                            
      hud_text.c   403                    text_SetStyle( FSTYLE_CENTER | FSTYLE_
                         +PITCHED );
    000008D6 4B0B                   JSR         @R11
    000008D8 E40D                   MOV         #13,R4
      hud_text.c   404                    fX = Viewport_half_hres_f + fDx;
      hud_text.c   405                    
      hud_text.c   406                    /* draw the place */
      hud_text.c   407                    Text_fScale = 1.6f;
    000008DA C729                   MOVA        L2260+38,R0
    000008DC FDA8                   FMOV.S      @R10,FR13
    000008DE F308                   FMOV.S      @R0,FR3
    000008E0 FDF0                   FADD        FR15,FR13
    000008E2 FD3A                   FMOV.S      FR3,@R13
      hud_text.c   408  E                 text_PrintNumber( fX, 195.0f + fDy, Pl
                         +ayer_aData[Player_nHuman].nPlace );
    000008E4 D127                   MOV.L       L2260+42,R1; _Player_nHuman
    000008E6 9339                   MOV.W       L2260+2,R3 ; H'01F0
    000008E8 6211                   MOV.W       @R1,R2
    000008EA D027                   MOV.L       L2260+46,
                        +                                  R0; H'00000020+_Player_a
                        +                                  Data
    000008EC 223F                   MULS        R3,R2
    000008EE F5EC                   FMOV.S      FR14,FR5
    000008F0 D227                   MOV.L       L2260+54,R2; _text_PrintNumber
    000008F2 041A                   STS         MACL,R4
    000008F4 644F                   EXTS.W      R4,R4
    000008F6 044E                   MOV.L       @(R0,R4),R4
    000008F8 C724                   MOVA        L2260+50,R0
    000008FA F308                   FMOV.S      @R0,FR3
    000008FC F530                   FADD        FR3,FR5
    000008FE 420B                   JSR         @R2
    00000900 F4DC                   FMOV.S      FR13,FR4
      hud_text.c   409                    /* draw the st,nd,rd,th after the plac
                         +e */
      hud_text.c   410                    Text_fScale = 0.45f;
    00000902 C724                   MOVA        L2260+58,R0
    00000904 F308                   FMOV.S      @R0,FR3
    00000906 FD3A                   FMOV.S      FR3,@R13
      hud_text.c   411  E                 fY = ( Player_aData[Player_nHuman].nPl
                         +ace < 10 ) ? 315.0f + fDx : 330.0f  + fDx;
    00000908 D11E                   MOV.L       L2260+42,R1; _Player_nHuman
    0000090A 9327                   MOV.W       L2260+2,R3 ; H'01F0
    0000090C 6211                   MOV.W       @R1,R2
    0000090E D01E                   MOV.L       L2260+46,
                        +                                  R0; H'00000020+_Player_a
                        +                                  Data
    00000910 223F                   MULS        R3,R2
    00000912 E20A                   MOV         #10,R2
    00000914 041A                   STS         MACL,R4
    00000916 644F                   EXTS.W      R4,R4
    00000918 044E                   MOV.L       @(R0,R4),R4
    0000091A 3422                   CMP/HS      R2,R4
    0000091C 8D03                   BT/S        L2171
    0000091E F4FC                   FMOV.S      FR15,FR4
    00000920 C71D                   MOVA        L2260+62,R0
    00000922 A002                   BRA         L2235
    00000924 F308                   FMOV.S      @R0,FR3
    00000926              L2171:                            
    00000926 C71D                   MOVA        L2260+66,R0
    00000928 F308                   FMOV.S      @R0,FR3
    0000092A              L2235:                            
    0000092A F430                   FADD        FR3,FR4
    0000092C C71C                   MOVA        L2260+70,R0
    0000092E F308                   FMOV.S      @R0,FR3
    00000930 F5EC                   FMOV.S      FR14,FR5
    00000932 6043                   MOV         R4,R0
    00000934 0009                   NOP
    00000936 8801                   CMP/EQ      #1,R0
    00000938 8D06                   BT/S        L2066
    0000093A F530                   FADD        FR3,FR5
    0000093C 8802                   CMP/EQ      #2,R0
    0000093E 8906                   BT          L2068
    00000940 8803                   CMP/EQ      #3,R0
    00000942 8907                   BT          L2070
    00000944 A034                   BRA         L2072
    00000946 0009                   NOP
    00000948              L2066:                           ; case label 
      hud_text.c   412                    switch( Player_aData[Player_nHuman].nP
                         +lace )
      hud_text.c   413                    {
      hud_text.c   414                    case 1:
      hud_text.c   415                            /* "st" */
      hud_text.c   416  E                         text_PrintStr( fY, 167.0f + fD
                         +y, "ST\n" );
    00000948 D416                   MOV.L       L2260+74,R4; L1903
      hud_text.c   417                            break;
    0000094A A032                   BRA         L2238
    0000094C 0009                   NOP
    0000094E              L2068:                           ; case label 
      hud_text.c   418                    case 2:
      hud_text.c   419                            /* "nd" */
      hud_text.c   420  E                         text_PrintStr( fY, 167.0f + fD
                         +y, "ND\n" );
    0000094E D416                   MOV.L       L2260+78,R4; L1904
      hud_text.c   421                            break;
    00000950 A02F                   BRA         L2238
    00000952 0009                   NOP
    00000954              L2070:                           ; case label 
      hud_text.c   422                    case 3:
      hud_text.c   423                            /* "rd" */
      hud_text.c   424  E                         text_PrintStr( fY, 167.0f + fD
                         +y, "RD\n" );
    00000954 D415                   MOV.L       L2260+82,R4; L1905
      hud_text.c   425                            break;
    00000956 A02C                   BRA         L2238
    00000958 0009                   NOP
    0000095A              L2260:                            
    0000095A 0100                   .DATA.W     H'0100
    0000095C 01F0                   .DATA.W     H'01F0
    0000095E 00000002               .RES.W      1
    00000960 3F266666               .DATA.L     H'3F266666
    00000964 40A00000               .DATA.L     H'40A00000
    00000968 <00000000>             .DATA.L     L1800
    0000096C C3898000               .DATA.L     H'C3898000
    00000970 <00000000>             .DATA.L     L1804
    00000974 <00000000>             .DATA.L     L1805
    00000978 C20C0000               .DATA.L     H'C20C0000
    0000097C <00000000>             .DATA.L     L1803
    00000980 3FCCCCCC               .DATA.L     H'3FCCCCCC
    00000984 <00000000>             .DATA.L     _Player_nHuman
    00000988 <00000020>             .DATA.L     H'00000020+_Player_aData
    0000098C 43430000               .DATA.L     H'43430000
    00000990 <00000000>             .DATA.L     _text_PrintNumber
    00000994 3EE66666               .DATA.L     H'3EE66666
    00000998 439D8000               .DATA.L     H'439D8000
    0000099C 43A50000               .DATA.L     H'43A50000
    000009A0 43270000               .DATA.L     H'43270000
    000009A4 <00000000>             .DATA.L     L1903
    000009A8 <00000000>             .DATA.L     L1904
    000009AC <00000000>             .DATA.L     L1905
    000009B0              L2072:                           ; default label 
      hud_text.c   426                    default:
      hud_text.c   427                            /* "th" */
      hud_text.c   428  E                         text_PrintStr( fY, 167.0f + fD
                         +y, "TH\n" );
    000009B0 D431                   MOV.L       L2262+2,R4 ; L1906
      hud_text.c   429                            break;
    000009B2              L2238:                            
    000009B2 4E0B                   JSR         @R14
    000009B4 0009                   NOP
      hud_text.c   430                    }
      hud_text.c   431                    /* draw the words "best time" */
      hud_text.c   432                    Text_fScale = 0.38f;
    000009B6 C731                   MOVA        L2262+6,R0
    000009B8 F308                   FMOV.S      @R0,FR3
      hud_text.c   433  E                 text_PrintStr( fX, 265.0f + fDy, "BEST
                         + TIME\n" );
    000009BA C732                   MOVA        L2262+14,R0
    000009BC FD3A                   FMOV.S      FR3,@R13
    000009BE F308                   FMOV.S      @R0,FR3
    000009C0 F5EC                   FMOV.S      FR14,FR5
    000009C2 F530                   FADD        FR3,FR5
    000009C4 D42E                   MOV.L       L2262+10,R4; L1898
    000009C6 4E0B                   JSR         @R14
    000009C8 F4DC                   FMOV.S      FR13,FR4
      hud_text.c   434                    /* draw the words "your time" */
      hud_text.c   435                    Text_fScale = 0.38f;
    000009CA C72C                   MOVA        L2262+6,R0
    000009CC F308                   FMOV.S      @R0,FR3
      hud_text.c   436  E                 text_PrintStr( fX, 325.0f + fDy, "YOUR
                         + TIME\n" );
    000009CE C72F                   MOVA        L2262+22,R0
    000009D0 FD3A                   FMOV.S      FR3,@R13
    000009D2 F308                   FMOV.S      @R0,FR3
    000009D4 F5EC                   FMOV.S      FR14,FR5
    000009D6 F530                   FADD        FR3,FR5
    000009D8 D42B                   MOV.L       L2262+18,R4; L1899
    000009DA 4E0B                   JSR         @R14
    000009DC F4DC                   FMOV.S      FR13,FR4
      hud_text.c   437                    
      hud_text.c   438                    mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.
                         +0f, 1.0f, 0.0f );
    000009DE D32C                   MOV.L       L2262+26,
                        +                                  R3; _mesh3d_SetOrthoEffe
                        +                                  cts
    000009E0 F5CC                   FMOV.S      FR12,FR5
    000009E2 F6CC                   FMOV.S      FR12,FR6
    000009E4 F88D                   FLDI0       FR8
    000009E6 F7CC                   FMOV.S      FR12,FR7
    000009E8 430B                   JSR         @R3
    000009EA F4CC                   FMOV.S      FR12,FR4
      hud_text.c   439                    /* draw the best time, and the person'
                         +s initials who scored that time */
      hud_text.c   440  E                 _DrawTime( _fBestFinishTime, -70.0f + 
                         +fDx, -95.0f + fDy, 1.0f );
    000009EC C729                   MOVA        L2262+30,R0
    000009EE F5FC                   FMOV.S      FR15,FR5
    000009F0 F308                   FMOV.S      @R0,FR3
    000009F2 C729                   MOVA        L2262+34,R0
    000009F4 F208                   FMOV.S      @R0,FR2
    000009F6 F6EC                   FMOV.S      FR14,FR6
    000009F8 F630                   FADD        FR3,FR6
    000009FA F520                   FADD        FR2,FR5
    000009FC D327                   MOV.L       L2262+38,R3; L1808
    000009FE F7CC                   FMOV.S      FR12,FR7
    00000A00 B1E0                   BSR         L1818
    00000A02 F438                   FMOV.S      @R3,FR4
      hud_text.c   441  E                 text_PrintStr( 315.0f + fDx, 297.0f + 
                         +fDy, _pszBestTimeInitials );
    00000A04 C727                   MOVA        L2262+46,R0
    00000A06 F5EC                   FMOV.S      FR14,FR5
    00000A08 F308                   FMOV.S      @R0,FR3
    00000A0A C727                   MOVA        L2262+50,R0
    00000A0C F208                   FMOV.S      @R0,FR2
    00000A0E F530                   FADD        FR3,FR5
    00000A10 D423                   MOV.L       L2262+42,R4; L1809
    00000A12 F4FC                   FMOV.S      FR15,FR4
    00000A14 4E0B                   JSR         @R14
    00000A16 F420                   FADD        FR2,FR4
    00000A18 D126                   MOV.L       L2262+62,R1; _Player_nHuman
    00000A1A C724                   MOVA        L2262+54,R0
    00000A1C 932B                   MOV.W       L2262,R3   ; H'01F0
    00000A1E 6211                   MOV.W       @R1,R2
    00000A20 F308                   FMOV.S      @R0,FR3
    00000A22 C723                   MOVA        L2262+58,R0
    00000A24 223F                   MULS        R3,R2
    00000A26 F208                   FMOV.S      @R0,FR2
    00000A28 F6EC                   FMOV.S      FR14,FR6
    00000A2A F630                   FADD        FR3,FR6
    00000A2C F5FC                   FMOV.S      FR15,FR5
    00000A2E F520                   FADD        FR2,FR5
    00000A30 091A                   STS         MACL,R9
    00000A32 D221                   MOV.L       L2262+66,R2; _Player_aData
    00000A34 699F                   EXTS.W      R9,R9
    00000A36 6013                   MOV         R1,R0
    00000A38 0009                   NOP
    00000A3A 6101                   MOV.W       @R0,R1
    00000A3C E030                   MOV         #48,R0
    00000A3E 213F                   MULS        R3,R1
    00000A40 D116                   MOV.L       L2262+38,R1; L1808
    00000A42 F118                   FMOV.S      @R1,FR1
    00000A44 031A                   STS         MACL,R3
    00000A46 633F                   EXTS.W      R3,R3
    00000A48 332C                   ADD         R2,R3
    00000A4A F036                   FMOV.S      @(R0,R3),FR0
    00000A4C F105                   FCMP/GT     FR0,FR1
    00000A4E 8F39                   BF/S        L2174
    00000A50 392C                   ADD         R2,R9
    00000A52 D11A                   MOV.L       L2262+70,R1; L1780
    00000A54 6312                   MOV.L       @R1,R3
    00000A56 2338                   TST         R3,R3
    00000A58 8B04                   BF          L2175
    00000A5A D319                   MOV.L       L2262+74,
                        +                                  R3; _Gameloop_nFrameCoun
                        +                                  ter
    00000A5C 6032                   MOV.L       @R3,R0
    00000A5E C904                   AND         #4,R0
    00000A60 A001                   BRA         L2011
    00000A62 6403                   MOV         R0,R4
    00000A64              L2175:                            
    00000A64 6483                   MOV         R8,R4
    00000A66              L2011:
    00000A66 2448                   TST         R4,R4
    00000A68 892F                   BT          L2170
      hud_text.c   442                    /* draw your time */
      hud_text.c   443                    if( Player_aData[Player_nHuman].fFinis
                         +hTime < _fBestFinishTime ) {
      hud_text.c   444                            if( _Flash4On4Off() ) {
      hud_text.c   445                                    _DrawTime( Player_aDat
                         +a[Player_nHuman].fFinishTime,
      hud_text.c   446  E                                                    -40
                         +.0f + fDx,
      hud_text.c   447  E                                                    -15
                         +5.0f + fDy, 1.0f );
    00000A6A E030                   MOV         #48,R0
    00000A6C F7CC                   FMOV.S      FR12,FR7
    00000A6E B1A9                   BSR         L1818
    00000A70 F496                   FMOV.S      @(R0,R9),FR4
    00000A72 A02A                   BRA         L2170
    00000A74 0009                   NOP
    00000A76              L2262:                            
    00000A76 01F0                   .DATA.W     H'01F0
    00000A78 <00000000>             .DATA.L     L1906
    00000A7C 3EC28F5C               .DATA.L     H'3EC28F5C
    00000A80 <00000000>             .DATA.L     L1898
    00000A84 43848000               .DATA.L     H'43848000
    00000A88 <00000000>             .DATA.L     L1899
    00000A8C 43A28000               .DATA.L     H'43A28000
    00000A90 <00000000>             .DATA.L     _mesh3d_SetOrthoEffects
    00000A94 C2BE0000               .DATA.L     H'C2BE0000
    00000A98 C28C0000               .DATA.L     H'C28C0000
    00000A9C <00000000>             .DATA.L     L1808
    00000AA0 <00000000>             .DATA.L     L1809
    00000AA4 43948000               .DATA.L     H'43948000
    00000AA8 439D8000               .DATA.L     H'439D8000
    00000AAC C31B0000               .DATA.L     H'C31B0000
    00000AB0 C2200000               .DATA.L     H'C2200000
    00000AB4 <00000000>             .DATA.L     _Player_nHuman
    00000AB8 <00000000>             .DATA.L     _Player_aData
    00000ABC <00000000>             .DATA.L     L1780
    00000AC0 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    00000AC4              L2174:                            
      hud_text.c   448                            }
      hud_text.c   449                    } else {
      hud_text.c   450                            _DrawTime( Player_aData[Player
                         +_nHuman].fFinishTime,
      hud_text.c   451  E                                            -40.0f + fD
                         +x,
      hud_text.c   452  E                                            -155.0f + f
                         +Dy, 1.0f );      
    00000AC4 F7CC                   FMOV.S      FR12,FR7
    00000AC6 B17D                   BSR         L1818
    00000AC8 F496                   FMOV.S      @(R0,R9),FR4
    00000ACA              L2170:                            
      hud_text.c   453                    }
      hud_text.c   454            }
      hud_text.c   455    
      hud_text.c   456            if( _nDrawFlags & HUD_TEXT_FLAGS_PUSH_THROTTLE
                         + ) {
    00000ACA 62C2                   MOV.L       @R12,R2
    00000ACC D32B                   MOV.L       L2263+6,R3 ; H'00010000
    00000ACE 2238                   TST         R3,R2
    00000AD0 8B01                   BF          L2264
    00000AD2 A096                   BRA         L2179
    00000AD4 0009                   NOP
    00000AD6              L2264:                            
    00000AD6 D72A                   MOV.L       L2263+10,R7; L1812
    00000AD8 D42C                   MOV.L       L2263+22,R4; L1811
    00000ADA 6272                   MOV.L       @R7,R2
    00000ADC D629                   MOV.L       L2263+14,R6; L1810
    00000ADE D52A                   MOV.L       L2263+18,R5; L1813
    00000AE0 2228                   TST         R2,R2
    00000AE2 8F31                   BF/S        L2180
    00000AE4 F468                   FMOV.S      @R6,FR4
      hud_text.c   457                    if( !_bInitialWait ) {
      hud_text.c   458                            if( !_bDisplay ) {
    00000AE6 6252                   MOV.L       @R5,R2
    00000AE8 2228                   TST         R2,R2
    00000AEA 8B14                   BF          L2181
      hud_text.c   459                                    /* we are not currentl
                         +y displaying the message, see if we need to */
      hud_text.c   460  E                                 if( _fTimer >= 6.0f ) 
                         +{
    00000AEC C728                   MOVA        L2263+26,R0
    00000AEE F308                   FMOV.S      @R0,FR3
    00000AF0 F345                   FCMP/GT     FR4,FR3
    00000AF2 895B                   BT          L2187
      hud_text.c   461                                            _fTimer = 0.0f
                         +;
    00000AF4 F38D                   FLDI0       FR3
    00000AF6 F63A                   FMOV.S      FR3,@R6
      hud_text.c   462                                            if( Player_aDa
                         +ta[Player_nHuman].Phys.nStatusBits & PHYS_STATUSBIT_NE
                         +ED_THROTTLE_HELP ) {
    00000AF8 D026                   MOV.L       L2263+30,R0; _Player_nHuman
    00000AFA 923C                   MOV.W       L2263,R2   ; H'01F0
    00000AFC 6101                   MOV.W       @R0,R1
    00000AFE D026                   MOV.L       L2263+34,
                        +                                  R0; H'00000154+_Player_a
                        +                                  Data
    00000B00 212F                   MULS        R2,R1
    00000B02 9339                   MOV.W       L2263+2,R3 ; H'0800
    00000B04 021A                   STS         MACL,R2
    00000B06 622F                   EXTS.W      R2,R2
    00000B08 012E                   MOV.L       @(R0,R2),R1
    00000B0A 2138                   TST         R3,R1
    00000B0C 894E                   BT          L2187
      hud_text.c   463                                                    /* tur
                         +n on the message now */
      hud_text.c   464  E                                                 _bDisp
                         +lay = 1;
    00000B0E 2582                   MOV.L       R8,@R5
      hud_text.c   465                                                    _fDisp
                         +layTime = 0.0f;
    00000B10 F38D                   FLDI0       FR3
    00000B12 A04B                   BRA         L2187
    00000B14 F43A                   FMOV.S      FR3,@R4
    00000B16              L2181:                            
      hud_text.c   466                                            }
      hud_text.c   467                                    }
      hud_text.c   468                            } else {
      hud_text.c   469                                    /* we are currently di
                         +splaying the message */
      hud_text.c   470                                    _fDisplayTime += Gamel
                         +oop_fTargetFrameTime;
    00000B16 D221                   MOV.L       L2263+38,
                        +                                  R2; _Gameloop_fTargetFra
                        +                                  meTime
      hud_text.c   471  E                                 if( (_fDisplayTime >= 
                         +4.0f) || !( Player_aData[Player_nHuman].Phys.nStatusBi
                         +ts & PHYS_STATUSBIT_NEED_THROTTLE_HELP ) ) {
    00000B18 C721                   MOVA        L2263+42,R0
    00000B1A F248                   FMOV.S      @R4,FR2
    00000B1C F328                   FMOV.S      @R2,FR3
    00000B1E F230                   FADD        FR3,FR2
    00000B20 F42A                   FMOV.S      FR2,@R4
    00000B22 F308                   FMOV.S      @R0,FR3
    00000B24 F325                   FCMP/GT     FR2,FR3
    00000B26 8B0A                   BF          L2186
    00000B28 D31A                   MOV.L       L2263+30,R3; _Player_nHuman
    00000B2A 9124                   MOV.W       L2263,R1   ; H'01F0
    00000B2C 6031                   MOV.W       @R3,R0
    00000B2E 9323                   MOV.W       L2263+2,R3 ; H'0800
    00000B30 201F                   MULS        R1,R0
    00000B32 D019                   MOV.L       L2263+34,
                        +                                  R0; H'00000154+_Player_a
                        +                                  Data
    00000B34 011A                   STS         MACL,R1
    00000B36 611F                   EXTS.W      R1,R1
    00000B38 021E                   MOV.L       @(R0,R1),R2
    00000B3A 2238                   TST         R3,R2
    00000B3C 8B36                   BF          L2187
    00000B3E              L2186:                            
      hud_text.c   472                                            /* turn the di
                         +splay off */
      hud_text.c   473  E                                         _bDisplay = 0;
    00000B3E E300                   MOV         #0,R3
    00000B40 2532                   MOV.L       R3,@R5
      hud_text.c   474                                            _fDisplayTime 
                         += 0.0f;
    00000B42 F38D                   FLDI0       FR3
    00000B44 A032                   BRA         L2187
    00000B46 F43A                   FMOV.S      FR3,@R4
    00000B48              L2180:                            
      hud_text.c   475                                    }
      hud_text.c   476                            }
      hud_text.c   477                    } else {
      hud_text.c   478                            /* we are waiting for the firs
                         +t time period to be up */
      hud_text.c   479  E                         if( _fTimer >= 2.0f ) {
    00000B48 C716                   MOVA        L2263+46,R0
    00000B4A F308                   FMOV.S      @R0,FR3
    00000B4C F345                   FCMP/GT     FR4,FR3
    00000B4E 892D                   BT          L2187
      hud_text.c   480                                    _fTimer = 0.0f;
      hud_text.c   481  E                                 _bInitialWait = 0;
    00000B50 E200                   MOV         #0,R2
    00000B52 F38D                   FLDI0       FR3
    00000B54 F63A                   FMOV.S      FR3,@R6
    00000B56 2722                   MOV.L       R2,@R7
      hud_text.c   482                                    if( Player_aData[Playe
                         +r_nHuman].Phys.nStatusBits & PHYS_STATUSBIT_NEED_THROT
                         +TLE_HELP ) {
    00000B58 D00E                   MOV.L       L2263+30,R0; _Player_nHuman
    00000B5A 920C                   MOV.W       L2263,R2   ; H'01F0
    00000B5C 6101                   MOV.W       @R0,R1
    00000B5E 930B                   MOV.W       L2263+2,R3 ; H'0800
    00000B60 212F                   MULS        R2,R1
    00000B62 D10D                   MOV.L       L2263+34,
                        +                                  R1; H'00000154+_Player_a
                        +                                  Data
    00000B64 001A                   STS         MACL,R0
    00000B66 600F                   EXTS.W      R0,R0
    00000B68 011E                   MOV.L       @(R0,R1),R1
    00000B6A 2138                   TST         R3,R1
    00000B6C 891C                   BT          L2189
      hud_text.c   483                                            /* turn on the
                         + message right now */
      hud_text.c   484  E                                         _bDisplay = 1;
    00000B6E 2582                   MOV.L       R8,@R5
      hud_text.c   485                                            _fDisplayTime 
                         += 0.0f;
    00000B70 F38D                   FLDI0       FR3
    00000B72 A01B                   BRA         L2187
    00000B74 F43A                   FMOV.S      FR3,@R4
    00000B76              L2263:                            
    00000B76 01F0                   .DATA.W     H'01F0
    00000B78 0800                   .DATA.W     H'0800
    00000B7A 00000002               .RES.W      1
    00000B7C 00010000               .DATA.L     H'00010000
    00000B80 <00000000>             .DATA.L     L1812
    00000B84 <00000000>             .DATA.L     L1810
    00000B88 <00000000>             .DATA.L     L1813
    00000B8C <00000000>             .DATA.L     L1811
    00000B90 40C00000               .DATA.L     H'40C00000
    00000B94 <00000000>             .DATA.L     _Player_nHuman
    00000B98 <00000154>             .DATA.L     H'00000154+_Player_aData
    00000B9C <00000000>             .DATA.L     _Gameloop_fTargetFrameTime
    00000BA0 40800000               .DATA.L     H'40800000
    00000BA4 40000000               .DATA.L     H'40000000
    00000BA8              L2189:                            
      hud_text.c   486                                    } else {
      hud_text.c   487  E                                         _bDisplay = 0;
    00000BA8 E000                   MOV         #0,R0
    00000BAA 2502                   MOV.L       R0,@R5
    00000BAC              L2187:                            
      hud_text.c   488                                    }
      hud_text.c   489                            }
      hud_text.c   490                    }
      hud_text.c   491                    _fTimer += Gameloop_fTargetFrameTime; 
    00000BAC D345                   MOV.L       L2265+8,
                        +                                  R3 ; _Gameloop_fTargetFra
                        +                                  meTime
    00000BAE F268                   FMOV.S      @R6,FR2
    00000BB0 F338                   FMOV.S      @R3,FR3
    00000BB2 F230                   FADD        FR3,FR2
    00000BB4 F62A                   FMOV.S      FR2,@R6
      hud_text.c   492    
      hud_text.c   493                    if( _bDisplay ) {
    00000BB6 6252                   MOV.L       @R5,R2
    00000BB8 2228                   TST         R2,R2
    00000BBA 891F                   BT          L2191
      hud_text.c   494  E                         hud_wrongway_EnableText( 0 );
    00000BBC D242                   MOV.L       L2265+12,
                        +                                  R2; _hud_wrongway_Enable
                        +                                  Text
    00000BBE 420B                   JSR         @R2
    00000BC0 E400                   MOV         #0,R4
      hud_text.c   495                            text_SetStyle( FSTYLE_CENTER |
                         + FSTYLE_PITCHED );
    00000BC2 4B0B                   JSR         @R11
    00000BC4 E40D                   MOV         #13,R4
      hud_text.c   496                            Text_fScale = 0.60f;
    00000BC6 C741                   MOVA        L2265+16,R0
    00000BC8 F308                   FMOV.S      @R0,FR3
      hud_text.c   497                            fX = Viewport_half_hres_f + fD
                         +x;
      hud_text.c   498  E                         text_PrintStr( fX, 130.0f + fD
                         +y, "PUSH\n" );
    00000BCA C742                   MOVA        L2265+24,R0
    00000BCC FD3A                   FMOV.S      FR3,@R13
    00000BCE F3FC                   FMOV.S      FR15,FR3
    00000BD0 FFA8                   FMOV.S      @R10,FR15
    00000BD2 F5EC                   FMOV.S      FR14,FR5
    00000BD4 FF30                   FADD        FR3,FR15
    00000BD6 F308                   FMOV.S      @R0,FR3
    00000BD8 D43D                   MOV.L       L2265+20,R4; L1922
    00000BDA F530                   FADD        FR3,FR5
    00000BDC 4E0B                   JSR         @R14
    00000BDE F4FC                   FMOV.S      FR15,FR4
      hud_text.c   499  E                         text_PrintStr( fX, 175.0f + fD
                         +y, "THROTTLE\n" );
    00000BE0 E018                   MOV         #24,R0
    00000BE2 D43D                   MOV.L       L2265+28,R4; L1923
    00000BE4 F5F6                   FMOV.S      @(R0,R15),FR5
    00000BE6 4E0B                   JSR         @R14
    00000BE8 F4FC                   FMOV.S      FR15,FR4
      hud_text.c   500  E                         text_PrintStr( fX, 220.0f + fD
                         +y, "FORWARD!\n" );
    00000BEA C73D                   MOVA        L2265+36,R0
    00000BEC F5EC                   FMOV.S      FR14,FR5
    00000BEE F308                   FMOV.S      @R0,FR3
    00000BF0 D43A                   MOV.L       L2265+32,R4; L1924
    00000BF2 F530                   FADD        FR3,FR5
    00000BF4 4E0B                   JSR         @R14
    00000BF6 F4FC                   FMOV.S      FR15,FR4
    00000BF8 A003                   BRA         L2179
    00000BFA 0009                   NOP
    00000BFC              L2191:                            
      hud_text.c   501                    } else {
      hud_text.c   502  E                         hud_wrongway_EnableText( 1 );
    00000BFC D232                   MOV.L       L2265+12,
                        +                                  R2; _hud_wrongway_Enable
                        +                                  Text
    00000BFE 420B                   JSR         @R2
    00000C00 E401                   MOV         #1,R4
    00000C02              L2179:                            
      hud_text.c   503                    }
      hud_text.c   504            }
      hud_text.c   505            
      hud_text.c   506            text_Flush();
    00000C02 7F20                   ADD         #32,R15
    00000C04 D337                   MOV.L       L2265+40,R3; _text_Flush
    00000C06 4F26                   LDS.L       @R15+,PR
    00000C08 FCF9                   FMOV.S      @R15+,FR12
    00000C0A FDF9                   FMOV.S      @R15+,FR13
    00000C0C FEF9                   FMOV.S      @R15+,FR14
    00000C0E FFF9                   FMOV.S      @R15+,FR15
    00000C10 68F6                   MOV.L       @R15+,R8
    00000C12 69F6                   MOV.L       @R15+,R9
    00000C14 6AF6                   MOV.L       @R15+,R10
    00000C16 6BF6                   MOV.L       @R15+,R11
    00000C18 6CF6                   MOV.L       @R15+,R12
    00000C1A 6DF6                   MOV.L       @R15+,R13
    00000C1C 432B                   JMP         @R3
    00000C1E 6EF6                   MOV.L       @R15+,R14
    00000C20              L2088:                            
      hud_text.c   507    }
    00000C20 7F20                   ADD         #32,R15
    00000C22 4F26                   LDS.L       @R15+,PR
    00000C24 FCF9                   FMOV.S      @R15+,FR12
    00000C26 FDF9                   FMOV.S      @R15+,FR13
    00000C28 FEF9                   FMOV.S      @R15+,FR14
    00000C2A FFF9                   FMOV.S      @R15+,FR15
    00000C2C 68F6                   MOV.L       @R15+,R8
    00000C2E 69F6                   MOV.L       @R15+,R9
    00000C30 6AF6                   MOV.L       @R15+,R10
    00000C32 6BF6                   MOV.L       @R15+,R11
    00000C34 6CF6                   MOV.L       @R15+,R12
    00000C36 6DF6                   MOV.L       @R15+,R13
    00000C38 000B                   RTS
    00000C3A 6EF6                   MOV.L       @R15+,R14
      hud_text.c   508    
      hud_text.c   509    void hud_text_ResetSystem( void ) {
    00000C3C              _hud_text_ResetSystem:           ; function: hud_text_
                        +                                  ResetSystem
                                                           ; frame size=0
      hud_text.c   510            _nDrawFlags = HUD_TEXT_FLAGS_DRAW_NOTHING;
    00000C3C D32A                   MOV.L       L2265+44,R3; L1782
    00000C3E E400                   MOV         #0,R4
    00000C40 2342                   MOV.L       R4,@R3
      hud_text.c   511    
      hud_text.c   512            _nTimeExtendedCounter = 0;
    00000C42 D22A                   MOV.L       L2265+48,R2; L1783
    00000C44 2241                   MOV.W       R4,@R2
      hud_text.c   513            _nBoosterCounter = 0;
    00000C46 D12A                   MOV.L       L2265+52,R1; L1784
    00000C48 2141                   MOV.W       R4,@R1
      hud_text.c   514  E         _bForceOn = 0;
    00000C4A D32A                   MOV.L       L2265+56,R3; L1780
      hud_text.c   515    }
    00000C4C 000B                   RTS
    00000C4E 2342                   MOV.L       R4,@R3
      hud_text.c   516    
      hud_text.c   517  E void hud_text_SetFlag( int bEnable, u32 nFlag ) {
    00000C50              _hud_text_SetFlag:               ; function: hud_text_
                        +                                  SetFlag
                                                           ; frame size=12
    00000C50 2FE6                   MOV.L       R14,@-R15
    00000C52 6E53                   MOV         R5,R14
    00000C54 2FD6                   MOV.L       R13,@-R15
      hud_text.c   518            if( bEnable ) {
    00000C56 2448                   TST         R4,R4
    00000C58 4F22                   STS.L       PR,@-R15
    00000C5A D523                   MOV.L       L2265+44,R5; L1782
    00000C5C 8926                   BT          L2193
      hud_text.c   519                    /* make sure to default to the newest 
                         +booster msg */
      hud_text.c   520                    if( nFlag & ( HUD_TEXT_FLAGS_LBOOSTER 
                         +| HUD_TEXT_FLAGS_SBOOSTER ) ) {
    00000C5E 942D                   MOV.W       L2265,R4   ; H'6000
    00000C60 62E3                   MOV         R14,R2
    00000C62 2248                   TST         R4,R2
    00000C64 8D09                   BT/S        L2194
    00000C66 ED00                   MOV         #0,R13
      hud_text.c   521                            if( _nDrawFlags & ( HUD_TEXT_F
                         +LAGS_LBOOSTER | HUD_TEXT_FLAGS_SBOOSTER ) ) {
    00000C68 6152                   MOV.L       @R5,R1
    00000C6A 2418                   TST         R1,R4
    00000C6C 8903                   BT          L2195
      hud_text.c   522                                    /* the booster msg is 
                         +currently on, turn it off */
      hud_text.c   523                                    _nDrawFlags &= ~(HUD_T
                         +EXT_FLAGS_LBOOSTER | HUD_TEXT_FLAGS_SBOOSTER);
    00000C6E 6252                   MOV.L       @R5,R2
    00000C70 9325                   MOV.W       L2265+2,R3 ; H'9FFF
    00000C72 2239                   AND         R3,R2
    00000C74 2522                   MOV.L       R2,@R5
    00000C76              L2195:                            
      hud_text.c   524                            }                       
      hud_text.c   525                            /* reset our booster counter s
                         +o that we can auto kill it */
      hud_text.c   526                            _nBoosterCounter = 0;
    00000C76 D11E                   MOV.L       L2265+52,R1; L1784
    00000C78 21D1                   MOV.W       R13,@R1
    00000C7A              L2194:                            
      hud_text.c   527                    }
      hud_text.c   528    
      hud_text.c   529                    /* set our flag */
      hud_text.c   530                    _nDrawFlags |= nFlag;
    00000C7A 6352                   MOV.L       @R5,R3
    00000C7C 23EB                   OR          R14,R3
    00000C7E 2532                   MOV.L       R3,@R5
      hud_text.c   531    
      hud_text.c   532                    if( nFlag & HUD_TEXT_FLAGS_TIME_EXTEND
                         +ED ) {
    00000C80 921E                   MOV.W       L2265+4,R2 ; H'1000
    00000C82 22E8                   TST         R14,R2
    00000C84 8904                   BT          L2196
      hud_text.c   533                            /* reset our time extened coun
                         +ter so that we can auto kill it */
      hud_text.c   534                            _nTimeExtendedCounter = 0;
    00000C86 D119                   MOV.L       L2265+48,R1; L1783
    00000C88 21D1                   MOV.W       R13,@R1
      hud_text.c   535  E                         hud_wrongway_EnableText( 0 );
    00000C8A D30F                   MOV.L       L2265+12,
                        +                                  R3; _hud_wrongway_Enable
                        +                                  Text
    00000C8C 430B                   JSR         @R3
    00000C8E E400                   MOV         #0,R4
    00000C90              L2196:                            
      hud_text.c   536                    }
      hud_text.c   537                    if( nFlag & HUD_TEXT_FLAGS_PUSH_THROTT
                         +LE ) {
    00000C90 D219                   MOV.L       L2265+60,R2; H'00010000
    00000C92 2E28                   TST         R2,R14
    00000C94 890E                   BT          L2198
      hud_text.c   538  E                         _bInitialWait = 1;
    00000C96 D319                   MOV.L       L2265+64,R3; L1812
    00000C98 E101                   MOV         #1,R1
    00000C9A 2312                   MOV.L       R1,@R3
      hud_text.c   539  E                         _bDisplay = 0;
    00000C9C D018                   MOV.L       L2265+68,R0; L1813
    00000C9E 20D2                   MOV.L       R13,@R0
      hud_text.c   540                            _fTimer = 0.0f;
    00000CA0 D218                   MOV.L       L2265+72,R2; L1810
    00000CA2 F48D                   FLDI0       FR4
    00000CA4 F24A                   FMOV.S      FR4,@R2
      hud_text.c   541                            _fDisplayTime = 0.0f;
    00000CA6 D318                   MOV.L       L2265+76,R3; L1811
    00000CA8 A004                   BRA         L2198
    00000CAA F34A                   FMOV.S      FR4,@R3
    00000CAC              L2193:                            
      hud_text.c   542                    }
      hud_text.c   543            } else {
      hud_text.c   544                    _nDrawFlags &= ~nFlag;  
    00000CAC 6352                   MOV.L       @R5,R3
    00000CAE 6EE7                   NOT         R14,R14
    00000CB0 23E9                   AND         R14,R3
    00000CB2 2532                   MOV.L       R3,@R5
    00000CB4              L2198:                            
      hud_text.c   545            }
      hud_text.c   546    }
    00000CB4 4F26                   LDS.L       @R15+,PR
    00000CB6 6DF6                   MOV.L       @R15+,R13
    00000CB8 000B                   RTS
    00000CBA 6EF6                   MOV.L       @R15+,R14
    00000CBC              L2265:                            
    00000CBC 6000                   .DATA.W     H'6000
    00000CBE 9FFF                   .DATA.W     H'9FFF
    00000CC0 1000                   .DATA.W     H'1000
    00000CC2 00000002               .RES.W      1
    00000CC4 <00000000>             .DATA.L     _Gameloop_fTargetFrameTime
    00000CC8 <00000000>             .DATA.L     _hud_wrongway_EnableText
    00000CCC 3F199999               .DATA.L     H'3F199999
    00000CD0 <00000000>             .DATA.L     L1922
    00000CD4 43020000               .DATA.L     H'43020000
    00000CD8 <00000000>             .DATA.L     L1923
    00000CDC <00000000>             .DATA.L     L1924
    00000CE0 435C0000               .DATA.L     H'435C0000
    00000CE4 <00000000>             .DATA.L     _text_Flush
    00000CE8 <00000000>             .DATA.L     L1782
    00000CEC <00000000>             .DATA.L     L1783
    00000CF0 <00000000>             .DATA.L     L1784
    00000CF4 <00000000>             .DATA.L     L1780
    00000CF8 00010000               .DATA.L     H'00010000
    00000CFC <00000000>             .DATA.L     L1812
    00000D00 <00000000>             .DATA.L     L1813
    00000D04 <00000000>             .DATA.L     L1810
    00000D08 <00000000>             .DATA.L     L1811
      hud_text.c   547    
      hud_text.c   548  E void hud_text_SetupSplitTime( int bNewBestTime, f32 fB
                         +estTime, f32 fMyTime ) {
    00000D0C              _hud_text_SetupSplitTime:        ; function: hud_text_
                        +                                  SetupSplitTime
                                                           ; frame size=0
      hud_text.c   549            _nCheckPtCounter = 0;
      hud_text.c   550            
      hud_text.c   551            _fBestTime = fBestTime;
      hud_text.c   552            _fYourTime = fMyTime;
      hud_text.c   553  E         _fBestX1 = 570.0f;
    00000D0C C721                   MOVA        L2266+14,R0
    00000D0E D51E                   MOV.L       L2266+2,R5 ; L1807
    00000D10 E600                   MOV         #0,R6
    00000D12 2562                   MOV.L       R6,@R5
    00000D14 D31D                   MOV.L       L2266+6,R3 ; L1804
    00000D16 F34A                   FMOV.S      FR4,@R3
    00000D18 D21D                   MOV.L       L2266+10,R2; L1803
    00000D1A F25A                   FMOV.S      FR5,@R2
    00000D1C F408                   FMOV.S      @R0,FR4
    00000D1E D11E                   MOV.L       L2266+18,R1; L1799
    00000D20 F14A                   FMOV.S      FR4,@R1
      hud_text.c   554  E         _fBestX2 = 570.0f;
    00000D22 D31E                   MOV.L       L2266+22,R3; L1800
    00000D24 F34A                   FMOV.S      FR4,@R3
      hud_text.c   555  E         _fYourX1 = 570.0f;
    00000D26 D21E                   MOV.L       L2266+26,R2; L1801
    00000D28 F24A                   FMOV.S      FR4,@R2
      hud_text.c   556  E         _fYourX2 = 570.0f;
      hud_text.c   557            _nCheckPtCounter = 0;
      hud_text.c   558            _bNewHighScore = bNewBestTime;
      hud_text.c   559  E         _bSlideOn = 1;
    00000D2A E201                   MOV         #1,R2
    00000D2C D11D                   MOV.L       L2266+30,R1; L1802
    00000D2E F14A                   FMOV.S      FR4,@R1
    00000D30 2562                   MOV.L       R6,@R5
    00000D32 D31D                   MOV.L       L2266+34,R3; L1805
    00000D34 2342                   MOV.L       R4,@R3
      hud_text.c   560    
      hud_text.c   561  E         hud_text_SetFlag( 1, HUD_TEXT_FLAGS_SPLIT_TIME
                         + );
    00000D36 6423                   MOV         R2,R4
    00000D38 D01C                   MOV.L       L2266+38,R0; L1806
    00000D3A 2022                   MOV.L       R2,@R0
    00000D3C D51C                   MOV.L       L2266+42,R5; H'00008000
    00000D3E AF87                   BRA         _hud_text_SetFlag
    00000D40 0009                   NOP
      hud_text.c   562    }
      hud_text.c   563    
      hud_text.c   564    void hud_text_SetupFinishStats( f32 fBestTime, char cI
                         +nitial1, char cInitial2, char cInitial3 ) {
    00000D42              _hud_text_SetupFinishStats:      ; function: hud_text_
                        +                                  SetupFinishStats
                                                           ; frame size=0
      hud_text.c   565            _fBestFinishTime = fBestTime;
    00000D42 D31C                   MOV.L       L2266+46,R3; L1808
    00000D44 F34A                   FMOV.S      FR4,@R3
      hud_text.c   566            _pszBestTimeInitials[0] = cInitial1;
    00000D46 D71C                   MOV.L       L2266+50,R7; L1809
    00000D48 2740                   MOV.B       R4,@R7
      hud_text.c   567            _pszBestTimeInitials[1] = cInitial2;
    00000D4A 6053                   MOV         R5,R0
    00000D4C 0009                   NOP
    00000D4E 8071                   MOV.B       R0,@(1,R7)
      hud_text.c   568            _pszBestTimeInitials[2] = cInitial3;
    00000D50 6063                   MOV         R6,R0
    00000D52 0009                   NOP
    00000D54 8072                   MOV.B       R0,@(2,R7)
      hud_text.c   569            _pszBestTimeInitials[3] = 0;
    00000D56 E000                   MOV         #0,R0
    00000D58 8073                   MOV.B       R0,@(3,R7)
      hud_text.c   570            
      hud_text.c   571  E         hud_text_SetFlag( 1, HUD_TEXT_FLAGS_FINISH_STA
                         +TS );
    00000D5A 9514                   MOV.W       L2266,R5   ; H'0100
    00000D5C AF78                   BRA         _hud_text_SetFlag
    00000D5E E401                   MOV         #1,R4
      hud_text.c   572    }
      hud_text.c   573    
      hud_text.c   574    void hud_text_ForceOn( void ) {
    00000D60              _hud_text_ForceOn:               ; function: hud_text_
                        +                                  ForceOn
                                                           ; frame size=0
      hud_text.c   575  E         _bForceOn = 1;
    00000D60 D216                   MOV.L       L2266+54,R2; L1780
    00000D62 E301                   MOV         #1,R3
      hud_text.c   576    }
    00000D64 000B                   RTS
    00000D66 2232                   MOV.L       R3,@R2
      hud_text.c   577    
      hud_text.c   578    /*================== */
      hud_text.c   579    /* private functions */
      hud_text.c   580    
      hud_text.c   581  E static int _Flash2On2Off( void ) {
      hud_text.c   582            if( !_bForceOn ) {
      hud_text.c   583                    return ( (Gameloop_nFrameCounter & 0x2
                         +) );
      hud_text.c   584            } else {
      hud_text.c   585  E                 return 1;
      hud_text.c   586            }
      hud_text.c   587    }
      hud_text.c   588    
      hud_text.c   589  E static int _Flash3On3Off( void ) {
    00000D68              L1815:                           ; function: _Flash3On
                        +                                  3Off
                                                           ; frame size=0
      hud_text.c   590            if( !_bForceOn ) {
    00000D68 D014                   MOV.L       L2266+54,R0; L1780
    00000D6A 6102                   MOV.L       @R0,R1
    00000D6C 2118                   TST         R1,R1
    00000D6E 8B07                   BF          L2199
      hud_text.c   591                    return ( (Gameloop_nFrameCounter & 0x5
                         +) < 0x3 );
    00000D70 D113                   MOV.L       L2266+58,
                        +                                  R1; _Gameloop_nFrameCoun
                        +                                  ter
    00000D72 E303                   MOV         #3,R3
    00000D74 6012                   MOV.L       @R1,R0
    00000D76 C905                   AND         #5,R0
    00000D78 3032                   CMP/HS      R3,R0
    00000D7A 0029                   MOVT        R0
    00000D7C 000B                   RTS
    00000D7E CA01                   XOR         #1,R0
    00000D80              L2199:                            
      hud_text.c   592            } else {
      hud_text.c   593  E                 return 1;
    00000D80 E001                   MOV         #1,R0
      hud_text.c   594            }
      hud_text.c   595    }
    00000D82              L2200:                            
    00000D82 000B                   RTS
    00000D84 0009                   NOP
    00000D86              L2266:                            
    00000D86 0100                   .DATA.W     H'0100
    00000D88 <00000000>             .DATA.L     L1807
    00000D8C <00000000>             .DATA.L     L1804
    00000D90 <00000000>             .DATA.L     L1803
    00000D94 440E8000               .DATA.L     H'440E8000
    00000D98 <00000000>             .DATA.L     L1799
    00000D9C <00000000>             .DATA.L     L1800
    00000DA0 <00000000>             .DATA.L     L1801
    00000DA4 <00000000>             .DATA.L     L1802
    00000DA8 <00000000>             .DATA.L     L1805
    00000DAC <00000000>             .DATA.L     L1806
    00000DB0 00008000               .DATA.L     H'00008000
    00000DB4 <00000000>             .DATA.L     L1808
    00000DB8 <00000000>             .DATA.L     L1809
    00000DBC <00000000>             .DATA.L     L1780
    00000DC0 <00000000>             .DATA.L     _Gameloop_nFrameCounter
      hud_text.c   596    
      hud_text.c   597  E static int _Flash4On4Off( void ) {
      hud_text.c   598            if( !_bForceOn ) {
      hud_text.c   599                    return ( (Gameloop_nFrameCounter & 0x4
                         +) );
      hud_text.c   600            } else {
      hud_text.c   601  E                 return 1;
      hud_text.c   602            }
      hud_text.c   603    }
      hud_text.c   604    
      hud_text.c   605  E static int _Flash8On8Off( void ) {
      hud_text.c   606            if( !_bForceOn ) {
      hud_text.c   607                    return ( (Gameloop_nFrameCounter & 0x8
                         +) );
      hud_text.c   608            } else {
      hud_text.c   609  E                 return 1;
      hud_text.c   610            }
      hud_text.c   611    }
      hud_text.c   612    
      hud_text.c   613    static void _DrawTime( f32 fTime, f32 fX, f32 fY, f32 
                         +fScale ) {
    00000DC4              L1818:                           ; function: _DrawTime
                                                           ; frame size=92
                                                           ; used runtime librar
                        +                                  y name:
                                                           ; __divlu
    00000DC4 2FE6                   MOV.L       R14,@-R15
    00000DC6 2FD6                   MOV.L       R13,@-R15
    00000DC8 2FC6                   MOV.L       R12,@-R15
    00000DCA 2FB6                   MOV.L       R11,@-R15
    00000DCC 2FA6                   MOV.L       R10,@-R15
    00000DCE 2F96                   MOV.L       R9,@-R15
    00000DD0 2F86                   MOV.L       R8,@-R15
    00000DD2 FFFB                   FMOV.S      FR15,@-R15
    00000DD4 FFEB                   FMOV.S      FR14,@-R15
    00000DD6 FFDB                   FMOV.S      FR13,@-R15
    00000DD8 FFCB                   FMOV.S      FR12,@-R15
      hud_text.c   614            u32 nMin, nSecs, nCSecs, nDigit[6], nTemp, i;
      hud_text.c   615    
      hud_text.c   616            if( !_bTexturesLoaded ) {
    00000DDA D2A5                   MOV.L       L2267,R2   ; L1781
    00000DDC 4F22                   STS.L       PR,@-R15
    00000DDE 6322                   MOV.L       @R2,R3
    00000DE0 FF5C                   FMOV.S      FR5,FR15
    00000DE2 2338                   TST         R3,R3
    00000DE4 FC6C                   FMOV.S      FR6,FR12
    00000DE6 7FD4                   ADD         #-44,R15
    00000DE8 8F02                   BF/S        L2268
    00000DEA FD7C                   FMOV.S      FR7,FR13
    00000DEC A198                   BRA         L2203
    00000DEE 0009                   NOP
    00000DF0              L2268:                            
      hud_text.c   617                    return;
      hud_text.c   618            }
      hud_text.c   619  E         nMin = ( (int)( (fTime)*(1.0f/60.0f) ) );
    00000DF0 C7A0                   MOVA        L2267+4,R0
    00000DF2 F24C                   FMOV.S      FR4,FR2
    00000DF4 F308                   FMOV.S      @R0,FR3
    00000DF6 F232                   FMUL        FR3,FR2
    00000DF8 F23D                   FTRC        FR2,FPUL
    00000DFA 055A                   STS         FPUL,R5
      hud_text.c   620            fTime -= ((f32)nMin * 60.0f);
    00000DFC 455A                   LDS         R5,FPUL
    00000DFE 4511                   CMP/PZ      R5
    00000E00 8D04                   BT/S        L2204
    00000E02 F22D                   FLOAT       FPUL,FR2
    00000E04 D39C                   MOV.L       L2267+8,R3 ; H'4F800000
    00000E06 435A                   LDS         R3,FPUL
    00000E08 F10D                   FSTS        FPUL,FR1
    00000E0A F210                   FADD        FR1,FR2
    00000E0C              L2204:                            
    00000E0C C79B                   MOVA        L2267+12,R0
    00000E0E F108                   FMOV.S      @R0,FR1
    00000E10 F212                   FMUL        FR1,FR2
    00000E12 F421                   FSUB        FR2,FR4
      hud_text.c   621  E         nSecs = ( (int)( (fTime) ) );
    00000E14 F43D                   FTRC        FR4,FPUL
    00000E16 045A                   STS         FPUL,R4
      hud_text.c   622            fTime -= ((f32)nSecs);
    00000E18 445A                   LDS         R4,FPUL
    00000E1A 4411                   CMP/PZ      R4
    00000E1C 8D04                   BT/S        L2205
    00000E1E F22D                   FLOAT       FPUL,FR2
    00000E20 D395                   MOV.L       L2267+8,R3 ; H'4F800000
    00000E22 435A                   LDS         R3,FPUL
    00000E24 F00D                   FSTS        FPUL,FR0
    00000E26 F200                   FADD        FR0,FR2
    00000E28              L2205:                            
    00000E28 F421                   FSUB        FR2,FR4
      hud_text.c   623  E         nCSecs = ( (int)( (fTime)*100.0f) );
    00000E2A C795                   MOVA        L2267+16,R0
    00000E2C F208                   FMOV.S      @R0,FR2
      hud_text.c   624    
      hud_text.c   625  E         { if((nMin)>(99)) nMin=(99); };
    00000E2E E763                   MOV         #99,R7
    00000E30 3576                   CMP/HI      R7,R5
    00000E32 F04C                   FMOV.S      FR4,FR0
    00000E34 F022                   FMUL        FR2,FR0
    00000E36 F03D                   FTRC        FR0,FPUL
    00000E38 8F01                   BF/S        L2206
    00000E3A 065A                   STS         FPUL,R6
    00000E3C 6573                   MOV         R7,R5
    00000E3E              L2206:                            
      hud_text.c   626  E         { if((nSecs)>(59)) nSecs=(59); };
    00000E3E E23B                   MOV         #59,R2
    00000E40 3426                   CMP/HI      R2,R4
    00000E42 8B00                   BF          L2207
    00000E44 6423                   MOV         R2,R4
    00000E46              L2207:                            
      hud_text.c   627  E         { if((nCSecs)>(99)) nCSecs=(99); };
    00000E46 3676                   CMP/HI      R7,R6
    00000E48 8B00                   BF          L2208
    00000E4A 6673                   MOV         R7,R6
    00000E4C              L2208:                            
      hud_text.c   628    
      hud_text.c   629            nTemp = (u32)(nMin/10);
    00000E4C D38D                   MOV.L       L2267+20,R3; __divlu
    00000E4E 6153                   MOV         R5,R1
    00000E50 E70A                   MOV         #10,R7
    00000E52 430B                   JSR         @R3
    00000E54 6073                   MOV         R7,R0
    00000E56 6E03                   MOV         R0,R14
      hud_text.c   630            nDigit[0] = nTemp;
      hud_text.c   631            nMin -= (nTemp * 10);
    00000E58 63E3                   MOV         R14,R3
    00000E5A 4E08                   SHLL2       R14
    00000E5C 6CF3                   MOV         R15,R12
    00000E5E 3E3C                   ADD         R3,R14
      hud_text.c   632            nDigit[1] = nMin;               
      hud_text.c   633            
      hud_text.c   634            nTemp = (u32)(nSecs/10);
    00000E60 6143                   MOV         R4,R1
    00000E62 4E00                   SHLL        R14
    00000E64 35E8                   SUB         R14,R5
    00000E66 7C14                   ADD         #20,R12
    00000E68 2C02                   MOV.L       R0,@R12
    00000E6A 1C51                   MOV.L       R5,@(4,R12)
    00000E6C D285                   MOV.L       L2267+20,R2; __divlu
    00000E6E 420B                   JSR         @R2
    00000E70 6073                   MOV         R7,R0
    00000E72 6503                   MOV         R0,R5
      hud_text.c   635            nDigit[2] = nTemp;
      hud_text.c   636            nSecs -= (nTemp * 10);
    00000E74 6353                   MOV         R5,R3
    00000E76 4508                   SHLL2       R5
    00000E78 1C02                   MOV.L       R0,@(8,R12)
    00000E7A 353C                   ADD         R3,R5
      hud_text.c   637            nDigit[3] = nSecs;
      hud_text.c   638            
      hud_text.c   639            nTemp = (u32)(nCSecs/10);
    00000E7C 6163                   MOV         R6,R1
    00000E7E 4500                   SHLL        R5
    00000E80 3458                   SUB         R5,R4
    00000E82 1C43                   MOV.L       R4,@(12,R12)
    00000E84 D27F                   MOV.L       L2267+20,R2; __divlu
    00000E86 420B                   JSR         @R2
    00000E88 6073                   MOV         R7,R0
      hud_text.c   640            nDigit[4] = nTemp;
    00000E8A 1C04                   MOV.L       R0,@(16,R12)
    00000E8C 6403                   MOV         R0,R4
    00000E8E C77E                   MOVA        L2267+24,R0
      hud_text.c   641            nCSecs -= (nTemp * 10);
    00000E90 6343                   MOV         R4,R3
    00000E92 4408                   SHLL2       R4
    00000E94 343C                   ADD         R3,R4
    00000E96 4400                   SHLL        R4
    00000E98 3648                   SUB         R4,R6
      hud_text.c   642            nDigit[5] = nCSecs;
      hud_text.c   643    
      hud_text.c   644            for( i=0; i < 6; i++ ) {
    00000E9A EE00                   MOV         #0,R14
    00000E9C 1C65                   MOV.L       R6,@(20,R12)
    00000E9E F308                   FMOV.S      @R0,FR3
    00000EA0 E010                   MOV         #16,R0
    00000EA2 F2DC                   FMOV.S      FR13,FR2
    00000EA4 F232                   FMUL        FR3,FR2
    00000EA6 FF27                   FMOV.S      FR2,@(R0,R15)
    00000EA8 C779                   MOVA        L2267+32,R0
    00000EAA F108                   FMOV.S      @R0,FR1
    00000EAC E00C                   MOV         #12,R0
    00000EAE F0DC                   FMOV.S      FR13,FR0
    00000EB0 F012                   FMUL        FR1,FR0
    00000EB2 DB76                   MOV.L       L2267+28,R11; L1785
    00000EB4 69B3                   MOV         R11,R9
    00000EB6 6AB3                   MOV         R11,R10
    00000EB8 7A28                   ADD         #40,R10
    00000EBA FF07                   FMOV.S      FR0,@(R0,R15)
    00000EBC C775                   MOVA        L2267+36,R0
    00000EBE F308                   FMOV.S      @R0,FR3
    00000EC0 E008                   MOV         #8,R0
    00000EC2 F2DC                   FMOV.S      FR13,FR2
    00000EC4 792C                   ADD         #44,R9
    00000EC6 F232                   FMUL        FR3,FR2
    00000EC8 FF27                   FMOV.S      FR2,@(R0,R15)
    00000ECA C773                   MOVA        L2267+40,R0
    00000ECC F0DC                   FMOV.S      FR13,FR0
    00000ECE F108                   FMOV.S      @R0,FR1
    00000ED0 E004                   MOV         #4,R0
    00000ED2 E802                   MOV         #2,R8
    00000ED4 F012                   FMUL        FR1,FR0
    00000ED6 FF07                   FMOV.S      FR0,@(R0,R15)
    00000ED8 C770                   MOVA        L2267+44,R0
    00000EDA F308                   FMOV.S      @R0,FR3
    00000EDC F2DC                   FMOV.S      FR13,FR2
    00000EDE F232                   FMUL        FR3,FR2
    00000EE0 FF2A                   FMOV.S      FR2,@R15
    00000EE2 DD6F                   MOV.L       L2267+48,R13; _mesh3d_DrawOrtho
    00000EE4 FE9D                   FLDI1       FR14
    00000EE6              L2210:                            
      hud_text.c   645  E                 mesh3d_DrawOrtho( _paDigits[ nDigit[i]
                         + ], fX, fY, 1.0f, 0, fScale );
    00000EE6 F5CC                   FMOV.S      FR12,FR5
    00000EE8 E500                   MOV         #0,R5
    00000EEA F4FC                   FMOV.S      FR15,FR4
    00000EEC F6EC                   FMOV.S      FR14,FR6
    00000EEE F7DC                   FMOV.S      FR13,FR7
    00000EF0 60E3                   MOV         R14,R0
    00000EF2 0009                   NOP
    00000EF4 4008                   SHLL2       R0
    00000EF6 00CE                   MOV.L       @(R0,R12),R0
    00000EF8 4008                   SHLL2       R0
    00000EFA 4D0B                   JSR         @R13
    00000EFC 04BE                   MOV.L       @(R0,R11),R4
      hud_text.c   646                    
      hud_text.c   647                    if( i == 1 ) {
    00000EFE 60E3                   MOV         R14,R0
    00000F00 0009                   NOP
    00000F02 8801                   CMP/EQ      #1,R0
    00000F04 8B0D                   BF          L2211
      hud_text.c   648                            /* colon spacing */
      hud_text.c   649                            fX += (9.0f * fScale);
    00000F06 E010                   MOV         #16,R0
      hud_text.c   650  E                         mesh3d_DrawOrtho( _paDigits[10
                         +], fX, fY, 1.0f, 0, fScale );
    00000F08 F5CC                   FMOV.S      FR12,FR5
    00000F0A F3F6                   FMOV.S      @(R0,R15),FR3
    00000F0C E500                   MOV         #0,R5
    00000F0E F6EC                   FMOV.S      FR14,FR6
    00000F10 FF30                   FADD        FR3,FR15
    00000F12 F7DC                   FMOV.S      FR13,FR7
    00000F14 F4FC                   FMOV.S      FR15,FR4
    00000F16 4D0B                   JSR         @R13
    00000F18 64A2                   MOV.L       @R10,R4
      hud_text.c   651                            fX += (11.0f * fScale); 
    00000F1A E00C                   MOV         #12,R0
    00000F1C F3F6                   FMOV.S      @(R0,R15),FR3
    00000F1E A013                   BRA         L2212
    00000F20 FF30                   FADD        FR3,FR15
    00000F22              L2211:                            
      hud_text.c   652                    } else if( i == 3 ) {
    00000F22 60E3                   MOV         R14,R0
    00000F24 0009                   NOP
    00000F26 8803                   CMP/EQ      #3,R0
    00000F28 8B0C                   BF          L2213
      hud_text.c   653                            /* period spacing */
      hud_text.c   654                            fX += (8.0f * fScale);  
    00000F2A E008                   MOV         #8,R0
      hud_text.c   655  E                         mesh3d_DrawOrtho( _paDigits[11
                         +], fX, fY, 1.0f, 0, fScale );
    00000F2C F5CC                   FMOV.S      FR12,FR5
    00000F2E F3F6                   FMOV.S      @(R0,R15),FR3
    00000F30 E500                   MOV         #0,R5
    00000F32 F6EC                   FMOV.S      FR14,FR6
    00000F34 FF30                   FADD        FR3,FR15
    00000F36 F7DC                   FMOV.S      FR13,FR7
    00000F38 F4FC                   FMOV.S      FR15,FR4
    00000F3A 4D0B                   JSR         @R13
    00000F3C 6492                   MOV.L       @R9,R4
      hud_text.c   656                            fX += (13.0f * fScale); 
    00000F3E E004                   MOV         #4,R0
    00000F40 A001                   BRA         L2241
    00000F42 F3F6                   FMOV.S      @(R0,R15),FR3
    00000F44              L2213:                            
      hud_text.c   657                    } else {
      hud_text.c   658                            /* reg spacing */
      hud_text.c   659                            fX += (16.0f * fScale);     
    00000F44 F3F8                   FMOV.S      @R15,FR3
    00000F46              L2241:                            
    00000F46 FF30                   FADD        FR3,FR15
    00000F48              L2212:                            
    00000F48 F6EC                   FMOV.S      FR14,FR6
    00000F4A 7E01                   ADD         #1,R14
    00000F4C F5CC                   FMOV.S      FR12,FR5
    00000F4E E500                   MOV         #0,R5
    00000F50 F4FC                   FMOV.S      FR15,FR4
    00000F52 F7DC                   FMOV.S      FR13,FR7
    00000F54 60E3                   MOV         R14,R0
    00000F56 0009                   NOP
    00000F58 4008                   SHLL2       R0
    00000F5A 00CE                   MOV.L       @(R0,R12),R0
    00000F5C 4008                   SHLL2       R0
    00000F5E 4D0B                   JSR         @R13
    00000F60 04BE                   MOV.L       @(R0,R11),R4
    00000F62 60E3                   MOV         R14,R0
    00000F64 0009                   NOP
    00000F66 8801                   CMP/EQ      #1,R0
    00000F68 8B0D                   BF          L2215
    00000F6A E010                   MOV         #16,R0
    00000F6C F5CC                   FMOV.S      FR12,FR5
    00000F6E F3F6                   FMOV.S      @(R0,R15),FR3
    00000F70 E500                   MOV         #0,R5
    00000F72 F6EC                   FMOV.S      FR14,FR6
    00000F74 FF30                   FADD        FR3,FR15
    00000F76 F7DC                   FMOV.S      FR13,FR7
    00000F78 F4FC                   FMOV.S      FR15,FR4
    00000F7A 4D0B                   JSR         @R13
    00000F7C 64A2                   MOV.L       @R10,R4
    00000F7E E00C                   MOV         #12,R0
    00000F80 F3F6                   FMOV.S      @(R0,R15),FR3
    00000F82 A013                   BRA         L2216
    00000F84 FF30                   FADD        FR3,FR15
    00000F86              L2215:                            
    00000F86 60E3                   MOV         R14,R0
    00000F88 0009                   NOP
    00000F8A 8803                   CMP/EQ      #3,R0
    00000F8C 8B0C                   BF          L2217
    00000F8E E008                   MOV         #8,R0
    00000F90 F5CC                   FMOV.S      FR12,FR5
    00000F92 F3F6                   FMOV.S      @(R0,R15),FR3
    00000F94 E500                   MOV         #0,R5
    00000F96 F6EC                   FMOV.S      FR14,FR6
    00000F98 FF30                   FADD        FR3,FR15
    00000F9A F7DC                   FMOV.S      FR13,FR7
    00000F9C F4FC                   FMOV.S      FR15,FR4
    00000F9E 4D0B                   JSR         @R13
    00000FA0 6492                   MOV.L       @R9,R4
    00000FA2 E004                   MOV         #4,R0
    00000FA4 A001                   BRA         L2242
    00000FA6 F3F6                   FMOV.S      @(R0,R15),FR3
    00000FA8              L2217:                            
    00000FA8 F3F8                   FMOV.S      @R15,FR3
    00000FAA              L2242:                            
    00000FAA FF30                   FADD        FR3,FR15
    00000FAC              L2216:                            
    00000FAC F6EC                   FMOV.S      FR14,FR6
    00000FAE 7E01                   ADD         #1,R14
    00000FB0 F5CC                   FMOV.S      FR12,FR5
    00000FB2 E500                   MOV         #0,R5
    00000FB4 F4FC                   FMOV.S      FR15,FR4
    00000FB6 F7DC                   FMOV.S      FR13,FR7
    00000FB8 60E3                   MOV         R14,R0
    00000FBA 0009                   NOP
    00000FBC 4008                   SHLL2       R0
    00000FBE 00CE                   MOV.L       @(R0,R12),R0
    00000FC0 4008                   SHLL2       R0
    00000FC2 4D0B                   JSR         @R13
    00000FC4 04BE                   MOV.L       @(R0,R11),R4
    00000FC6 60E3                   MOV         R14,R0
    00000FC8 0009                   NOP
    00000FCA 8801                   CMP/EQ      #1,R0
    00000FCC 8B0D                   BF          L2219
    00000FCE E010                   MOV         #16,R0
    00000FD0 F5CC                   FMOV.S      FR12,FR5
    00000FD2 F3F6                   FMOV.S      @(R0,R15),FR3
    00000FD4 E500                   MOV         #0,R5
    00000FD6 F6EC                   FMOV.S      FR14,FR6
    00000FD8 FF30                   FADD        FR3,FR15
    00000FDA F7DC                   FMOV.S      FR13,FR7
    00000FDC F4FC                   FMOV.S      FR15,FR4
    00000FDE 4D0B                   JSR         @R13
    00000FE0 64A2                   MOV.L       @R10,R4
    00000FE2 E00C                   MOV         #12,R0
    00000FE4 F3F6                   FMOV.S      @(R0,R15),FR3
    00000FE6 A013                   BRA         L2220
    00000FE8 FF30                   FADD        FR3,FR15
    00000FEA              L2219:                            
    00000FEA 60E3                   MOV         R14,R0
    00000FEC 0009                   NOP
    00000FEE 8803                   CMP/EQ      #3,R0
    00000FF0 8B0C                   BF          L2221
    00000FF2 E008                   MOV         #8,R0
    00000FF4 F5CC                   FMOV.S      FR12,FR5
    00000FF6 F3F6                   FMOV.S      @(R0,R15),FR3
    00000FF8 E500                   MOV         #0,R5
    00000FFA F6EC                   FMOV.S      FR14,FR6
    00000FFC FF30                   FADD        FR3,FR15
    00000FFE F7DC                   FMOV.S      FR13,FR7
    00001000 F4FC                   FMOV.S      FR15,FR4
    00001002 4D0B                   JSR         @R13
    00001004 6492                   MOV.L       @R9,R4
    00001006 E004                   MOV         #4,R0
    00001008 A001                   BRA         L2243
    0000100A F3F6                   FMOV.S      @(R0,R15),FR3
    0000100C              L2221:                            
    0000100C F3F8                   FMOV.S      @R15,FR3
    0000100E              L2243:                            
    0000100E FF30                   FADD        FR3,FR15
    00001010              L2220:                            
    00001010 F6EC                   FMOV.S      FR14,FR6
    00001012 7E01                   ADD         #1,R14
    00001014 F5CC                   FMOV.S      FR12,FR5
    00001016 E500                   MOV         #0,R5
    00001018 F4FC                   FMOV.S      FR15,FR4
    0000101A F7DC                   FMOV.S      FR13,FR7
    0000101C 60E3                   MOV         R14,R0
    0000101E 0009                   NOP
    00001020 4008                   SHLL2       R0
    00001022 00CE                   MOV.L       @(R0,R12),R0
    00001024 4008                   SHLL2       R0
    00001026 4D0B                   JSR         @R13
    00001028 04BE                   MOV.L       @(R0,R11),R4
    0000102A 60E3                   MOV         R14,R0
    0000102C 0009                   NOP
    0000102E 8801                   CMP/EQ      #1,R0
    00001030 8B0D                   BF          L2223
    00001032 E010                   MOV         #16,R0
    00001034 F5CC                   FMOV.S      FR12,FR5
    00001036 F3F6                   FMOV.S      @(R0,R15),FR3
    00001038 E500                   MOV         #0,R5
    0000103A F6EC                   FMOV.S      FR14,FR6
    0000103C FF30                   FADD        FR3,FR15
    0000103E F7DC                   FMOV.S      FR13,FR7
    00001040 F4FC                   FMOV.S      FR15,FR4
    00001042 4D0B                   JSR         @R13
    00001044 64A2                   MOV.L       @R10,R4
    00001046 E00C                   MOV         #12,R0
    00001048 F3F6                   FMOV.S      @(R0,R15),FR3
    0000104A A02D                   BRA         L2224
    0000104C FF30                   FADD        FR3,FR15
    0000104E              L2223:                            
    0000104E 60E3                   MOV         R14,R0
    00001050 0009                   NOP
    00001052 8803                   CMP/EQ      #3,R0
    00001054 8B26                   BF          L2225
    00001056 E008                   MOV         #8,R0
    00001058 F5CC                   FMOV.S      FR12,FR5
    0000105A F3F6                   FMOV.S      @(R0,R15),FR3
    0000105C E500                   MOV         #0,R5
    0000105E F6EC                   FMOV.S      FR14,FR6
    00001060 FF30                   FADD        FR3,FR15
    00001062 F7DC                   FMOV.S      FR13,FR7
    00001064 F4FC                   FMOV.S      FR15,FR4
    00001066 4D0B                   JSR         @R13
    00001068 6492                   MOV.L       @R9,R4
    0000106A E004                   MOV         #4,R0
    0000106C A01B                   BRA         L2244
    0000106E F3F6                   FMOV.S      @(R0,R15),FR3
    00001070              L2267:                            
    00001070 <00000000>             .DATA.L     L1781
    00001074 3C888888               .DATA.L     H'3C888888
    00001078 4F800000               .DATA.L     H'4F800000
    0000107C 42700000               .DATA.L     H'42700000
    00001080 42C80000               .DATA.L     H'42C80000
    00001084 <00000000>             .DATA.L     __divlu
    00001088 41100000               .DATA.L     H'41100000
    0000108C <00000000>             .DATA.L     L1785
    00001090 41300000               .DATA.L     H'41300000
    00001094 41000000               .DATA.L     H'41000000
    00001098 41500000               .DATA.L     H'41500000
    0000109C 41800000               .DATA.L     H'41800000
    000010A0 <00000000>             .DATA.L     _mesh3d_DrawOrtho
    000010A4              L2225:                            
    000010A4 F3F8                   FMOV.S      @R15,FR3
    000010A6              L2244:                            
    000010A6 FF30                   FADD        FR3,FR15
    000010A8              L2224:                            
    000010A8 7E01                   ADD         #1,R14
    000010AA 3E82                   CMP/HS      R8,R14
    000010AC 8901                   BT          L2269
    000010AE AF1A                   BRA         L2210
    000010B0 0009                   NOP
    000010B2              L2269:                            
    000010B2 E806                   MOV         #6,R8
    000010B4 3E82                   CMP/HS      R8,R14
    000010B6 8933                   BT          L2203
    000010B8              L2228:                            
    000010B8 F5CC                   FMOV.S      FR12,FR5
    000010BA E500                   MOV         #0,R5
    000010BC F4FC                   FMOV.S      FR15,FR4
    000010BE F6EC                   FMOV.S      FR14,FR6
    000010C0 F7DC                   FMOV.S      FR13,FR7
    000010C2 60E3                   MOV         R14,R0
    000010C4 0009                   NOP
    000010C6 4008                   SHLL2       R0
    000010C8 00CE                   MOV.L       @(R0,R12),R0
    000010CA 4008                   SHLL2       R0
    000010CC 4D0B                   JSR         @R13
    000010CE 04BE                   MOV.L       @(R0,R11),R4
    000010D0 60E3                   MOV         R14,R0
    000010D2 0009                   NOP
    000010D4 8801                   CMP/EQ      #1,R0
    000010D6 8B0D                   BF          L2229
    000010D8 E010                   MOV         #16,R0
    000010DA F5CC                   FMOV.S      FR12,FR5
    000010DC F3F6                   FMOV.S      @(R0,R15),FR3
    000010DE E500                   MOV         #0,R5
    000010E0 F6EC                   FMOV.S      FR14,FR6
    000010E2 FF30                   FADD        FR3,FR15
    000010E4 F7DC                   FMOV.S      FR13,FR7
    000010E6 F4FC                   FMOV.S      FR15,FR4
    000010E8 4D0B                   JSR         @R13
    000010EA 64A2                   MOV.L       @R10,R4
    000010EC E00C                   MOV         #12,R0
    000010EE F3F6                   FMOV.S      @(R0,R15),FR3
    000010F0 A013                   BRA         L2230
    000010F2 FF30                   FADD        FR3,FR15
    000010F4              L2229:                            
    000010F4 60E3                   MOV         R14,R0
    000010F6 0009                   NOP
    000010F8 8803                   CMP/EQ      #3,R0
    000010FA 8B0C                   BF          L2231
    000010FC E008                   MOV         #8,R0
    000010FE F5CC                   FMOV.S      FR12,FR5
    00001100 F3F6                   FMOV.S      @(R0,R15),FR3
    00001102 E500                   MOV         #0,R5
    00001104 F6EC                   FMOV.S      FR14,FR6
    00001106 FF30                   FADD        FR3,FR15
    00001108 F7DC                   FMOV.S      FR13,FR7
    0000110A F4FC                   FMOV.S      FR15,FR4
    0000110C 4D0B                   JSR         @R13
    0000110E 6492                   MOV.L       @R9,R4
    00001110 E004                   MOV         #4,R0
    00001112 A001                   BRA         L2245
    00001114 F3F6                   FMOV.S      @(R0,R15),FR3

00001116              L2231:                            
    00001116 F3F8                   FMOV.S      @R15,FR3
    00001118              L2245:                            
    00001118 FF30                   FADD        FR3,FR15
    0000111A              L2230:                            
    0000111A 7E01                   ADD         #1,R14
    0000111C 3E82                   CMP/HS      R8,R14
    0000111E 8BCB                   BF          L2228
    00001120              L2203:                            
      hud_text.c   660                    }
      hud_text.c   661            } 
      hud_text.c   662    }
    00001120 7F2C                   ADD         #44,R15
    00001122 4F26                   LDS.L       @R15+,PR
    00001124 FCF9                   FMOV.S      @R15+,FR12
    00001126 FDF9                   FMOV.S      @R15+,FR13
    00001128 FEF9                   FMOV.S      @R15+,FR14
    0000112A FFF9                   FMOV.S      @R15+,FR15
    0000112C 68F6                   MOV.L       @R15+,R8
    0000112E 69F6                   MOV.L       @R15+,R9
    00001130 6AF6                   MOV.L       @R15+,R10
    00001132 6BF6                   MOV.L       @R15+,R11
    00001134 6CF6                   MOV.L       @R15+,R12
    00001136 6DF6                   MOV.L       @R15+,R13
    00001138 000B                   RTS
    0000113A 6EF6                   MOV.L       @R15+,R14
D   00000000              L1786:                           ; static: _aLoadTable
    00000000 <00000000>             .DATA.L     L1785,L1787,H'00000004+L1785,
             <00000000> +                       L1788,H'00000008+L1785,L1789,
             <00000004> +                       H'0000000C+L1785,L1790,
             <00000000> +                       H'00000010+L1785,L1791,
             <00000008> +                       H'00000014+L1785,L1792,
             <00000000> +                       H'00000018+L1785,L1793,
             <0000000C> +                       H'0000001C+L1785,L1794,
             <00000000> +                       H'00000020+L1785,L1795,
             <00000010> +                       H'00000024+L1785,L1796,
             <00000000> +                       H'00000028+L1785,L1797,
             <00000014> +                       H'0000002C+L1785,L1798
             <00000000>   
             <00000018>   
             <00000000>   
             <0000001C>   
             <00000000>   
             <00000020>   
             <00000000>   
             <00000024>   
             <00000000>   
             <00000028>   
             <00000000>   
             <0000002C>   
             <00000000>   
    00000060 0000000000             .DATA.L     H'00000000,H'00000000
             000000       
C   00000000              L1834:
    00000000 33                     .SDATA      "3"
    00000001 0A00                   .DATA.B     H'0A,H'00
    00000003 00000001               .RES.B      1
    00000004              L1837:
    00000004 32                     .SDATA      "2"
    00000005 0A00                   .DATA.B     H'0A,H'00
    00000007 00000001               .RES.B      1
    00000008              L1840:
    00000008 31                     .SDATA      "1"
    00000009 0A00                   .DATA.B     H'0A,H'00
    0000000B 00000001               .RES.B      1
    0000000C              L1842:
    0000000C 474F21                 .SDATA      "GO!"
    0000000F 0A00                   .DATA.B     H'0A,H'00
    00000011 00000001               .RES.B      1
    00000012 00000002               .RES.W      1
    00000014              L1844:
    00000014 4F46                   .SDATA      "OF"
    00000016 0A00                   .DATA.B     H'0A,H'00
    00000018              L1848:
    00000018 3030                   .SDATA      "00"
    0000001A 0A00                   .DATA.B     H'0A,H'00
    0000001C              L1853:
    0000001C 302564                 .SDATA      "0%d"
    0000001F 0A00                   .DATA.B     H'0A,H'00
    00000021 00000001               .RES.B      1
    00000022 00000002               .RES.W      1
    00000024              L1857:
    00000024 54494D45               .SDATA      "TIME"
    00000028 0A00                   .DATA.B     H'0A,H'00
    0000002A 00000002               .RES.W      1
    0000002C              L1858:
    0000002C 4558504952             .SDATA      "EXPIRED!"
             454421       
    00000034 0A00                   .DATA.B     H'0A,H'00
    00000036 00000002               .RES.W      1
    00000038              L1861:
    00000038 57494E4E45             .SDATA      "WINNER!"
             5221         
    0000003F 0A00                   .DATA.B     H'0A,H'00
    00000041 00000001               .RES.B      1
    00000042 00000002               .RES.W      1
    00000044              L1867:
    00000044 455854454E             .SDATA      "EXTENDED!"
             44454421     
    0000004D 0A00                   .DATA.B     H'0A,H'00
    0000004F 00000001               .RES.B      1
    00000050              L1872:
    00000050 424F4F5354             .SDATA      "BOOSTER +%d SECS!"
             4552202B25   
             6420534543   
             5321         
    00000061 0A00                   .DATA.B     H'0A,H'00
    00000063 00000001               .RES.B      1
    00000064              L1898:
    00000064 4245535420             .SDATA      "BEST TIME"
             54494D45     
    0000006D 0A00                   .DATA.B     H'0A,H'00
    0000006F 00000001               .RES.B      1
    00000070              L1899:
    00000070 594F555220             .SDATA      "YOUR TIME"
             54494D45     
    00000079 0A00                   .DATA.B     H'0A,H'00
    0000007B 00000001               .RES.B      1
    0000007C              L1903:
    0000007C 5354                   .SDATA      "ST"
    0000007E 0A00                   .DATA.B     H'0A,H'00
    00000080              L1904:
    00000080 4E44                   .SDATA      "ND"
    00000082 0A00                   .DATA.B     H'0A,H'00
    00000084              L1905:
    00000084 5244                   .SDATA      "RD"
    00000086 0A00                   .DATA.B     H'0A,H'00
    00000088              L1906:
    00000088 5448                   .SDATA      "TH"
    0000008A 0A00                   .DATA.B     H'0A,H'00
    0000008C              L1922:
    0000008C 50555348               .SDATA      "PUSH"
    00000090 0A00                   .DATA.B     H'0A,H'00
    00000092 00000002               .RES.W      1
    00000094              L1923:
    00000094 5448524F54             .SDATA      "THROTTLE"
             544C45       
    0000009C 0A00                   .DATA.B     H'0A,H'00
    0000009E 00000002               .RES.W      1
    000000A0              L1924:
    000000A0 464F525741             .SDATA      "FORWARD!"
             524421       
    000000A8 0A00                   .DATA.B     H'0A,H'00
    000000AA 00000002               .RES.W      1
    000000AC              L1787:
    000000AC 4748575449             .SDATA      "GHWTIME__H0"
             4D455F5F48   
             30           
    000000B7 00                     .DATA.B     H'00
    000000B8              L1788:
    000000B8 4748575449             .SDATA      "GHWTIME__H1"
             4D455F5F48   
             31           
    000000C3 00                     .DATA.B     H'00
    000000C4              L1789:
    000000C4 4748575449             .SDATA      "GHWTIME__H2"
             4D455F5F48   
             32           
    000000CF 00                     .DATA.B     H'00
    000000D0              L1790:
    000000D0 4748575449             .SDATA      "GHWTIME__H3"
             4D455F5F48   
             33           
    000000DB 00                     .DATA.B     H'00
    000000DC              L1791:
    000000DC 4748575449             .SDATA      "GHWTIME__H4"
             4D455F5F48   
             34           
    000000E7 00                     .DATA.B     H'00
    000000E8              L1792:
    000000E8 4748575449             .SDATA      "GHWTIME__H5"
             4D455F5F48   
             35           
    000000F3 00                     .DATA.B     H'00
    000000F4              L1793:
    000000F4 4748575449             .SDATA      "GHWTIME__H6"
             4D455F5F48   
             36           
    000000FF 00                     .DATA.B     H'00
    00000100              L1794:
    00000100 4748575449             .SDATA      "GHWTIME__H7"
             4D455F5F48   
             37           
    0000010B 00                     .DATA.B     H'00
    0000010C              L1795:
    0000010C 4748575449             .SDATA      "GHWTIME__H8"
             4D455F5F48   
             38           
    00000117 00                     .DATA.B     H'00
    00000118              L1796:
    00000118 4748575449             .SDATA      "GHWTIME__H9"
             4D455F5F48   
             39           
    00000123 00                     .DATA.B     H'00
    00000124              L1797:
    00000124 474857434F             .SDATA      "GHWCOLN__H0"
             4C4E5F5F48   
             30           
    0000012F 00                     .DATA.B     H'00
    00000130              L1798:
    00000130 4748575045             .SDATA      "GHWPERD__H0"
             52445F5F48   
             30           
    0000013B 00                     .DATA.B     H'00
B   00000000              L1780:                           ; static: _bForceOn
    00000000 00000004               .RES.L      1
    00000004              L1781:                           ; static: _bTexturesL
                        +                                  oaded
    00000004 00000004               .RES.L      1
    00000008              L1782:                           ; static: _nDrawFlags
    00000008 00000004               .RES.L      1
    0000000C              L1783:                           ; static: _nTimeExten
                        +                                  dedCounter
    0000000C 00000002               .RES.W      1
    0000000E              L1784:                           ; static: _nBoosterCo
                        +                                  unter
    0000000E 00000002               .RES.W      1
    00000010              L1785:                           ; static: _paDigits
    00000010 00000030               .RES.L      12
    00000040              L1799:                           ; static: _fBestX1
    00000040 00000004               .RES.L      1
    00000044              L1800:                           ; static: _fBestX2
    00000044 00000004               .RES.L      1
    00000048              L1801:                           ; static: _fYourX1
    00000048 00000004               .RES.L      1
    0000004C              L1802:                           ; static: _fYourX2
    0000004C 00000004               .RES.L      1
    00000050              L1803:                           ; static: _fYourTime
    00000050 00000004               .RES.L      1
    00000054              L1804:                           ; static: _fBestTime
    00000054 00000004               .RES.L      1
    00000058              L1805:                           ; static: _bNewHighSc
                        +                                  ore
    00000058 00000004               .RES.L      1
    0000005C              L1806:                           ; static: _bSlideOn
    0000005C 00000004               .RES.L      1
    00000060              L1807:                           ; static: _nCheckPtCo
                        +                                  unter
    00000060 00000004               .RES.L      1
    00000064              L1808:                           ; static: _fBestFinis
                        +                                  hTime
    00000064 00000004               .RES.L      1
    00000068              L1809:                           ; static: _pszBestTim
                        +                                  eInitials
    00000068 00000004               .RES.B      4
    0000006C              L1810:                           ; static: _fTimer
    0000006C 00000004               .RES.L      1
    00000070              L1811:                           ; static: _fDisplayTi
                        +                                  me
    00000070 00000004               .RES.L      1
    00000074              L1812:                           ; static: _bInitialWa
                        +                                  it
    00000074 00000004               .RES.L      1
    00000078              L1813:                           ; static: _bDisplay
    00000078 00000004               .RES.L      1
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:16:49  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:      662



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               0000113C Byte(s)
CONSTANT SECTION (C):                               0000013C Byte(s)
DATA     SECTION (D):                               00000068 Byte(s)
BSS      SECTION (B):                               0000007C Byte(s)

 TOTAL PROGRAM SIZE: 0000135C Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:           22
NUMBER OF EXTERNAL DEFINITION SYMBOLS:           8
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:           223
*** COMMAND PARAMETER ***


  hud_text.c -ob=.\obj\hud_text.obj -cpu=sh4 -division=cpu -endian=little -fpu=s
ingle -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -debug -
listfile=.\obj\hud_text.lst

bt_tblade.c

Found at 1xAFB5970:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:07:45  PAGE    1

************ OBJECT LISTING ************

FILE NAME: bt_tblade.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

      bt_tblade.     1    /*****************************************************
                         +******************************** */
      bt_tblade.     2    /* bt_tblade.c -  */
      bt_tblade.     3    /* */
      bt_tblade.     4    /* Author: Michael Starich    */
      bt_tblade.     5    /*****************************************************
                         +******************************** */
      bt_tblade.     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
      bt_tblade.     7    /* Copyright (c) 1998 */
      bt_tblade.     8    /* */
      bt_tblade.     9    /* The contents of this file may not be disclosed to t
                         +hird */
      bt_tblade.    10    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
      bt_tblade.    11    /* without the prior written permission of Midway Home
                         + Entertainment. */
      bt_tblade.    12    /*****************************************************
                         +******************************** */
      bt_tblade.    13    /* Modification History: */
      bt_tblade.    14    /* */
      bt_tblade.    15    /* Date     Who         Description */
      bt_tblade.    16    /* -------- ----------  ------------------------------
                         +-------------------------------- */
      bt_tblade.    17    /* 06/15/98 Starich     Created. */
      bt_tblade.    18    /*****************************************************
                         +******************************** */
      bt_tblade.    19    #include "gendefs.h"
      bt_tblade.    20    #include "bt_tblade.h"
      bt_tblade.    21    #include "boats.h"
      bt_tblade.    22    #include "obsys.h"
      bt_tblade.    23    #include "xfm.h"
      bt_tblade.    24    #include "anim.h"
      bt_tblade.    25    #include "controls.h"
      bt_tblade.    26    #include "sysmem.h"
      bt_tblade.    27    #include "material.h"
      bt_tblade.    28    #include "glcount.h"
      bt_tblade.    29    #include "fx_smoke.h"
      bt_tblade.    30    #include "gutil.h"
      bt_tblade.    31    #include "particle.h"
      bt_tblade.    32    #include "orient.h"
      bt_tblade.    33    #include "powerup.h"
      bt_tblade.    34    #include "tmem.h"
      bt_tblade.    35    
      bt_tblade.    36    /*==================== */
      bt_tblade.    37    /* private definitions */
      bt_tblade.    38    #define _NUM_BLUE_FRAMES                5
      bt_tblade.    39    #define _NUM_BURST_FRAMES               7
      bt_tblade.    40    #define _NUM_REG_FRAMES                 10
      bt_tblade.    41    #define _FIRST_BLUE_FRAME               0
      bt_tblade.    42    #define _LAST_BLUE_FRAME                4
      bt_tblade.    43    #define _FIRST_BURST_FRAME              0
      bt_tblade.    44    #define _LAST_BURST_FRAME               6
      bt_tblade.    45    #define _FIRST_REG_FRAME                7
      bt_tblade.    46    #define _LAST_REG_FRAME                 16
      bt_tblade.    47    #define _NUM_FLAME_GEOMETRY             4
      bt_tblade.    48    #define _NUM_ENGINE_FRAME               7
      bt_tblade.    49    #define _NUM_ENGINE_PIPES               8
      bt_tblade.    50    
      bt_tblade.    51    #define _COWLING_X_XLAT                 -1.757f
      bt_tblade.    52    #define _BOOSTER_PIPE_XLAT              -3.0f
      bt_tblade.    53    #define _ENGINE_VIBRATION               0.05f
      bt_tblade.    54    
      bt_tblade.    55    #define BLUE_LIGHT_INTENSITY    0.35f
      bt_tblade.    56    #define ORANGE_LIGHT_INTENSITY  0.75f
      bt_tblade.    57    #define _EXTRA_BLUE_INTENSITY   ( 1.0f - BLUE_LIGHT_IN
                         +TENSITY )
      bt_tblade.    58    #define _EXTRA_ORANGE_INTENSITY ( 1.0f - ORANGE_LIGHT_
                         +INTENSITY )
      bt_tblade.    59    
      bt_tblade.    60    enum _HB_STATES
      bt_tblade.    61    {
      bt_tblade.    62            _HB_CLOSED = 0,
      bt_tblade.    63            _HB_DEPLOYING,
      bt_tblade.    64            _HB_OPEN,
      bt_tblade.    65            _HB_RETRACTING,
      bt_tblade.    66    
      bt_tblade.    67            _HB_NUM_STATES
      bt_tblade.    68    };      
      bt_tblade.    69    enum _FLAME_STATES
      bt_tblade.    70    {
      bt_tblade.    71            F_RESET = 0,     
      bt_tblade.    72            F_OFF,
      bt_tblade.    73            F_TURNON,
      bt_tblade.    74            F_TURNOFF,
      bt_tblade.    75    
      bt_tblade.    76            F_B_ON,
      bt_tblade.    77            F_B_USEABLE,
      bt_tblade.    78            F_B_TURNOFF,
      bt_tblade.    79            F_O_BURSTON,
      bt_tblade.    80            F_O_BURSTOFF,
      bt_tblade.    81            F_O_FIRE,
      bt_tblade.    82            F_O_TURNOFF,
      bt_tblade.    83                            
      bt_tblade.    84            F_NUM_STATES
      bt_tblade.    85    };
      bt_tblade.    86    /*================= */
      bt_tblade.    87    /* public variables */
      bt_tblade.    88    
      bt_tblade.    89    /*================== */
      bt_tblade.    90    /* private variables */
      bt_tblade.    91    
      bt_tblade.    92    /* player LOD vars */
      bt_tblade.    93    static Mesh3d_t *_pPLCowling;
      bt_tblade.    94    static Mesh3d_t *_pPRCowling;
      bt_tblade.    95    static Mesh3d_t *_pPEngine;
      bt_tblade.    96    static Mesh3d_t *_pPLBooster;
      bt_tblade.    97    static Mesh3d_t *_pPRBooster;
      bt_tblade.    98    static ObsysLoadDef_t aPlayerLoadTable[] = {
      bt_tblade.    99            (void *)&_pPLCowling,   "GBBTIDACWP1",
      bt_tblade.   100            (void *)&_pPRCowling,   "GBBTIDACWP2",
      bt_tblade.   101            (void *)&_pPEngine,             "GBBTIDAENP0",
      bt_tblade.   102            (void *)&_pPLBooster,   "GBBTIDABOP1",
      bt_tblade.   103            (void *)&_pPRBooster,   "GBBTIDABOP2",
      bt_tblade.   104  E         0,                                      0,
      bt_tblade.   105    };
      bt_tblade.   106    /* common LOD vars */
      bt_tblade.   107    static Mesh3d_t *_pProp;
      bt_tblade.   108    static Mesh3d_t *_pBFlame;
      bt_tblade.   109  E static Mesh3d_t *_paOFlameTop[ 4 ];
      bt_tblade.   110  E static Mesh3d_t *_paOFlameBottom[ 4 ];
      bt_tblade.   111    static Mesh3d_t *_pOFlameBurst;
      bt_tblade.   112    static Mesh3d_t *_pFlameMiddle;
      bt_tblade.   113    static Mesh3d_t *_pLEndPiece;
      bt_tblade.   114    static Mesh3d_t *_pREndPiece;
      bt_tblade.   115    static Mesh3d_t *_pGlowCard;
      bt_tblade.   116    static Mesh3d_t *_pLowGeoFlame;
      bt_tblade.   117    static TexDef_t *_paPropCell[2];
      bt_tblade.   118  E static TexDef_t *_paFlameCell[ (7 + 10) ];
      bt_tblade.   119  E static TexDef_t *_paBlueCell[ 5 ];
      bt_tblade.   120  E static TexDef_t *_pEngFlameCell[7];
      bt_tblade.   121    static ObsysLoadDef_t aCommonLoadTable[] = {
      bt_tblade.   122            (void *)&_pProp,                        "GBBBO
                         +ATPRP0",
      bt_tblade.   123            (void *)&_pBFlame,                      "GBBTI
                         +DABUP1",
      bt_tblade.   124            (void *)&_paOFlameTop[0],       "GBFTIDA_AH1",
      bt_tblade.   125            (void *)&_paOFlameTop[1],       "GBFTIDA_AH2",
      bt_tblade.   126            (void *)&_paOFlameTop[2],       "GBFTIDA_AH3",
      bt_tblade.   127            (void *)&_paOFlameTop[3],       "GBFTIDA_AH4",
      bt_tblade.   128            (void *)&_paOFlameBottom[0],"GBFTIDA_BH1",
      bt_tblade.   129            (void *)&_paOFlameBottom[1],"GBFTIDA_BH2",
      bt_tblade.   130            (void *)&_paOFlameBottom[2],"GBFTIDA_BH3",
      bt_tblade.   131            (void *)&_paOFlameBottom[3],"GBFTIDA_BH4",
      bt_tblade.   132            (void *)&_pOFlameBurst,         "GBBTIDAFLP5",
      bt_tblade.   133            (void *)&_pFlameMiddle,         "GBFTIDA_AH0",
      bt_tblade.   134            (void *)&_pLEndPiece,           "GBBTIDAFLP3",
                         +        
      bt_tblade.   135            (void *)&_pREndPiece,           "GBBTIDAFLP4",
      bt_tblade.   136            (void *)&_pGlowCard,            "GBBTIDAFLPA",
      bt_tblade.   137            (void *)&_pLowGeoFlame,         "GBFTIDA_CH1",
      bt_tblade.   138            (void *)&_paPropCell[0],        "TBBBOATPR10",
      bt_tblade.   139            (void *)&_paPropCell[1],        "TBBBOATPR11",
      bt_tblade.   140            (void *)&_paFlameCell[0],       "TBFEXHABO20",
      bt_tblade.   141            (void *)&_paFlameCell[1],       "TBFEXHABO21",
      bt_tblade.   142            (void *)&_paFlameCell[2],       "TBFEXHABO22",
      bt_tblade.   143            (void *)&_paFlameCell[3],       "TBFEXHABO23",
      bt_tblade.   144            (void *)&_paFlameCell[4],       "TBFEXHABO24",
      bt_tblade.   145            (void *)&_paFlameCell[5],       "TBFEXHABO25",
      bt_tblade.   146            (void *)&_paFlameCell[6],       "TBFEXHABO26",
      bt_tblade.   147            (void *)&_paFlameCell[7],       "TBFFIREBO2A",
      bt_tblade.   148            (void *)&_paFlameCell[8],       "TBFFIREBO2B",
      bt_tblade.   149            (void *)&_paFlameCell[9],       "TBFFIREBO2C",
      bt_tblade.   150            (void *)&_paFlameCell[10],      "TBFFIREBO2D",
      bt_tblade.   151            (void *)&_paFlameCell[11],      "TBFFIREBO2E",
      bt_tblade.   152            (void *)&_paFlameCell[12],      "TBFFIREBO2F",
      bt_tblade.   153            (void *)&_paFlameCell[13],      "TBFFIREBO2G",
      bt_tblade.   154            (void *)&_paFlameCell[14],      "TBFFIREBO2H",
      bt_tblade.   155            (void *)&_paFlameCell[15],      "TBFFIREBO2I",
      bt_tblade.   156            (void *)&_paFlameCell[16],      "TBFFIREBO2J",
      bt_tblade.   157            (void *)&_paBlueCell[0],        "TBBEXHABU50",
      bt_tblade.   158            (void *)&_paBlueCell[1],        "TBBEXHABU51",
      bt_tblade.   159            (void *)&_paBlueCell[2],        "TBBEXHABU52",
      bt_tblade.   160            (void *)&_paBlueCell[3],        "TBBEXHABU53",
      bt_tblade.   161            (void *)&_paBlueCell[4],        "TBBEXHABU54",
      bt_tblade.   162            (void *)&_pEngFlameCell[0],     "TBFTIDAFL20",
      bt_tblade.   163            (void *)&_pEngFlameCell[1],     "TBFTIDAFL21",
      bt_tblade.   164            (void *)&_pEngFlameCell[2],     "TBFTIDAFL22",
      bt_tblade.   165            (void *)&_pEngFlameCell[3],     "TBFTIDAFL23",
      bt_tblade.   166            (void *)&_pEngFlameCell[4],     "TBFTIDAFL24",
      bt_tblade.   167            (void *)&_pEngFlameCell[5],     "TBFTIDAFL25",
      bt_tblade.   168            (void *)&_pEngFlameCell[6],     "TBFTIDAFL26",
      bt_tblade.   169  E         0,                                            
                         +  0,
      bt_tblade.   170    };
      bt_tblade.   171    static Xfm_t _xfmLFlame;
      bt_tblade.   172    static Xfm_t _xfmRFlame;
      bt_tblade.   173  E static Xfm_t _xfmEngFlame[8];
      bt_tblade.   174    static f32 _afLStrutVerts[9];
      bt_tblade.   175    static f32 _afRStrutVerts[9];
      bt_tblade.   176    static f32 _fEngFlameYCoord[6];
      bt_tblade.   177    static Particle_t _FlameParticle;
      bt_tblade.   178    
      bt_tblade.   179    /*=================== */
      bt_tblade.   180    /* private prototypes */
      bt_tblade.   181    static void _ProcessHydroBoost( TBlade_t *pTblade, Pla
                         +yer_t *pPlayer );
      bt_tblade.   182    static void _ProcessLStrut( TBlade_t *ptblade, Player_
                         +t *pPlayer );
      bt_tblade.   183    static void _ProcessEngineFlames( TBlade_t *ptblade, P
                         +layer_t *pPlayer );
      bt_tblade.   184    static void _DrawProp( TBlade_t *ptblade, Player_t *pP
                         +layer );
      bt_tblade.   185    static void _ProcessFlame( TBlade_t *ptblade, Player_t
                         + *pPlayer );
      bt_tblade.   186  E static int _AnimateRetractingBoosters( TBlade_t *pTbla
                         +de );
      bt_tblade.   187  E static int _AnimateDeployingBoosters( TBlade_t *pTblad
                         +e );
      bt_tblade.   188    static void _FlameParticleInit( void );
      bt_tblade.   189    static void _FlameParticleAdd( Player_t *pPlayer );
      bt_tblade.   190  E static int _FlameParticleWork( Particle_t *pParticle )
                         +;
      bt_tblade.   191    static void _FlameParticleDraw( Particle_t *pParticle 
                         +);
      bt_tblade.   192    static void _ChangeStaticLightingMotifs( TBlade_t *ptb
                         +lade );
      bt_tblade.   193    
      bt_tblade.   194    /*================= */
      bt_tblade.   195    /* public functions */
      bt_tblade.   196  E int bt_tblade_ModuleInit( void ) {
P   00000000              _bt_tblade_ModuleInit:           ; function: bt_tblade
                        +                                  _ModuleInit
                                                           ; frame size=20
    00000000 2FE6                   MOV.L       R14,@-R15
      bt_tblade.   197            xfm_BuildXlatFromPoint( &_xfmLFlame, -4.169f, 
                         +3.109f, -9.44f );
    00000002 C739                   MOVA        L2556+14,R0
    00000004 2FD6                   MOV.L       R13,@-R15
    00000006 2FC6                   MOV.L       R12,@-R15
    00000008 FFFB                   FMOV.S      FR15,@-R15
    0000000A F608                   FMOV.S      @R0,FR6
    0000000C C737                   MOVA        L2556+18,R0
    0000000E 4F22                   STS.L       PR,@-R15
    00000010 D438                   MOV.L       L2556+26,R4; L1877
    00000012 D339                   MOV.L       L2556+30,
                        +                                  R3; _xfm_BuildXlatFromPo
                        +                                  int
    00000014 F508                   FMOV.S      @R0,FR5
    00000016 C736                   MOVA        L2556+22,R0
    00000018 430B                   JSR         @R3
    0000001A F408                   FMOV.S      @R0,FR4
      bt_tblade.   198            xfm_BuildXlatFromPoint( &_xfmRFlame, 4.169f, 3
                         +.109f, -9.44f );
    0000001C C732                   MOVA        L2556+14,R0
    0000001E D438                   MOV.L       L2556+38,R4; L1878
    00000020 F608                   FMOV.S      @R0,FR6
    00000022 C732                   MOVA        L2556+18,R0
    00000024 D334                   MOV.L       L2556+30,
                        +                                  R3; _xfm_BuildXlatFromPo
                        +                                  int
    00000026 F508                   FMOV.S      @R0,FR5
    00000028 C734                   MOVA        L2556+34,R0
    0000002A 430B                   JSR         @R3
    0000002C F408                   FMOV.S      @R0,FR4
      bt_tblade.   199            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[0],
                         + 9472, -2.0f, 3.1f, - 9.8f );
    0000002E C735                   MOVA        L2556+42,R0
    00000030 9C53                   MOV.W       L2556,R12  ; H'2500
    00000032 FF08                   FMOV.S      @R0,FR15
    00000034 C736                   MOVA        L2556+54,R0
    00000036 F608                   FMOV.S      @R0,FR6
    00000038 C736                   MOVA        L2556+58,R0
    0000003A F508                   FMOV.S      @R0,FR5
    0000003C 65C3                   MOV         R12,R5
    0000003E DE33                   MOV.L       L2556+50,
                        +                                  R14; _xfm_BuildRotZ_Xlat
                        +                                  FromPoint
    00000040 DD31                   MOV.L       L2556+46,R13; L1879
    00000042 F4FC                   FMOV.S      FR15,FR4
    00000044 4E0B                   JSR         @R14
    00000046 64D3                   MOV         R13,R4
      bt_tblade.   200            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[1],
                         + 9472, -2.0f, 3.0f, -10.4f );
    00000048 C733                   MOVA        L2556+62,R0
    0000004A 64D3                   MOV         R13,R4
    0000004C F608                   FMOV.S      @R0,FR6
    0000004E C733                   MOVA        L2556+66,R0
    00000050 F508                   FMOV.S      @R0,FR5
    00000052 65C3                   MOV         R12,R5
    00000054 F4FC                   FMOV.S      FR15,FR4
    00000056 4E0B                   JSR         @R14
    00000058 746C                   ADD         #108,R4
      bt_tblade.   201            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[2],
                         + 9472, -2.0f, 2.9f, -11.3f );
    0000005A C731                   MOVA        L2556+70,R0
    0000005C 943E                   MOV.W       L2556+2,R4 ; H'00D8
    0000005E F608                   FMOV.S      @R0,FR6
    00000060 C730                   MOVA        L2556+74,R0
    00000062 F508                   FMOV.S      @R0,FR5
    00000064 65C3                   MOV         R12,R5
    00000066 F4FC                   FMOV.S      FR15,FR4
    00000068 4E0B                   JSR         @R14
    0000006A 34DC                   ADD         R13,R4
      bt_tblade.   202            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[3],
                         + 9472, -2.0f, 2.8f, -12.0f );
    0000006C C72E                   MOVA        L2556+78,R0
    0000006E 9436                   MOV.W       L2556+4,R4 ; H'0144
    00000070 F608                   FMOV.S      @R0,FR6
    00000072 C72E                   MOVA        L2556+82,R0
    00000074 F508                   FMOV.S      @R0,FR5
    00000076 65C3                   MOV         R12,R5
    00000078 F4FC                   FMOV.S      FR15,FR4
    0000007A 4E0B                   JSR         @R14
    0000007C 34DC                   ADD         R13,R4
      bt_tblade.   203            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[4],
                         + 55552, 2.0f, 3.1f, - 9.8f );
    0000007E C72C                   MOVA        L2556+86,R0
    00000080 DC2C                   MOV.L       L2556+90,R12; H'0000D900
    00000082 FF08                   FMOV.S      @R0,FR15
    00000084 C722                   MOVA        L2556+54,R0
    00000086 F608                   FMOV.S      @R0,FR6
    00000088 C722                   MOVA        L2556+58,R0
    0000008A 9429                   MOV.W       L2556+6,R4 ; H'01B0
    0000008C 65C3                   MOV         R12,R5
    0000008E F508                   FMOV.S      @R0,FR5
    00000090 F4FC                   FMOV.S      FR15,FR4
    00000092 4E0B                   JSR         @R14
    00000094 34DC                   ADD         R13,R4
      bt_tblade.   204            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[5],
                         + 55552, 2.0f, 3.0f, -10.4f );
    00000096 C720                   MOVA        L2556+62,R0
    00000098 9423                   MOV.W       L2556+8,R4 ; H'021C
    0000009A F608                   FMOV.S      @R0,FR6
    0000009C C71F                   MOVA        L2556+66,R0
    0000009E F508                   FMOV.S      @R0,FR5
    000000A0 65C3                   MOV         R12,R5
    000000A2 F4FC                   FMOV.S      FR15,FR4
    000000A4 4E0B                   JSR         @R14
    000000A6 34DC                   ADD         R13,R4
      bt_tblade.   205            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[6],
                         + 55552, 2.0f, 2.9f, -11.3f );
    000000A8 C71D                   MOVA        L2556+70,R0
    000000AA 941B                   MOV.W       L2556+10,R4; H'0288
    000000AC F608                   FMOV.S      @R0,FR6
    000000AE C71D                   MOVA        L2556+74,R0
    000000B0 F508                   FMOV.S      @R0,FR5
    000000B2 65C3                   MOV         R12,R5
    000000B4 F4FC                   FMOV.S      FR15,FR4
    000000B6 4E0B                   JSR         @R14
    000000B8 34DC                   ADD         R13,R4
      bt_tblade.   206            xfm_BuildRotZ_XlatFromPoint( &_xfmEngFlame[7],
                         + 55552, 2.0f, 2.8f, -12.0f );
    000000BA C71B                   MOVA        L2556+78,R0
    000000BC 9413                   MOV.W       L2556+12,R4; H'02F4
    000000BE F608                   FMOV.S      @R0,FR6
    000000C0 C71A                   MOVA        L2556+82,R0
    000000C2 F508                   FMOV.S      @R0,FR5
    000000C4 65C3                   MOV         R12,R5
    000000C6 F4FC                   FMOV.S      FR15,FR4
    000000C8 4E0B                   JSR         @R14
    000000CA 34DC                   ADD         R13,R4
      bt_tblade.   207    
      bt_tblade.   208  E         return 1;
      bt_tblade.   209    }
    000000CC 4F26                   LDS.L       @R15+,PR
    000000CE E001                   MOV         #1,R0
    000000D0 FFF9                   FMOV.S      @R15+,FR15
    000000D2 6CF6                   MOV.L       @R15+,R12
    000000D4 6DF6                   MOV.L       @R15+,R13
    000000D6 000B                   RTS
    000000D8 6EF6                   MOV.L       @R15+,R14
    000000DA              L2556:                            
    000000DA 2500                   .DATA.W     H'2500
    000000DC 00D8                   .DATA.W     H'00D8
    000000DE 0144                   .DATA.W     H'0144
    000000E0 01B0                   .DATA.W     H'01B0
    000000E2 021C                   .DATA.W     H'021C
    000000E4 0288                   .DATA.W     H'0288
    000000E6 02F4                   .DATA.W     H'02F4
    000000E8 C1170A3D               .DATA.L     H'C1170A3D
    000000EC 4046F9DB               .DATA.L     H'4046F9DB
    000000F0 C0856872               .DATA.L     H'C0856872
    000000F4 <00000000>             .DATA.L     L1877
    000000F8 <00000000>             .DATA.L     _xfm_BuildXlatFromPoint
    000000FC 40856872               .DATA.L     H'40856872
    00000100 <00000000>             .DATA.L     L1878
    00000104 C0000000               .DATA.L     H'C0000000
    00000108 <00000000>             .DATA.L     L1879
    0000010C <00000000>             .DATA.L     _xfm_BuildRotZ_XlatFromPoint
    00000110 C11CCCCC               .DATA.L     H'C11CCCCC
    00000114 40466666               .DATA.L     H'40466666
    00000118 C1266666               .DATA.L     H'C1266666
    0000011C 40400000               .DATA.L     H'40400000
    00000120 C134CCCC               .DATA.L     H'C134CCCC
    00000124 40399999               .DATA.L     H'40399999
    00000128 C1400000               .DATA.L     H'C1400000
    0000012C 40333333               .DATA.L     H'40333333
    00000130 40000000               .DATA.L     H'40000000
    00000134 0000D900               .DATA.L     H'0000D900
      bt_tblade.   210    
      bt_tblade.   211  E void bt_tblade_Load( u32 nLod, u32 nIndex, Player_t *p
                         +Player, int bInitLights ) {
    00000138              _bt_tblade_Load:                 ; function: bt_tblade
                        +                                  _Load
                                                           ; frame size=164
    00000138 2FE6                   MOV.L       R14,@-R15
    0000013A 2FD6                   MOV.L       R13,@-R15
    0000013C 6D63                   MOV         R6,R13
    0000013E 2FC6                   MOV.L       R12,@-R15
    00000140 2FB6                   MOV.L       R11,@-R15
    00000142 2FA6                   MOV.L       R10,@-R15
    00000144 2F96                   MOV.L       R9,@-R15
    00000146 6943                   MOV         R4,R9
    00000148 2F86                   MOV.L       R8,@-R15
    0000014A FFFB                   FMOV.S      FR15,@-R15
    0000014C 4F22                   STS.L       PR,@-R15
      bt_tblade.   212            int nReturn;
      bt_tblade.   213            Mesh3dBound_t Bound;
      bt_tblade.   214            Mesh3d_t *pMesh;
      bt_tblade.   215            void *_pSysmemFrame;
      bt_tblade.   216            ObsysFrame_t _ObsysFrame;
      bt_tblade.   217            TBlade_t *ptblade;
      bt_tblade.   218            u32 i, nTmemBefore, nTmemAfter;
      bt_tblade.   219    
      bt_tblade.   220  E         pPlayer->pBoatData = sysmem_Alloc("bt_tblade.c
                         +", 220,sizeof(TBlade_t));
    0000014E D450                   MOV.L       L2557+8,R4 ; L1911
    00000150 D350                   MOV.L       L2557+12,R3; _sysmem_Alloc
    00000152 959A                   MOV.W       L2557+2,R5 ; H'00DC
    00000154 7F80                   ADD         #-128,R15
    00000156 9697                   MOV.W       L2557,R6   ; H'0160
    00000158 430B                   JSR         @R3
    0000015A 2F72                   MOV.L       R7,@R15
    0000015C E160                   MOV         #96,R1
    0000015E 31DC                   ADD         R13,R1
    00000160 2102                   MOV.L       R0,@R1
      bt_tblade.   221  E         if( (!(pPlayer->pBoatData != 0)) ) gerr_Assert
                         +( pPlayer->pBoatData != 0, "bt_tblade.c", 221 );
    00000162 E060                   MOV         #96,R0
    00000164 03DE                   MOV.L       @(R0,R13),R3
    00000166 2338                   TST         R3,R3
    00000168 8B08                   BF          L2352
    0000016A 04DE                   MOV.L       @(R0,R13),R4
    0000016C D34A                   MOV.L       L2557+16,R3; _gerr_Assert
    0000016E 2448                   TST         R4,R4
    00000170 D547                   MOV.L       L2557+8,R5 ; L1911
    00000172 0429                   MOVT        R4
    00000174 968A                   MOV.W       L2557+4,R6 ; H'00DD
    00000176 74FF                   ADD         #-1,R4
    00000178 430B                   JSR         @R3
    0000017A 644B                   NEG         R4,R4
    0000017C              L2352:                            
      bt_tblade.   222            ptblade = (TBlade_t*)pPlayer->pBoatData;
    0000017C E060                   MOV         #96,R0
    0000017E 0EDE                   MOV.L       @(R0,R13),R14
      bt_tblade.   223    
      bt_tblade.   224            /* Init the user object */
      bt_tblade.   225            pPlayer->nLod = nLod;
      bt_tblade.   226            ptblade->nPropRot = 0;
    00000180 EC00                   MOV         #0,R12
    00000182 E058                   MOV         #88,R0
    00000184 0D95                   MOV.W       R9,@(R0,R13)
    00000186 2EC2                   MOV.L       R12,@R14
      bt_tblade.   227            ptblade->nHBState = _HB_CLOSED;
    00000188 60C3                   MOV         R12,R0
    0000018A 0009                   NOP
    0000018C 81E2                   MOV.W       R0,@(4,R14)
      bt_tblade.   228            ptblade->nHBAnimFrameCount = 0;
      bt_tblade.   229            ptblade->fHBLeftXlat = 0.0f;
      bt_tblade.   230            ptblade->fHBBoosterXlat = 0.0f;
      bt_tblade.   231            ptblade->fHBAnimPercent = 0.0f;
      bt_tblade.   232            ptblade->nEngFlameFrameCount[0] = 0;
    0000018E 63E3                   MOV         R14,R3
    00000190 81E3                   MOV.W       R0,@(6,R14)
    00000192 E008                   MOV         #8,R0
    00000194 FF8D                   FLDI0       FR15
      bt_tblade.   233            ptblade->nEngFlameFrameCount[1] = 6;
    00000196 E206                   MOV         #6,R2
    00000198 FEF7                   FMOV.S      FR15,@(R0,R14)
    0000019A E00C                   MOV         #12,R0
    0000019C FEF7                   FMOV.S      FR15,@(R0,R14)
    0000019E E010                   MOV         #16,R0
    000001A0 FEF7                   FMOV.S      FR15,@(R0,R14)
    000001A2 E01D                   MOV         #29,R0
    000001A4 731C                   ADD         #28,R3
    000001A6 23C0                   MOV.B       R12,@R3
      bt_tblade.   234            ptblade->nEngFlameFrameCount[2] = 2;
    000001A8 E302                   MOV         #2,R3
    000001AA 0E24                   MOV.B       R2,@(R0,R14)
    000001AC E01E                   MOV         #30,R0
    000001AE 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   235            ptblade->nEngFlameFrameCount[3] = 4;
    000001B0 E01F                   MOV         #31,R0
    000001B2 E204                   MOV         #4,R2
    000001B4 0E24                   MOV.B       R2,@(R0,R14)
      bt_tblade.   236            ptblade->nEngFlameFrameCount[4] = 1;
    000001B6 E020                   MOV         #32,R0
    000001B8 EB01                   MOV         #1,R11
    000001BA 0EB4                   MOV.B       R11,@(R0,R14)
      bt_tblade.   237            ptblade->nEngFlameFrameCount[5] = 3;
    000001BC E021                   MOV         #33,R0
    000001BE E303                   MOV         #3,R3
    000001C0 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   238            ptblade->nEngFlameFrameCount[6] = 5;
    000001C2 E022                   MOV         #34,R0
    000001C4 E205                   MOV         #5,R2
    000001C6 0E24                   MOV.B       R2,@(R0,R14)
      bt_tblade.   239            ptblade->nEngFlameFrameCount[7] = 0;
    000001C8 E023                   MOV         #35,R0
    000001CA 0EC4                   MOV.B       R12,@(R0,R14)
      bt_tblade.   240            ptblade->fEngVibration = 0.0f;
    000001CC E028                   MOV         #40,R0
      bt_tblade.   241            ptblade->nEngVibration = 0;
      bt_tblade.   242            ptblade->fEngStaticLightIntensity = 0.0f;
      bt_tblade.   243  E         ptblade->bEngDrawFlames = 0;
      bt_tblade.   244  E         ptblade->bFDrawOrange = 0;
      bt_tblade.   245  E         ptblade->bFDrawBlue = 0;
      bt_tblade.   246            ptblade->nFState = F_RESET;
      bt_tblade.   247            ptblade->nFCell = 0;
      bt_tblade.   248            ptblade->nFGeoCell = 0;
      bt_tblade.   249            ptblade->nFGeoDir = 0;
    000001CE 63C3                   MOV         R12,R3
    000001D0 FEF7                   FMOV.S      FR15,@(R0,R14)
    000001D2 E02C                   MOV         #44,R0
      bt_tblade.   250            ptblade->fFIntensity = 0.0f;
      bt_tblade.   251            /*********************************************
                         +********************************** */
      bt_tblade.   252            /* If this is not the player LOD, set the boun
                         +ding info to the player LOD values */
      bt_tblade.   253            /*********************************************
                         +********************************** */
      bt_tblade.   254            if( nLod != BOATS_LOD_PLAYER ) {
    000001D4 2998                   TST         R9,R9
    000001D6 1EC9                   MOV.L       R12,@(36,R14)
    000001D8 FEF7                   FMOV.S      FR15,@(R0,R14)
    000001DA E034                   MOV         #52,R0
    000001DC 0EC4                   MOV.B       R12,@(R0,R14)
    000001DE E035                   MOV         #53,R0
    000001E0 0EC4                   MOV.B       R12,@(R0,R14)
    000001E2 E036                   MOV         #54,R0
    000001E4 0EC4                   MOV.B       R12,@(R0,R14)
    000001E6 E037                   MOV         #55,R0
    000001E8 0EC4                   MOV.B       R12,@(R0,R14)
    000001EA E038                   MOV         #56,R0
    000001EC 0EC5                   MOV.W       R12,@(R0,R14)
    000001EE E03A                   MOV         #58,R0
    000001F0 0EC5                   MOV.W       R12,@(R0,R14)
    000001F2 E040                   MOV         #64,R0
    000001F4 1ECF                   MOV.L       R12,@(60,R14)
    000001F6 DA29                   MOV.L       L2557+20,R10; _obsys_Load
    000001F8 8D23                   BT/S        L2354
    000001FA FEF7                   FMOV.S      FR15,@(R0,R14)
      bt_tblade.   255                    /* Get our memory frames... */
      bt_tblade.   256                    _pSysmemFrame = sysmem_StartFrame();
    000001FC D228                   MOV.L       L2557+24,R2; _sysmem_StartFrame
    000001FE 420B                   JSR         @R2
    00000200 0009                   NOP
      bt_tblade.   257                    _ObsysFrame = obsys_StartFrame();
    00000202 D328                   MOV.L       L2557+28,R3; _obsys_StartFrame
    00000204 430B                   JSR         @R3
    00000206 1F01                   MOV.L       R0,@(4,R15)
      bt_tblade.   258  E                 obsys_SetSpecialMode( 1, 1 );
    00000208 E501                   MOV         #1,R5
    0000020A 1F02                   MOV.L       R0,@(8,R15)
    0000020C D326                   MOV.L       L2557+32,
                        +                                  R3; _obsys_SetSpecialMod
                        +                                  e
    0000020E 430B                   JSR         @R3
    00000210 6453                   MOV         R5,R4
      bt_tblade.   259                    /* load the player LOD */
      bt_tblade.   260                    pMesh = (Mesh3d_t*)obsys_Load( "GBBTID
                         +AHUP0" );
    00000212 D426                   MOV.L       L2557+36,R4; L1913
    00000214 4A0B                   JSR         @R10
    00000216 0009                   NOP
      bt_tblade.   261  E                 obsys_SetSpecialMode( 0, 0 );
    00000218 D223                   MOV.L       L2557+32,
                        +                                  R2; _obsys_SetSpecialMod
                        +                                  e
    0000021A E500                   MOV         #0,R5
    0000021C 6803                   MOV         R0,R8
    0000021E 420B                   JSR         @R2
    00000220 6453                   MOV         R5,R4
      bt_tblade.   262                    /* we must be able to load the bound i
                         +nfo */
      bt_tblade.   263                    if( !pMesh ) {
    00000222 2888                   TST         R8,R8
    00000224 8B01                   BF          L2558
    00000226 A0D3                   BRA         L2534
    00000228 0009                   NOP
    0000022A              L2558:                            
      bt_tblade.   264                            pPlayer->nLoadFlag = BOATS_DO_
                         +NOTHING;
      bt_tblade.   265                            return;
      bt_tblade.   266                    }
      bt_tblade.   267                    /* copy this bound info into our local
                         + bound var */
      bt_tblade.   268                    mesh3d_CopyBoundingData( &Bound, &pMes
                         +h->Bound );
    0000022A D321                   MOV.L       L2557+40,
                        +                                  R3; _mesh3d_CopyBounding
                        +                                  Data
    0000022C 6583                   MOV         R8,R5
    0000022E 64F3                   MOV         R15,R4
    00000230 754C                   ADD         #76,R5
    00000232 430B                   JSR         @R3
    00000234 740C                   ADD         #12,R4
      bt_tblade.   269                    /* dump any memory that we used during
                         + this process */
      bt_tblade.   270                    sysmem_ReleaseFrame( _pSysmemFrame );
    00000236 D31F                   MOV.L       L2557+44,
                        +                                  R3; _sysmem_ReleaseFrame
    00000238 430B                   JSR         @R3
    0000023A 54F1                   MOV.L       @(4,R15),R4
      bt_tblade.   271                    obsys_ReleaseFrame( _ObsysFrame ); 
    0000023C D31E                   MOV.L       L2557+48,R3; _obsys_ReleaseFrame
    0000023E 430B                   JSR         @R3
    00000240 54F2                   MOV.L       @(8,R15),R4
    00000242              L2354:                            
      bt_tblade.   272            }
      bt_tblade.   273            /* Init the flame particle */
      bt_tblade.   274            _FlameParticleInit();
    00000242 D21E                   MOV.L       L2557+52,R2; L1891
    00000244 420B                   JSR         @R2
    00000246 0009                   NOP
      bt_tblade.   275            
      bt_tblade.   276            if( bInitLights ) {
    00000248 63F2                   MOV.L       @R15,R3
    0000024A 2338                   TST         R3,R3
    0000024C 8952                   BT          L2357
      bt_tblade.   277                    /* Create the booster lights */
      bt_tblade.   278                    worldlt_Init( &ptblade->FLight, pPlaye
                         +r->pWorldOb );
    0000024E E050                   MOV         #80,R0
    00000250 D31B                   MOV.L       L2557+56,R3; _worldlt_Init
    00000252 05DE                   MOV.L       @(R0,R13),R5
    00000254 64E3                   MOV         R14,R4
    00000256 430B                   JSR         @R3
    00000258 7444                   ADD         #68,R4
      bt_tblade.   279                    /*ptblade->FLight.nFlags = MESH3D_LIGH
                         +T_FLAG_LIGHT_SELF; */
      bt_tblade.   280  E                 light_InitOmniLight( &ptblade->FLight.
                         +Light, 0.0f, 0.0f, 0.0f, 50.0f, 1.0f );
    0000025A C71A                   MOVA        L2557+60,R0
    0000025C D31A                   MOV.L       L2557+64,
                        +                                  R3; _light_InitOmniLight
    0000025E F708                   FMOV.S      @R0,FR7
    00000260 64E3                   MOV         R14,R4
    00000262 F4FC                   FMOV.S      FR15,FR4
    00000264 F89D                   FLDI1       FR8
    00000266 F6FC                   FMOV.S      FR15,FR6
    00000268 F5FC                   FMOV.S      FR15,FR5
    0000026A 430B                   JSR         @R3
    0000026C 7444                   ADD         #68,R4
      bt_tblade.   281                    light_SetMotif( &ptblade->FLight.Light
                         +, SLMOTIF_BLUEFLAME1 );
    0000026E D217                   MOV.L       L2557+68,R2; _light_SetMotif
    00000270 64E3                   MOV         R14,R4
    00000272 E50F                   MOV         #15,R5
    00000274 420B                   JSR         @R2
    00000276 7444                   ADD         #68,R4
      bt_tblade.   282                    vec3_Set( &ptblade->FLight.OwnerLightP
                         +os, 0.0f, 5.0f, -15.0f );
    00000278 C715                   MOVA        L2557+72,R0
    0000027A 9408                   MOV.W       L2557+6,R4 ; H'0134
    0000027C F608                   FMOV.S      @R0,FR6
    0000027E C715                   MOVA        L2557+76,R0
    00000280 F508                   FMOV.S      @R0,FR5
    00000282 F4FC                   FMOV.S      FR15,FR4
    00000284 A028                   BRA         L2539
    00000286 34EC                   ADD         R14,R4
    00000288              L2557:                            
    00000288 0160                   .DATA.W     H'0160
    0000028A 00DC                   .DATA.W     H'00DC
    0000028C 00DD                   .DATA.W     H'00DD
    0000028E 0134                   .DATA.W     H'0134
    00000290 <00000000>             .DATA.L     L1911
    00000294 <00000000>             .DATA.L     _sysmem_Alloc
    00000298 <00000000>             .DATA.L     _gerr_Assert
    0000029C <00000000>             .DATA.L     _obsys_Load
    000002A0 <00000000>             .DATA.L     _sysmem_StartFrame
    000002A4 <00000000>             .DATA.L     _obsys_StartFrame
    000002A8 <00000000>             .DATA.L     _obsys_SetSpecialMode
    000002AC <00000000>             .DATA.L     L1913
    000002B0 <00000000>             .DATA.L     _mesh3d_CopyBoundingData
    000002B4 <00000000>             .DATA.L     _sysmem_ReleaseFrame
    000002B8 <00000000>             .DATA.L     _obsys_ReleaseFrame
    000002BC <00000000>             .DATA.L     L1891
    000002C0 <00000000>             .DATA.L     _worldlt_Init
    000002C4 42480000               .DATA.L     H'42480000
    000002C8 <00000000>             .DATA.L     _light_InitOmniLight
    000002CC <00000000>             .DATA.L     _light_SetMotif
    000002D0 C1700000               .DATA.L     H'C1700000
    000002D4 40A00000               .DATA.L     H'40A00000
    000002D8              L2539:                            
    000002D8 D340                   MOV.L       L2559+6,R3 ; _vec3_Set
    000002DA 430B                   JSR         @R3
    000002DC 0009                   NOP
      bt_tblade.   283                    worldob_AttachWorldLight( pPlayer->pWo
                         +rldOb, &ptblade->FLight );
    000002DE D340                   MOV.L       L2559+10,
                        +                                  R3; _worldob_AttachWorld
                        +                                  Light
    000002E0 65E3                   MOV         R14,R5
    000002E2 E050                   MOV         #80,R0
    000002E4 7544                   ADD         #68,R5
    000002E6 430B                   JSR         @R3
    000002E8 04DE                   MOV.L       @(R0,R13),R4
      bt_tblade.   284  E                 light_TurnOn( &ptblade->FLight.Light, 
                         +0 );
    000002EA D23E                   MOV.L       L2559+14,R2; _light_TurnOn
    000002EC 64E3                   MOV         R14,R4
    000002EE E500                   MOV         #0,R5
    000002F0 420B                   JSR         @R2
    000002F2 7444                   ADD         #68,R4
    000002F4              L2357:                            
      bt_tblade.   285            }
      bt_tblade.   286            /* Load the geometry */
      bt_tblade.   287            nTmemBefore = tmem_GetFreeMem( 0 );
    000002F4 D83C                   MOV.L       L2559+18,R8; _tmem_GetFreeMem
    000002F6 480B                   JSR         @R8
    000002F8 E400                   MOV         #0,R4
      bt_tblade.   288            nTmemBefore += tmem_GetFreeMem( 1 );
    000002FA 480B                   JSR         @R8
    000002FC E401                   MOV         #1,R4
      bt_tblade.   289            switch(nLod)
    000002FE 6093                   MOV         R9,R0
    00000300 0009                   NOP
    00000302 8800                   CMP/EQ      #0,R0
    00000304 8905                   BT          L2200
    00000306 8801                   CMP/EQ      #1,R0
    00000308 892C                   BT          L2204
    0000030A 8802                   CMP/EQ      #2,R0
    0000030C 8945                   BT          L2207
    0000030E A07F                   BRA         L2210
    00000310 0009                   NOP
    00000312              L2200:                           ; case label 
      bt_tblade.   290            {
      bt_tblade.   291            case BOATS_LOD_PLAYER:
      bt_tblade.   292                    /* Load the boat */
      bt_tblade.   293                    pPlayer->pDasBoot = (Mesh3d_t*)obsys_L
                         +oad("GBBTIDAHUP0");
    00000312 D436                   MOV.L       L2559+22,R4; L1913
    00000314 4A0B                   JSR         @R10
    00000316 0009                   NOP
    00000318 E154                   MOV         #84,R1
    0000031A 31DC                   ADD         R13,R1
    0000031C 2102                   MOV.L       R0,@R1
      bt_tblade.   294                    ptblade->pRetracted = pPlayer->pDasBoo
                         +t;
    0000031E E054                   MOV         #84,R0
    00000320 03DE                   MOV.L       @(R0,R13),R3
      bt_tblade.   295                    ptblade->pDeployed = (Mesh3d_t *)obsys
                         +_Load( "GBBTIDAHUP1" );
    00000322 D433                   MOV.L       L2559+26,R4; L1917
    00000324 9057                   MOV.W       L2559,R0   ; H'0154
    00000326 4A0B                   JSR         @R10
    00000328 0E36                   MOV.L       R3,@(R0,R14)
    0000032A 9155                   MOV.W       L2559+2,R1 ; H'0158
      bt_tblade.   296                    ptblade->pNoParts = (Mesh3d_t *)obsys_
                         +Load( "GBBTIDAHUP2" );
    0000032C D431                   MOV.L       L2559+30,R4; L1918
    0000032E 31EC                   ADD         R14,R1
    00000330 4A0B                   JSR         @R10
    00000332 2102                   MOV.L       R0,@R1
    00000334 9151                   MOV.W       L2559+4,R1 ; H'015C
    00000336 31EC                   ADD         R14,R1
    00000338 2102                   MOV.L       R0,@R1
      bt_tblade.   297                    if ( ptblade->pRetracted && ptblade->p
                         +Deployed && ptblade->pNoParts ) {
    0000033A 904C                   MOV.W       L2559,R0   ; H'0154
    0000033C 03EE                   MOV.L       @(R0,R14),R3
    0000033E 2338                   TST         R3,R3
    00000340 8946                   BT          L2534
    00000342 9049                   MOV.W       L2559+2,R0 ; H'0158
    00000344 03EE                   MOV.L       @(R0,R14),R3
    00000346 2338                   TST         R3,R3
    00000348 8942                   BT          L2534
    0000034A 9046                   MOV.W       L2559+4,R0 ; H'015C
    0000034C 03EE                   MOV.L       @(R0,R14),R3
    0000034E 2338                   TST         R3,R3
    00000350 893E                   BT          L2534
      bt_tblade.   298                            /* load all of our meshes and 
                         +textures from our table */
      bt_tblade.   299  E                         nReturn = obsys_LoadGroup( aPl
                         +ayerLoadTable, 0 );
    00000352 D32A                   MOV.L       L2559+38,R3; _obsys_LoadGroup
    00000354 D428                   MOV.L       L2559+34,R4; L1809
    00000356 430B                   JSR         @R3
    00000358 E500                   MOV         #0,R5
      bt_tblade.   300                            if( nReturn != -1 ) {
    0000035A 88FF                   CMP/EQ      #-1,R0
    0000035C 8D5D                   BT/S        L2358
    0000035E 6403                   MOV         R0,R4
      bt_tblade.   301                                    pPlayer->nLoadFlag = B
                         +OATS_HULL_ONLY;
      bt_tblade.   302  E                                 ( "NOT ENOUGH MEMORY F
                         +OR ALL OF TIDAL BLADE!\n" );
      bt_tblade.   303                                    return; 
    00000360 A08C                   BRA         L2538
    00000362 0009                   NOP
    00000364              L2204:                           ; case label 
      bt_tblade.   304                            }
      bt_tblade.   305                    } else {
      bt_tblade.   306                            pPlayer->nLoadFlag = BOATS_DO_
                         +NOTHING;
      bt_tblade.   307  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F TIDAL BLADE!\n" );
      bt_tblade.   308                            return;
      bt_tblade.   309                    }
      bt_tblade.   310                    break;
      bt_tblade.   311            case BOATS_LOD_HIGH:
      bt_tblade.   312                    /* Load the boat */
      bt_tblade.   313                    pPlayer->pDasBoot = (Mesh3d_t*)obsys_L
                         +oad("GBBTIDAHUH0");
    00000364 D426                   MOV.L       L2559+42,R4; L1923
    00000366 4A0B                   JSR         @R10
    00000368 0009                   NOP
    0000036A E154                   MOV         #84,R1
    0000036C 31DC                   ADD         R13,R1
    0000036E 2102                   MOV.L       R0,@R1
      bt_tblade.   314                    ptblade->pRetracted = pPlayer->pDasBoo
                         +t;
    00000370 E054                   MOV         #84,R0
    00000372 03DE                   MOV.L       @(R0,R13),R3
      bt_tblade.   315                    ptblade->pDeployed = (Mesh3d_t *)obsys
                         +_Load( "GBBTIDAHUH1" );
    00000374 D423                   MOV.L       L2559+46,R4; L1924
    00000376 902E                   MOV.W       L2559,R0   ; H'0154
    00000378 4A0B                   JSR         @R10
    0000037A 0E36                   MOV.L       R3,@(R0,R14)
    0000037C 912C                   MOV.W       L2559+2,R1 ; H'0158
    0000037E 31EC                   ADD         R14,R1
    00000380 2102                   MOV.L       R0,@R1
      bt_tblade.   316  E                 ptblade->pNoParts = 0;
    00000382 902A                   MOV.W       L2559+4,R0 ; H'015C
    00000384 0EC6                   MOV.L       R12,@(R0,R14)
      bt_tblade.   317                    if( ptblade->pRetracted && ptblade->pD
                         +eployed ) {
    00000386 70F8                   ADD         #-8,R0
    00000388 03EE                   MOV.L       @(R0,R14),R3
    0000038A 2338                   TST         R3,R3
    0000038C 8920                   BT          L2534
    0000038E 9023                   MOV.W       L2559+2,R0 ; H'0158
    00000390 03EE                   MOV.L       @(R0,R14),R3
    00000392 2338                   TST         R3,R3
    00000394 891C                   BT          L2534
      bt_tblade.   318                            /* since this is not a player 
                         +lod, we should copy our Bound data into this hull */
      bt_tblade.   319                            mesh3d_CopyBoundingData( &pPla
                         +yer->pDasBoot->Bound, &Bound );
    00000396 A012                   BRA         L2535
    00000398 0009                   NOP
    0000039A              L2207:                           ; case label 
      bt_tblade.   320                    } else {
      bt_tblade.   321                            pPlayer->nLoadFlag = BOATS_DO_
                         +NOTHING;
      bt_tblade.   322  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F TIDAL BLADE!\n" );
      bt_tblade.   323                            return; 
      bt_tblade.   324                    }
      bt_tblade.   325                    break;
      bt_tblade.   326            case BOATS_LOD_DRONE:
      bt_tblade.   327                    /* load the boat's hull */
      bt_tblade.   328                    pPlayer->pDasBoot = (Mesh3d_t*)obsys_L
                         +oad( "GBBDTIDHUH0" );
    0000039A D41B                   MOV.L       L2559+50,R4; L1927
    0000039C 4A0B                   JSR         @R10
    0000039E 0009                   NOP
    000003A0 E154                   MOV         #84,R1
    000003A2 31DC                   ADD         R13,R1
    000003A4 2102                   MOV.L       R0,@R1
      bt_tblade.   329                    ptblade->pRetracted = pPlayer->pDasBoo
                         +t;
    000003A6 E054                   MOV         #84,R0
    000003A8 03DE                   MOV.L       @(R0,R13),R3
    000003AA 9014                   MOV.W       L2559,R0   ; H'0154
    000003AC 0E36                   MOV.L       R3,@(R0,R14)
      bt_tblade.   330  E                 ptblade->pDeployed = 0;
    000003AE 7004                   ADD         #4,R0
    000003B0 0EC6                   MOV.L       R12,@(R0,R14)
      bt_tblade.   331  E                 ptblade->pNoParts = 0;
    000003B2 7004                   ADD         #4,R0
    000003B4 0EC6                   MOV.L       R12,@(R0,R14)
      bt_tblade.   332                    if( ptblade->pRetracted ) {
    000003B6 70F8                   ADD         #-8,R0
    000003B8 03EE                   MOV.L       @(R0,R14),R3
    000003BA 2338                   TST         R3,R3
    000003BC 8908                   BT          L2534
    000003BE              L2535:                            
      bt_tblade.   333                            /* since this is not a player 
                         +lod, we should copy our Bound data into this hull */
      bt_tblade.   334                            mesh3d_CopyBoundingData( &pPla
                         +yer->pDasBoot->Bound, &Bound );
    000003BE E054                   MOV         #84,R0
    000003C0 D312                   MOV.L       L2559+54,
                        +                                  R3; _mesh3d_CopyBounding
                        +                                  Data
    000003C2 04DE                   MOV.L       @(R0,R13),R4
    000003C4 65F3                   MOV         R15,R5
    000003C6 750C                   ADD         #12,R5
    000003C8 430B                   JSR         @R3
    000003CA 744C                   ADD         #76,R4
    000003CC A025                   BRA         L2358
    000003CE 0009                   NOP
    000003D0              L2534:                            
      bt_tblade.   335                    } else {
      bt_tblade.   336                            pPlayer->nLoadFlag = BOATS_DO_
                         +NOTHING;
    000003D0 E05A                   MOV         #90,R0
      bt_tblade.   337  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F CUT THROAT!\n" );
      bt_tblade.   338                            return; 
    000003D2 A0F8                   BRA         L2356
    000003D4 0DC5                   MOV.W       R12,@(R0,R13)
    000003D6              L2559:                            
    000003D6 0154                   .DATA.W     H'0154
    000003D8 0158                   .DATA.W     H'0158
    000003DA 015C                   .DATA.W     H'015C
    000003DC <00000000>             .DATA.L     _vec3_Set
    000003E0 <00000000>             .DATA.L     _worldob_AttachWorldLight
    000003E4 <00000000>             .DATA.L     _light_TurnOn
    000003E8 <00000000>             .DATA.L     _tmem_GetFreeMem
    000003EC <00000000>             .DATA.L     L1913
    000003F0 <00000000>             .DATA.L     L1917
    000003F4 <00000000>             .DATA.L     L1918
    000003F8 <00000000>             .DATA.L     L1809
    000003FC <00000000>             .DATA.L     _obsys_LoadGroup
    00000400 <00000000>             .DATA.L     L1923
    00000404 <00000000>             .DATA.L     L1924
    00000408 <00000000>             .DATA.L     L1927
    0000040C <00000000>             .DATA.L     _mesh3d_CopyBoundingData
    00000410              L2210:                           ; default label 
      bt_tblade.   339                    }
      bt_tblade.   340                    break;
      bt_tblade.   341            default:
      bt_tblade.   342  E                 if( (!(0)) ) gerr_Assert( 0, "bt_tblad
                         +e.c", 342 );
    00000410 D25B                   MOV.L       L2560+20,R2; _gerr_Assert
    00000412 D55A                   MOV.L       L2560+16,R5; L1911
    00000414 96AA                   MOV.W       L2560,R6   ; H'0156
    00000416 420B                   JSR         @R2
    00000418 E400                   MOV         #0,R4
    0000041A              L2358:                            
      bt_tblade.   343            }
      bt_tblade.   344    
      bt_tblade.   345            if( nLod != BOATS_LOD_DRONE ) {
    0000041A 6093                   MOV         R9,R0
    0000041C 0009                   NOP
    0000041E 8802                   CMP/EQ      #2,R0
    00000420 8B01                   BF          L2561
    00000422 A0C1                   BRA         L2367
    00000424 0009                   NOP
    00000426              L2561:                            
      bt_tblade.   346                    /* Load the engine flame geometry, mus
                         +t be unique per boat because the geometry */
      bt_tblade.   347                    /* is morphed. */
      bt_tblade.   348                    ptblade->pEngFlame = (Mesh3d_t*)obsys_
                         +LoadAnother( "GBBTIDAFLP0" );
    00000426 D458                   MOV.L       L2560+28,R4; L1932
    00000428 DA56                   MOV.L       L2560+24,R10; _obsys_LoadAnother
    0000042A 4A0B                   JSR         @R10
    0000042C 0009                   NOP
      bt_tblade.   349                    if( !ptblade->pEngFlame ) {
    0000042E 6203                   MOV         R0,R2
    00000430 2228                   TST         R2,R2
    00000432 8D23                   BT/S        L2538
    00000434 1E0C                   MOV.L       R0,@(48,R14)
    00000436 55EC                   MOV.L       @(48,R14),R5
      bt_tblade.   350                            pPlayer->nLoadFlag = BOATS_HUL
                         +L_ONLY;
      bt_tblade.   351  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F TIDAL BLADE!\n" );
      bt_tblade.   352                            return;
      bt_tblade.   353                    }
      bt_tblade.   354    
      bt_tblade.   355                    /* Save the original tcoords of the en
                         +gine flame geometry */
      bt_tblade.   356                    for( i = 0; i < 6; i++ ) {
    00000438 66C3                   MOV         R12,R6
    0000043A D454                   MOV.L       L2560+32,R4; L1882
    0000043C 555E                   MOV.L       @(56,R5),R5
    0000043E              L2370:                            
      bt_tblade.   357                            _fEngFlameYCoord[i] = ptblade-
                         +>pEngFlame->pVtx[i].Point.p[1];
    0000043E E004                   MOV         #4,R0
    00000440 F356                   FMOV.S      @(R0,R5),FR3
    00000442 7518                   ADD         #24,R5
    00000444 7603                   ADD         #3,R6
    00000446 F43A                   FMOV.S      FR3,@R4
    00000448 7404                   ADD         #4,R4
    0000044A F356                   FMOV.S      @(R0,R5),FR3
    0000044C 7518                   ADD         #24,R5
    0000044E E306                   MOV         #6,R3
    00000450 F43A                   FMOV.S      FR3,@R4
    00000452 7404                   ADD         #4,R4
    00000454 F356                   FMOV.S      @(R0,R5),FR3
    00000456 3632                   CMP/HS      R3,R6
    00000458 7518                   ADD         #24,R5
    0000045A F43A                   FMOV.S      FR3,@R4
    0000045C 8FEF                   BF/S        L2370
    0000045E 7404                   ADD         #4,R4
      bt_tblade.   358                    }
      bt_tblade.   359                    
      bt_tblade.   360                    /* Load the struts */
      bt_tblade.   361                    ptblade->pLHBStruts = (Mesh3d_t*)obsys
                         +_LoadAnother("GBBTIDASRP1");
    00000460 D44B                   MOV.L       L2560+36,R4; L1935
    00000462 4A0B                   JSR         @R10
    00000464 0009                   NOP
      bt_tblade.   362                    if( !ptblade->pLHBStruts ) {
    00000466 6303                   MOV         R0,R3
    00000468 2338                   TST         R3,R3
    0000046A 8D07                   BT/S        L2538
    0000046C 1E05                   MOV.L       R0,@(20,R14)
      bt_tblade.   363                            pPlayer->nLoadFlag = BOATS_HUL
                         +L_ONLY;
      bt_tblade.   364  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F TIDAL BLADE!\n" );
      bt_tblade.   365                            return;
      bt_tblade.   366                    }
      bt_tblade.   367                    ptblade->pRHBStruts = (Mesh3d_t*)obsys
                         +_LoadAnother("GBBTIDASRP2");
    0000046E D449                   MOV.L       L2560+40,R4; L1937
    00000470 4A0B                   JSR         @R10
    00000472 0009                   NOP
      bt_tblade.   368                    if( !ptblade->pRHBStruts ) {
    00000474 6303                   MOV         R0,R3
    00000476 2338                   TST         R3,R3
    00000478 8F03                   BF/S        L2372
    0000047A 1E06                   MOV.L       R0,@(24,R14)
    0000047C              L2538:                            
      bt_tblade.   369                            pPlayer->nLoadFlag = BOATS_HUL
                         +L_ONLY; 
    0000047C E05A                   MOV         #90,R0
      bt_tblade.   370  E                         ( "NOT ENOUGH MEMORY FOR ALL O
                         +F TIDAL BLADE!\n" );
      bt_tblade.   371                            return;
    0000047E A0A2                   BRA         L2356
    00000480 0DB5                   MOV.W       R11,@(R0,R13)
    00000482              L2372:                            
      bt_tblade.   372                    }
      bt_tblade.   373                    /* Save the original vertice info */
      bt_tblade.   374                    _afLStrutVerts[0] = ptblade->pLHBStrut
                         +s->pVtx[1].Point.p[0];
    00000482 53E5                   MOV.L       @(20,R14),R3
      bt_tblade.   375                    _afLStrutVerts[1] = ptblade->pLHBStrut
                         +s->pVtx[3].Point.p[0];
    00000484 E004                   MOV         #4,R0
    00000486 D444                   MOV.L       L2560+44,R4; L1880
    00000488 523E                   MOV.L       @(56,R3),R2
    0000048A 7218                   ADD         #24,R2
    0000048C F328                   FMOV.S      @R2,FR3
    0000048E F43A                   FMOV.S      FR3,@R4
    00000490 53E5                   MOV.L       @(20,R14),R3
    00000492 523E                   MOV.L       @(56,R3),R2
    00000494 7248                   ADD         #72,R2
    00000496 F328                   FMOV.S      @R2,FR3
    00000498 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   376                    _afLStrutVerts[2] = ptblade->pLHBStrut
                         +s->pVtx[4].Point.p[0];
    0000049A E008                   MOV         #8,R0
    0000049C 53E5                   MOV.L       @(20,R14),R3
    0000049E 523E                   MOV.L       @(56,R3),R2
    000004A0 7260                   ADD         #96,R2
    000004A2 F328                   FMOV.S      @R2,FR3
    000004A4 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   377                    _afLStrutVerts[3] = ptblade->pLHBStrut
                         +s->pVtx[7].Point.p[0];
    000004A6 E00C                   MOV         #12,R0
    000004A8 53E5                   MOV.L       @(20,R14),R3
    000004AA 9760                   MOV.W       L2560+2,R7 ; H'00A8
    000004AC 523E                   MOV.L       @(56,R3),R2
    000004AE 327C                   ADD         R7,R2
    000004B0 F328                   FMOV.S      @R2,FR3
    000004B2 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   378                    _afLStrutVerts[4] = ptblade->pLHBStrut
                         +s->pVtx[9].Point.p[0];
    000004B4 E010                   MOV         #16,R0
    000004B6 53E5                   MOV.L       @(20,R14),R3
    000004B8 955A                   MOV.W       L2560+4,R5 ; H'00D8
    000004BA 523E                   MOV.L       @(56,R3),R2
    000004BC 325C                   ADD         R5,R2
    000004BE F328                   FMOV.S      @R2,FR3
    000004C0 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   379                    _afLStrutVerts[5] = ptblade->pLHBStrut
                         +s->pVtx[10].Point.p[0];
    000004C2 53E5                   MOV.L       @(20,R14),R3
    000004C4 E014                   MOV         #20,R0
    000004C6 9654                   MOV.W       L2560+6,R6 ; H'00F0
    000004C8 523E                   MOV.L       @(56,R3),R2
    000004CA 326C                   ADD         R6,R2
    000004CC F328                   FMOV.S      @R2,FR3
    000004CE F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   380                    _afLStrutVerts[6] = ptblade->pLHBStrut
                         +s->pVtx[13].Point.p[0];
    000004D0 E018                   MOV         #24,R0
    000004D2 53E5                   MOV.L       @(20,R14),R3
    000004D4 924E                   MOV.W       L2560+8,R2 ; H'0138
    000004D6 513E                   MOV.L       @(56,R3),R1
    000004D8 312C                   ADD         R2,R1
    000004DA F318                   FMOV.S      @R1,FR3
    000004DC F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   381                    _afLStrutVerts[7] = ptblade->pLHBStrut
                         +s->pVtx[15].Point.p[0];
    000004DE 53E5                   MOV.L       @(20,R14),R3
    000004E0 9149                   MOV.W       L2560+10,R1; H'0168
    000004E2 503E                   MOV.L       @(56,R3),R0
    000004E4 F316                   FMOV.S      @(R0,R1),FR3
    000004E6 E01C                   MOV         #28,R0
    000004E8 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   382                    _afLStrutVerts[8] = ptblade->pLHBStrut
                         +s->pVtx[16].Point.p[0];
    000004EA 53E5                   MOV.L       @(20,R14),R3
    000004EC 9044                   MOV.W       L2560+12,R0; H'0180
    000004EE 533E                   MOV.L       @(56,R3),R3
    000004F0 F336                   FMOV.S      @(R0,R3),FR3
    000004F2 E020                   MOV         #32,R0
    000004F4 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   383    
      bt_tblade.   384                    _afRStrutVerts[0] = ptblade->pRHBStrut
                         +s->pVtx[1].Point.p[0];
    000004F6 53E6                   MOV.L       @(24,R14),R3
    000004F8 D428                   MOV.L       L2560+48,R4; L1881
    000004FA 523E                   MOV.L       @(56,R3),R2
    000004FC 7218                   ADD         #24,R2
    000004FE F328                   FMOV.S      @R2,FR3
    00000500 F43A                   FMOV.S      FR3,@R4
      bt_tblade.   385                    _afRStrutVerts[1] = ptblade->pRHBStrut
                         +s->pVtx[3].Point.p[0];
    00000502 53E6                   MOV.L       @(24,R14),R3
    00000504 E004                   MOV         #4,R0
    00000506 523E                   MOV.L       @(56,R3),R2
    00000508 7248                   ADD         #72,R2
    0000050A F328                   FMOV.S      @R2,FR3
    0000050C F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   386                    _afRStrutVerts[2] = ptblade->pRHBStrut
                         +s->pVtx[4].Point.p[0];
    0000050E E008                   MOV         #8,R0
    00000510 53E6                   MOV.L       @(24,R14),R3
    00000512 523E                   MOV.L       @(56,R3),R2
    00000514 7260                   ADD         #96,R2
    00000516 F328                   FMOV.S      @R2,FR3
    00000518 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   387                    _afRStrutVerts[3] = ptblade->pRHBStrut
                         +s->pVtx[7].Point.p[0];
    0000051A E00C                   MOV         #12,R0
    0000051C 53E6                   MOV.L       @(24,R14),R3
    0000051E 523E                   MOV.L       @(56,R3),R2
    00000520 372C                   ADD         R2,R7
    00000522 F378                   FMOV.S      @R7,FR3
    00000524 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   388                    _afRStrutVerts[4] = ptblade->pRHBStrut
                         +s->pVtx[9].Point.p[0];
    00000526 E010                   MOV         #16,R0
    00000528 53E6                   MOV.L       @(24,R14),R3
    0000052A 523E                   MOV.L       @(56,R3),R2
    0000052C 352C                   ADD         R2,R5
    0000052E F358                   FMOV.S      @R5,FR3
    00000530 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   389                    _afRStrutVerts[5] = ptblade->pRHBStrut
                         +s->pVtx[10].Point.p[0];
    00000532 E014                   MOV         #20,R0
    00000534 53E6                   MOV.L       @(24,R14),R3
    00000536 523E                   MOV.L       @(56,R3),R2
    00000538 362C                   ADD         R2,R6
    0000053A F368                   FMOV.S      @R6,FR3
    0000053C F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   390                    _afRStrutVerts[6] = ptblade->pRHBStrut
                         +s->pVtx[13].Point.p[0];
    0000053E 53E6                   MOV.L       @(24,R14),R3
    00000540 9218                   MOV.W       L2560+8,R2 ; H'0138
    00000542 503E                   MOV.L       @(56,R3),R0
    00000544 F326                   FMOV.S      @(R0,R2),FR3
    00000546 E018                   MOV         #24,R0
    00000548 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   391                    _afRStrutVerts[7] = ptblade->pRHBStrut
                         +s->pVtx[15].Point.p[0];
    0000054A 53E6                   MOV.L       @(24,R14),R3
    0000054C 503E                   MOV.L       @(56,R3),R0
    0000054E F316                   FMOV.S      @(R0,R1),FR3
    00000550 E01C                   MOV         #28,R0
    00000552 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   392                    _afRStrutVerts[8] = ptblade->pRHBStrut
                         +s->pVtx[16].Point.p[0];
    00000554 53E6                   MOV.L       @(24,R14),R3
    00000556 910F                   MOV.W       L2560+12,R1; H'0180
    00000558 503E                   MOV.L       @(56,R3),R0
    0000055A F316                   FMOV.S      @(R0,R1),FR3
    0000055C E020                   MOV         #32,R0
    0000055E F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   393    
      bt_tblade.   394                    /* Load the common geometry objects */
      bt_tblade.   395  E                 nReturn = obsys_LoadGroup( aCommonLoad
                         +Table, 0 );
    00000560 D310                   MOV.L       L2560+56,R3; _obsys_LoadGroup
    00000562 D40F                   MOV.L       L2560+52,R4; L1829
    00000564 430B                   JSR         @R3
    00000566 E500                   MOV         #0,R5
    00000568 A01F                   BRA         L2373
    0000056A 6403                   MOV         R0,R4
    0000056C              L2560:                            
    0000056C 0156                   .DATA.W     H'0156
    0000056E 00A8                   .DATA.W     H'00A8
    00000570 00D8                   .DATA.W     H'00D8
    00000572 00F0                   .DATA.W     H'00F0
    00000574 0138                   .DATA.W     H'0138
    00000576 0168                   .DATA.W     H'0168
    00000578 0180                   .DATA.W     H'0180
    0000057A 00000002               .RES.W      1
    0000057C <00000000>             .DATA.L     L1911
    00000580 <00000000>             .DATA.L     _gerr_Assert
    00000584 <00000000>             .DATA.L     _obsys_LoadAnother
    00000588 <00000000>             .DATA.L     L1932
    0000058C <00000000>             .DATA.L     L1882
    00000590 <00000000>             .DATA.L     L1935
    00000594 <00000000>             .DATA.L     L1937
    00000598 <00000000>             .DATA.L     L1880
    0000059C <00000000>             .DATA.L     L1881
    000005A0 <00000000>             .DATA.L     L1829
    000005A4 <00000000>             .DATA.L     _obsys_LoadGroup
    000005A8              L2367:                            
      bt_tblade.   396            } else {
      bt_tblade.   397                    nReturn = -1;
    000005A8 E4FF                   MOV         #-1,R4
    000005AA              L2373:                            
      bt_tblade.   398            }
      bt_tblade.   399            if( nReturn == -1 ) {
    000005AA 6043                   MOV         R4,R0
    000005AC 0009                   NOP
    000005AE 88FF                   CMP/EQ      #-1,R0
    000005B0 8B07                   BF          L2374
      bt_tblade.   400                    nTmemAfter = tmem_GetFreeMem( 0 );
    000005B2 480B                   JSR         @R8
    000005B4 E400                   MOV         #0,R4
      bt_tblade.   401                    nTmemAfter += tmem_GetFreeMem( 1 );
    000005B6 480B                   JSR         @R8
    000005B8 E401                   MOV         #1,R4
      bt_tblade.   402  E                 ( "Tidal Blade used %d bytes of textur
                         +e space\n", nTmemBefore - nTmemAfter );
      bt_tblade.   403                    pPlayer->nLoadFlag = BOATS_EVERYTHING_
                         +OK;
    000005BA E05A                   MOV         #90,R0
    000005BC E203                   MOV         #3,R2
    000005BE A002                   BRA         L2356
    000005C0 0D25                   MOV.W       R2,@(R0,R13)
    000005C2              L2374:                            
      bt_tblade.   404            } else {
      bt_tblade.   405                    pPlayer->nLoadFlag = BOATS_HULL_ONLY;
    000005C2 E05A                   MOV         #90,R0
    000005C4 0DB5                   MOV.W       R11,@(R0,R13)
      bt_tblade.   406  E                 ( "NOT ENOUGH MEMORY FOR ALL OF TIDAL 
                         +BLADE!\n" );
      bt_tblade.   407            }
      bt_tblade.   408    }
    000005C6              L2356:                            
    000005C6 9173                   MOV.W       L2562,R1   ; H'0080
    000005C8 3F1C                   ADD         R1,R15
    000005CA 4F26                   LDS.L       @R15+,PR
    000005CC FFF9                   FMOV.S      @R15+,FR15
    000005CE 68F6                   MOV.L       @R15+,R8
    000005D0 69F6                   MOV.L       @R15+,R9
    000005D2 6AF6                   MOV.L       @R15+,R10
    000005D4 6BF6                   MOV.L       @R15+,R11
    000005D6 6CF6                   MOV.L       @R15+,R12
    000005D8 6DF6                   MOV.L       @R15+,R13
    000005DA 000B                   RTS
    000005DC 6EF6                   MOV.L       @R15+,R14
      bt_tblade.   409    
      bt_tblade.   410    void bt_tblade_Work( WorldOb_t *pWorldOb ) {
    000005DE              _bt_tblade_Work:                 ; function: bt_tblade
                        +                                  _Work
                                                           ; frame size=16
    000005DE 2FE6                   MOV.L       R14,@-R15
      bt_tblade.   411            Player_t  *pPlayer = (Player_t *)pWorldOb->pUs
                         +erObject;
      bt_tblade.   412            TBlade_t *ptblade = (TBlade_t *)pPlayer->pBoat
                         +Data;
    000005E0 E060                   MOV         #96,R0
    000005E2 2FD6                   MOV.L       R13,@-R15
      bt_tblade.   413            f32 fThrottle;
      bt_tblade.   414    
      bt_tblade.   415            if( pPlayer->nLoadFlag > BOATS_HULL_ONLY ) {
    000005E4 E201                   MOV         #1,R2
    000005E6 FFFB                   FMOV.S      FR15,@-R15
    000005E8 5E43                   MOV.L       @(12,R4),R14
    000005EA 4F22                   STS.L       PR,@-R15
    000005EC 0DEE                   MOV.L       @(R0,R14),R13
    000005EE E05A                   MOV         #90,R0
    000005F0 03ED                   MOV.W       @(R0,R14),R3
    000005F2 633D                   EXTU.W      R3,R3
    000005F4 3327                   CMP/GT      R2,R3
    000005F6 8B56                   BF          L2376
      bt_tblade.   416    
      bt_tblade.   417                    switch( pPlayer->nLod ) 
    000005F8 E058                   MOV         #88,R0
    000005FA 00ED                   MOV.W       @(R0,R14),R0
    000005FC 8800                   CMP/EQ      #0,R0
    000005FE 8905                   BT          L2215
    00000600 8801                   CMP/EQ      #1,R0
    00000602 8924                   BT          L2216
    00000604 8802                   CMP/EQ      #2,R0
    00000606 894E                   BT          L2376
    00000608 A044                   BRA         L2218
    0000060A 0009                   NOP
    0000060C              L2215:                           ; case label 
      bt_tblade.   418                    {
      bt_tblade.   419                    case BOATS_LOD_PLAYER:
      bt_tblade.   420                            /* Process the engine vibratio
                         +ns */
      bt_tblade.   421  E                         fThrottle = ( (pPlayer->Contro
                         +ls.fWithDeadZone[1])>=0.0f ? (pPlayer->Controls.fWithD
                         +eadZone[1]) : -(pPlayer->Controls.fWithDeadZone[1]) ) 
                         ++ 0.25f;
    0000060C E040                   MOV         #64,R0
    0000060E F38D                   FLDI0       FR3
    00000610 F4E6                   FMOV.S      @(R0,R14),FR4
    00000612 F345                   FCMP/GT     FR4,FR3
    00000614 8901                   BT          L2378
    00000616 A002                   BRA         L2379
    00000618 F34C                   FMOV.S      FR4,FR3
    0000061A              L2378:                            
    0000061A F34C                   FMOV.S      FR4,FR3
    0000061C F34D                   FNEG        FR3
    0000061E              L2379:                            
    0000061E C725                   MOVA        L2562+4,R0
      bt_tblade.   422                            fThrottle *= xmath_NextSin90Va
                         +lue();
    00000620 D325                   MOV.L       L2562+8,
                        +                                  R3 ; _xmath_NextSin90Valu
                        +                                  e
    00000622 F208                   FMOV.S      @R0,FR2
    00000624 FF3C                   FMOV.S      FR3,FR15
    00000626 430B                   JSR         @R3
    00000628 FF20                   FADD        FR2,FR15
      bt_tblade.   423  E                         ptblade->fEngVibration =  xmat
                         +h_RandomFloat() * 0.05f * fThrottle;
    0000062A D224                   MOV.L       L2562+12,R2; _xmath_RandomFloat
    0000062C 420B                   JSR         @R2
    0000062E FF02                   FMUL        FR0,FR15
    00000630 F0F2                   FMUL        FR15,FR0
    00000632 C723                   MOVA        L2562+16,R0
    00000634 F308                   FMOV.S      @R0,FR3
    00000636 E028                   MOV         #40,R0
      bt_tblade.   424                            ptblade->nEngVibration = (int)
                         +(xmath_RandomFloat() * 100.0f * fThrottle);
    00000638 D320                   MOV.L       L2562+12,R3; _xmath_RandomFloat
    0000063A F032                   FMUL        FR3,FR0
    0000063C 430B                   JSR         @R3
    0000063E FD07                   FMOV.S      FR0,@(R0,R13)
    00000640 F0F2                   FMUL        FR15,FR0
    00000642 C720                   MOVA        L2562+20,R0
    00000644 F308                   FMOV.S      @R0,FR3
    00000646 F032                   FMUL        FR3,FR0
    00000648 F03D                   FTRC        FR0,FPUL
    0000064A 035A                   STS         FPUL,R3
    0000064C 1D39                   MOV.L       R3,@(36,R13)
      bt_tblade.   425                    case BOATS_LOD_HIGH:
    0000064E              L2216:                           ; case label 
      bt_tblade.   426                            /* Process the hydro boost ani
                         +m */
      bt_tblade.   427                            _ProcessHydroBoost( ptblade, p
                         +Player );
    0000064E 65E3                   MOV         R14,R5
    00000650 B141                   BSR         L1884
    00000652 64D3                   MOV         R13,R4
      bt_tblade.   428                            /* Process the flames */
      bt_tblade.   429                            _ProcessFlame( ptblade, pPlaye
                         +r );
    00000654 65E3                   MOV         R14,R5
    00000656 B326                   BSR         L1888
    00000658 64D3                   MOV         R13,R4
      bt_tblade.   430                            _ProcessEngineFlames( ptblade,
                         + pPlayer );
    0000065A 65E3                   MOV         R14,R5
    0000065C B262                   BSR         L1886
    0000065E 64D3                   MOV         R13,R4
      bt_tblade.   431                            /* ADD A FLAME PARTICLE IF NEE
                         +DED */
      bt_tblade.   432  E                         if( (pPlayer->nLoadFlag == BOA
                         +TS_EVERYTHING_OK) && !(pPlayer->nFlags & 0x0004 ) ) {
    00000660 E05A                   MOV         #90,R0
    00000662 00ED                   MOV.W       @(R0,R14),R0
    00000664 600D                   EXTU.W      R0,R0
    00000666 8803                   CMP/EQ      #3,R0
    00000668 8B1D                   BF          L2376
    0000066A 60E2                   MOV.L       @R14,R0
    0000066C C804                   TST         #4,R0
    0000066E 8B1A                   BF          L2376
      bt_tblade.   433                                    if( ptblade->bEngDrawF
                         +lames || ptblade->bFDrawOrange || ptblade->bFDrawBlue 
                         +) {
    00000670 E034                   MOV         #52,R0
    00000672 03DC                   MOV.B       @(R0,R13),R3
    00000674 2338                   TST         R3,R3
    00000676 8B07                   BF          L2382
    00000678 E035                   MOV         #53,R0
    0000067A 03DC                   MOV.B       @(R0,R13),R3
    0000067C 2338                   TST         R3,R3
    0000067E 8B03                   BF          L2382
    00000680 E036                   MOV         #54,R0
    00000682 03DC                   MOV.B       @(R0,R13),R3
    00000684 2338                   TST         R3,R3
    00000686 890E                   BT          L2376
    00000688              L2382:                            
      bt_tblade.   434                                            _FlameParticle
                         +Add( pPlayer );
    00000688 4F26                   LDS.L       @R15+,PR
    0000068A 64E3                   MOV         R14,R4
    0000068C FFF9                   FMOV.S      @R15+,FR15
    0000068E 6DF6                   MOV.L       @R15+,R13
    00000690 A685                   BRA         L1892
    00000692 6EF6                   MOV.L       @R15+,R14
    00000694              L2218:                           ; default label 
      bt_tblade.   435                                    }
      bt_tblade.   436                            }
      bt_tblade.   437                            break;
      bt_tblade.   438                    case BOATS_LOD_DRONE:
      bt_tblade.   439                            /* no need to do anything, the
                         +se boats can't get powerups */
      bt_tblade.   440                            break;
      bt_tblade.   441                    default:
      bt_tblade.   442  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +bt_tblade.c", 442 );
    00000694 4F26                   LDS.L       @R15+,PR
    00000696 D20D                   MOV.L       L2562+28,R2; _gerr_Assert
    00000698 E400                   MOV         #0,R4
    0000069A D50B                   MOV.L       L2562+24,R5; L1911
    0000069C FFF9                   FMOV.S      @R15+,FR15
    0000069E 9608                   MOV.W       L2562+2,R6 ; H'01BA
    000006A0 6DF6                   MOV.L       @R15+,R13
    000006A2 422B                   JMP         @R2
    000006A4 6EF6                   MOV.L       @R15+,R14
    000006A6              L2376:                            
      bt_tblade.   443                            break;
      bt_tblade.   444                    }
      bt_tblade.   445            }
      bt_tblade.   446    }
    000006A6 4F26                   LDS.L       @R15+,PR
    000006A8 FFF9                   FMOV.S      @R15+,FR15
    000006AA 6DF6                   MOV.L       @R15+,R13
    000006AC 000B                   RTS
    000006AE 6EF6                   MOV.L       @R15+,R14
    000006B0              L2562:                            
    000006B0 0080                   .DATA.W     H'0080
    000006B2 01BA                   .DATA.W     H'01BA
    000006B4 3E800000               .DATA.L     H'3E800000
    000006B8 <00000000>             .DATA.L     _xmath_NextSin90Value
    000006BC <00000000>             .DATA.L     _xmath_RandomFloat
    000006C0 3D4CCCCC               .DATA.L     H'3D4CCCCC
    000006C4 42C80000               .DATA.L     H'42C80000
    000006C8 <00000000>             .DATA.L     L1911
    000006CC <00000000>             .DATA.L     _gerr_Assert
      bt_tblade.   447    
      bt_tblade.   448    void bt_tblade_Draw( WorldOb_t *pWorldOb ) {
    000006D0              _bt_tblade_Draw:                 ; function: bt_tblade
                        +                                  _Draw
                                                           ; frame size=152
    000006D0 2FE6                   MOV.L       R14,@-R15
      bt_tblade.   449            Xfm_t xfm;
      bt_tblade.   450            int nLod;
      bt_tblade.   451            Player_t  *pPlayer = (Player_t *)pWorldOb->pUs
                         +erObject;
      bt_tblade.   452            TBlade_t *ptblade = (TBlade_t *)pPlayer->pBoat
                         +Data;
    000006D2 E060                   MOV         #96,R0
    000006D4 2FD6                   MOV.L       R13,@-R15
    000006D6 2FC6                   MOV.L       R12,@-R15
    000006D8 2FB6                   MOV.L       R11,@-R15
    000006DA 2FA6                   MOV.L       R10,@-R15
    000006DC FFFB                   FMOV.S      FR15,@-R15
    000006DE FFEB                   FMOV.S      FR14,@-R15
    000006E0 FFDB                   FMOV.S      FR13,@-R15
    000006E2 5C43                   MOV.L       @(12,R4),R12
    000006E4 4F22                   STS.L       PR,@-R15
    000006E6 0ECE                   MOV.L       @(R0,R12),R14
      bt_tblade.   453            Mesh3d_t *pMesh;
      bt_tblade.   454            f32 fX, fZ;
      bt_tblade.   455  E         int bDrawParts = 0;
      bt_tblade.   456            
      bt_tblade.   457            if( pPlayer->nLoadFlag > BOATS_DO_NOTHING ) {
    000006E8 E05A                   MOV         #90,R0
    000006EA 03CD                   MOV.W       @(R0,R12),R3
    000006EC 7F8C                   ADD         #-116,R15
    000006EE 633D                   EXTU.W      R3,R3
    000006F0 4315                   CMP/PL      R3
    000006F2 8D02                   BT/S        L2563
    000006F4 EA00                   MOV         #0,R10
    000006F6 A0E0                   BRA         L2384
    000006F8 0009                   NOP
    000006FA              L2563:                            
      bt_tblade.   458                    
      bt_tblade.   459                    switch( pPlayer->nLod ) 
    000006FA E058                   MOV         #88,R0
    000006FC DD0E                   MOV.L       L2564+6,R13; _mesh3d_Draw
    000006FE 00CD                   MOV.W       @(R0,R12),R0
    00000700 8800                   CMP/EQ      #0,R0
    00000702 8909                   BT          L2219
    00000704 8801                   CMP/EQ      #1,R0
    00000706 8B01                   BF          L2565
    00000708 A091                   BRA         L2220
    0000070A 0009                   NOP
    0000070C              L2565:                            
    0000070C 8802                   CMP/EQ      #2,R0
    0000070E 8B01                   BF          L2566
    00000710 A0A9                   BRA         L2221
    00000712 0009                   NOP
    00000714              L2566:                            
    00000714 A0CC                   BRA         L2222
    00000716 0009                   NOP
    00000718              L2219:                           ; case label 
      bt_tblade.   460                    {
      bt_tblade.   461                    case BOATS_LOD_PLAYER:
      bt_tblade.   462                            if( ptblade->nHBState == _HB_O
                         +PEN ) {
    00000718 85E2                   MOV.W       @(4,R14),R0
    0000071A 600D                   EXTU.W      R0,R0
    0000071C 8802                   CMP/EQ      #2,R0
    0000071E 8B02                   BF          L2386
      bt_tblade.   463                                    pMesh = ptblade->pDepl
                         +oyed;
    00000720 9007                   MOV.W       L2564,R0   ; H'0158
    00000722 A004                   BRA         L2541
    00000724 0009                   NOP
    00000726              L2386:                            
      bt_tblade.   464                            } else if( ptblade->nHBState =
                         += _HB_CLOSED ) {
    00000726 85E2                   MOV.W       @(4,R14),R0
    00000728 2008                   TST         R0,R0
    0000072A 8B07                   BF          L2388
      bt_tblade.   465                                    pMesh = ptblade->pRetr
                         +acted;
    0000072C 9002                   MOV.W       L2564+2,R0 ; H'0154
    0000072E              L2541:                            
    0000072E A00E                   BRA         L2387
    00000730 0BEE                   MOV.L       @(R0,R14),R11
    00000732              L2564:                            
    00000732 0158                   .DATA.W     H'0158
    00000734 0154                   .DATA.W     H'0154
    00000736 00000002               .RES.W      1
    00000738 <00000000>             .DATA.L     _mesh3d_Draw
    0000073C              L2388:                            
      bt_tblade.   466                            } else {
      bt_tblade.   467                                    pMesh = ptblade->pNoPa
                         +rts;
    0000073C 909B                   MOV.W       L2567,R0   ; H'015C
      bt_tblade.   468                                    if( pPlayer->nLoadFlag
                         + > BOATS_HULL_ONLY ) {
    0000073E E401                   MOV         #1,R4
    00000740 0BEE                   MOV.L       @(R0,R14),R11
    00000742 E05A                   MOV         #90,R0
    00000744 03CD                   MOV.W       @(R0,R12),R3
    00000746 633D                   EXTU.W      R3,R3
    00000748 3347                   CMP/GT      R4,R3
    0000074A 8B00                   BF          L2387
      bt_tblade.   469  E                                         bDrawParts = 1
                         +;
    0000074C 6A43                   MOV         R4,R10
    0000074E              L2387:                            
      bt_tblade.   470                                    }
      bt_tblade.   471                            }
      bt_tblade.   472                            _ChangeStaticLightingMotifs( p
                         +tblade );
    0000074E D24B                   MOV.L       L2567+6,R2 ; L1895
    00000750 420B                   JSR         @R2
    00000752 64E3                   MOV         R14,R4
      bt_tblade.   473    
      bt_tblade.   474  E                         mesh3d_Draw( pMesh, 0xf, 1);
    00000754 E50F                   MOV         #15,R5
    00000756 E601                   MOV         #1,R6
    00000758 4D0B                   JSR         @R13
    0000075A 64B3                   MOV         R11,R4
      bt_tblade.   475                                                    
      bt_tblade.   476                            if( bDrawParts ) {
    0000075C DB48                   MOV.L       L2567+10,R11; _xfm_Push
    0000075E 2AA8                   TST         R10,R10
    00000760 8D4C                   BT/S        L2391
    00000762 FF8D                   FLDI0       FR15
      bt_tblade.   477                                    /* draw the struts */
      bt_tblade.   478  E                                 mesh3d_Draw( ptblade->
                         +pLHBStruts, 0xf, 1 );
    00000764 E50F                   MOV         #15,R5
    00000766 E601                   MOV         #1,R6
    00000768 4D0B                   JSR         @R13
    0000076A 54E5                   MOV.L       @(20,R14),R4
      bt_tblade.   479  E                                 mesh3d_Draw( ptblade->
                         +pRHBStruts, 0xf, 1 );
    0000076C E50F                   MOV         #15,R5
    0000076E E601                   MOV         #1,R6
    00000770 4D0B                   JSR         @R13
    00000772 54E6                   MOV.L       @(24,R14),R4
      bt_tblade.   480                                    /* Translate the left 
                         +cowling */
      bt_tblade.   481                                    fX = ptblade->fHBLeftX
                         +lat;
    00000774 E008                   MOV         #8,R0
      bt_tblade.   482                                    xfm_BuildXlatFromPoint
                         +( &xfm, fX, 0.0f, 0.0f );
    00000776 DA43                   MOV.L       L2567+14,
                        +                                  R10; _xfm_BuildXlatFromP
                        +                                  oint
    00000778 FEE6                   FMOV.S      @(R0,R14),FR14
    0000077A 64F3                   MOV         R15,R4
    0000077C F6FC                   FMOV.S      FR15,FR6
    0000077E F4EC                   FMOV.S      FR14,FR4
    00000780 F5FC                   FMOV.S      FR15,FR5
    00000782 4A0B                   JSR         @R10
    00000784 7408                   ADD         #8,R4
      bt_tblade.   483                                    xfm_Push( &xfm );
    00000786 64F3                   MOV         R15,R4
    00000788 4B0B                   JSR         @R11
    0000078A 7408                   ADD         #8,R4
      bt_tblade.   484  E                                 mesh3d_Draw( _pPLCowli
                         +ng, 0xf, 1 );
    0000078C D33E                   MOV.L       L2567+18,R3; L1804
    0000078E E50F                   MOV         #15,R5
    00000790 E601                   MOV         #1,R6
    00000792 4D0B                   JSR         @R13
    00000794 6432                   MOV.L       @R3,R4
      bt_tblade.   485                                    /* Translate the left 
                         +booster */
      bt_tblade.   486                                    fZ = ptblade->fHBBoost
                         +erXlat;
    00000796 E00C                   MOV         #12,R0
      bt_tblade.   487                                    xfm_BuildXlatFromPoint
                         +( &xfm, 0.0f, 0.0f, fZ );
    00000798 F4FC                   FMOV.S      FR15,FR4
    0000079A FDE6                   FMOV.S      @(R0,R14),FR13
    0000079C 64F3                   MOV         R15,R4
    0000079E F5FC                   FMOV.S      FR15,FR5
    000007A0 F6DC                   FMOV.S      FR13,FR6
    000007A2 4A0B                   JSR         @R10
    000007A4 7408                   ADD         #8,R4
      bt_tblade.   488                                    xfm_Push( &xfm );
    000007A6 64F3                   MOV         R15,R4
    000007A8 4B0B                   JSR         @R11
    000007AA 7408                   ADD         #8,R4
      bt_tblade.   489  E                                 mesh3d_Draw( _pPLBoost
                         +er, 0xf, 1 );
    000007AC D337                   MOV.L       L2567+22,R3; L1807
    000007AE E50F                   MOV         #15,R5
    000007B0 E601                   MOV         #1,R6
    000007B2 4D0B                   JSR         @R13
    000007B4 6432                   MOV.L       @R3,R4
      bt_tblade.   490                                    xfm_PopN( 2 );
    000007B6 D236                   MOV.L       L2567+26,R2; _xfm_PopN
    000007B8 420B                   JSR         @R2
    000007BA E402                   MOV         #2,R4
      bt_tblade.   491                                    /* Translate the right
                         + cowling */
      bt_tblade.   492                                    fX = -fX;
    000007BC F4EC                   FMOV.S      FR14,FR4
      bt_tblade.   493                                    xfm_BuildXlatFromPoint
                         +( &xfm, fX, 0.0f, 0.0f );
    000007BE 64F3                   MOV         R15,R4
    000007C0 F5FC                   FMOV.S      FR15,FR5
    000007C2 F44D                   FNEG        FR4
    000007C4 F6FC                   FMOV.S      FR15,FR6
    000007C6 4A0B                   JSR         @R10
    000007C8 7408                   ADD         #8,R4
      bt_tblade.   494                                    xfm_Push( &xfm );
    000007CA 64F3                   MOV         R15,R4
    000007CC 4B0B                   JSR         @R11
    000007CE 7408                   ADD         #8,R4
      bt_tblade.   495  E                                 mesh3d_Draw( _pPRCowli
                         +ng, 0xf, 1 );
    000007D0 D330                   MOV.L       L2567+30,R3; L1805
    000007D2 E50F                   MOV         #15,R5
    000007D4 E601                   MOV         #1,R6
    000007D6 4D0B                   JSR         @R13
    000007D8 6432                   MOV.L       @R3,R4
      bt_tblade.   496                                    /* Translate the right
                         + booster */
      bt_tblade.   497                                    xfm_BuildXlatFromPoint
                         +( &xfm, 0.0f, 0.0f, fZ );
    000007DA F4FC                   FMOV.S      FR15,FR4
    000007DC 64F3                   MOV         R15,R4
    000007DE F6DC                   FMOV.S      FR13,FR6
    000007E0 F5FC                   FMOV.S      FR15,FR5
    000007E2 4A0B                   JSR         @R10
    000007E4 7408                   ADD         #8,R4
      bt_tblade.   498                                    xfm_Push( &xfm );
    000007E6 64F3                   MOV         R15,R4
    000007E8 4B0B                   JSR         @R11
    000007EA 7408                   ADD         #8,R4
      bt_tblade.   499  E                                 mesh3d_Draw( _pPRBoost
                         +er, 0xf, 1 );
    000007EC D22A                   MOV.L       L2567+34,R2; L1808
    000007EE E50F                   MOV         #15,R5
    000007F0 E601                   MOV         #1,R6
    000007F2 4D0B                   JSR         @R13
    000007F4 6422                   MOV.L       @R2,R4
      bt_tblade.   500                                    xfm_PopN( 2 );
    000007F6 D326                   MOV.L       L2567+26,R3; _xfm_PopN
    000007F8 430B                   JSR         @R3
    000007FA E402                   MOV         #2,R4
    000007FC              L2391:                            
      bt_tblade.   501                            }
      bt_tblade.   502                            /* draw the engine */
      bt_tblade.   503                            xfm_BuildRotZ_XlatFromPoint( &
                         +xfm, ptblade->nEngVibration, 0.0f, ptblade->fEngVibrat
                         +ion, 0.0f );
    000007FC E028                   MOV         #40,R0
    000007FE 55E9                   MOV.L       @(36,R14),R5
    00000800 F5E6                   FMOV.S      @(R0,R14),FR5
    00000802 64F3                   MOV         R15,R4
    00000804 D325                   MOV.L       L2567+38,
                        +                                  R3; _xfm_BuildRotZ_XlatF
                        +                                  romPoint
    00000806 F6FC                   FMOV.S      FR15,FR6
    00000808 F4FC                   FMOV.S      FR15,FR4
    0000080A 430B                   JSR         @R3
    0000080C 7408                   ADD         #8,R4
      bt_tblade.   504                            xfm_Push( &xfm );
    0000080E 64F3                   MOV         R15,R4
    00000810 4B0B                   JSR         @R11
    00000812 7408                   ADD         #8,R4
      bt_tblade.   505  E                         mesh3d_Draw( _pPEngine, 0xf, 1
                         + );
    00000814 D222                   MOV.L       L2567+42,R2; L1806
    00000816 E50F                   MOV         #15,R5
    00000818 E601                   MOV         #1,R6
    0000081A 4D0B                   JSR         @R13
    0000081C 6422                   MOV.L       @R2,R4
      bt_tblade.   506                            xfm_Pop();
    0000081E D321                   MOV.L       L2567+46,R3; _xfm_Pop
    00000820 430B                   JSR         @R3
    00000822 0009                   NOP
      bt_tblade.   507                            /* Draw the propeller */
      bt_tblade.   508                            _DrawProp( ptblade, pPlayer );
    00000824 65C3                   MOV         R12,R5
    00000826 B201                   BSR         L1887
    00000828 64E3                   MOV         R14,R4
      bt_tblade.   509                            break;
    0000082A A046                   BRA         L2384
    0000082C 0009                   NOP
    0000082E              L2220:                           ; case label 
      bt_tblade.   510                    case BOATS_LOD_HIGH:
      bt_tblade.   511                            pMesh = ( ptblade->nHBState ==
                         + _HB_CLOSED ) ? ptblade->pRetracted : ptblade->pDeploy
                         +ed;
    0000082E 85E2                   MOV.W       @(4,R14),R0
    00000830 2008                   TST         R0,R0
    00000832 8B02                   BF          L2392
    00000834 9020                   MOV.W       L2567+2,R0 ; H'0154
    00000836 A001                   BRA         L2540
    00000838 0009                   NOP
    0000083A              L2392:                            
    0000083A 901E                   MOV.W       L2567+4,R0 ; H'0158
    0000083C              L2540:                            
    0000083C 02EE                   MOV.L       @(R0,R14),R2
    0000083E 1F21                   MOV.L       R2,@(4,R15)
      bt_tblade.   512                            _ChangeStaticLightingMotifs( p
                         +tblade );
    00000840 D30E                   MOV.L       L2567+6,R3 ; L1895
    00000842 430B                   JSR         @R3
    00000844 64E3                   MOV         R14,R4
      bt_tblade.   513  E                         mesh3d_Draw( mesh3d_DetermineL
                         +od( pMesh, &nLod ), 0xf, 1 );
    00000846 D318                   MOV.L       L2567+50,
                        +                                  R3; _mesh3d_DetermineLod
    00000848 65F3                   MOV         R15,R5
    0000084A 430B                   JSR         @R3
    0000084C 54F1                   MOV.L       @(4,R15),R4
    0000084E E50F                   MOV         #15,R5
    00000850 6403                   MOV         R0,R4
    00000852 4D0B                   JSR         @R13
    00000854 E601                   MOV         #1,R6
      bt_tblade.   514                            if( !nLod ) {
    00000856 62F2                   MOV.L       @R15,R2
    00000858 2228                   TST         R2,R2
    0000085A 8B2E                   BF          L2384
      bt_tblade.   515                                    /* Draw the propeller 
                         +*/
      bt_tblade.   516                                    _DrawProp( ptblade, pP
                         +layer );
    0000085C 65C3                   MOV         R12,R5
    0000085E B1E5                   BSR         L1887
    00000860 64E3                   MOV         R14,R4
      bt_tblade.   517                            }
      bt_tblade.   518                            break;
    00000862 A02A                   BRA         L2384
    00000864 0009                   NOP
    00000866              L2221:                           ; case label 
      bt_tblade.   519                    case BOATS_LOD_DRONE:
      bt_tblade.   520  E                         mesh3d_DrawWithLod( ptblade->p
                         +Retracted, 0xf, 1);
    00000866 9007                   MOV.W       L2567+2,R0 ; H'0154
    00000868 E601                   MOV         #1,R6
    0000086A D310                   MOV.L       L2567+54,R3; _mesh3d_DrawWithLod
    0000086C E50F                   MOV         #15,R5
    0000086E 430B                   JSR         @R3
    00000870 04EE                   MOV.L       @(R0,R14),R4
      bt_tblade.   521                            break;
    00000872 A022                   BRA         L2384
    00000874 0009                   NOP
    00000876              L2567:                            
    00000876 015C                   .DATA.W     H'015C
    00000878 0154                   .DATA.W     H'0154
    0000087A 0158                   .DATA.W     H'0158
    0000087C <00000000>             .DATA.L     L1895
    00000880 <00000000>             .DATA.L     _xfm_Push
    00000884 <00000000>             .DATA.L     _xfm_BuildXlatFromPoint
    00000888 <00000000>             .DATA.L     L1804
    0000088C <00000000>             .DATA.L     L1807
    00000890 <00000000>             .DATA.L     _xfm_PopN
    00000894 <00000000>             .DATA.L     L1805
    00000898 <00000000>             .DATA.L     L1808
    0000089C <00000000>             .DATA.L     _xfm_BuildRotZ_XlatFromPoint
    000008A0 <00000000>             .DATA.L     L1806
    000008A4 <00000000>             .DATA.L     _xfm_Pop
    000008A8 <00000000>             .DATA.L     _mesh3d_DetermineLod
    000008AC <00000000>             .DATA.L     _mesh3d_DrawWithLod
    000008B0              L2222:                           ; default label 
      bt_tblade.   522                    default:
      bt_tblade.   523  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +bt_tblade.c", 523 );
    000008B0 D33F                   MOV.L       L2568+10,R3; _gerr_Assert
    000008B2 D53E                   MOV.L       L2568+6,R5 ; L1911
    000008B4 9677                   MOV.W       L2568,R6   ; H'020B
    000008B6 430B                   JSR         @R3
    000008B8 E400                   MOV         #0,R4
      bt_tblade.   524                            break;
    000008BA              L2384:                            
      bt_tblade.   525                    }       
      bt_tblade.   526            }
      bt_tblade.   527            /* always call... */
      bt_tblade.   528            boats_DrawTrackingNumber( pPlayer );
    000008BA D33E                   MOV.L       L2568+14,
                        +                                  R3; _boats_DrawTrackingN
                        +                                  umber
    000008BC 430B                   JSR         @R3
    000008BE 64C3                   MOV         R12,R4
      bt_tblade.   529    }
    000008C0 7F74                   ADD         #116,R15
    000008C2 4F26                   LDS.L       @R15+,PR
    000008C4 FDF9                   FMOV.S      @R15+,FR13
    000008C6 FEF9                   FMOV.S      @R15+,FR14
    000008C8 FFF9                   FMOV.S      @R15+,FR15
    000008CA 6AF6                   MOV.L       @R15+,R10
    000008CC 6BF6                   MOV.L       @R15+,R11
    000008CE 6CF6                   MOV.L       @R15+,R12
    000008D0 6DF6                   MOV.L       @R15+,R13
    000008D2 000B                   RTS
    000008D4 6EF6                   MOV.L       @R15+,R14
      bt_tblade.   530    
      bt_tblade.   531    /*================== */
      bt_tblade.   532    /* private functions */
      bt_tblade.   533    
      bt_tblade.   534    static void _ProcessHydroBoost( TBlade_t *pTblade, Pla
                         +yer_t *pPlayer ) {
    000008D6              L1884:                           ; function: _ProcessH
                        +                                  ydroBoost
                                                           ; frame size=24
    000008D6 2FE6                   MOV.L       R14,@-R15
      bt_tblade.   535                    
      bt_tblade.   536            /* check if we have a turbo boost */
      bt_tblade.   537            if( (pPlayer->Powerup.fBoosterTime > 0.0f ) &&
                         + (pTblade->nHBState <= _HB_OPEN ) ) {
    000008D8 E028                   MOV         #40,R0
    000008DA 2FD6                   MOV.L       R13,@-R15
    000008DC 6D53                   MOV         R5,R13
    000008DE 2FC6                   MOV.L       R12,@-R15
    000008E0 6E43                   MOV         R4,R14
    000008E2 2FB6                   MOV.L       R11,@-R15
    000008E4 EC00                   MOV         #0,R12
    000008E6 FFFB                   FMOV.S      FR15,@-R15
    000008E8 F2D6                   FMOV.S      @(R0,R13),FR2
    000008EA F38D                   FLDI0       FR3
    000008EC F235                   FCMP/GT     FR3,FR2
    000008EE DB32                   MOV.L       L2568+18,
                        +                                  R11; _phys_ChangeBooster
                        +                                  State
    000008F0 4F22                   STS.L       PR,@-R15
    000008F2 8F4E                   BF/S        L2396
    000008F4 FF8D                   FLDI0       FR15
    000008F6 85E2                   MOV.W       @(4,R14),R0
    000008F8 E302                   MOV         #2,R3
    000008FA 600D                   EXTU.W      R0,R0
    000008FC 3037                   CMP/GT      R3,R0
    000008FE 8948                   BT          L2396
      bt_tblade.   538                    switch( pTblade->nHBState )
    00000900 85E2                   MOV.W       @(4,R14),R0
    00000902 600D                   EXTU.W      R0,R0
    00000904 8800                   CMP/EQ      #0,R0
    00000906 8907                   BT          L2223
    00000908 8801                   CMP/EQ      #1,R0
    0000090A 8918                   BT          L2224
    0000090C 8802                   CMP/EQ      #2,R0
    0000090E 8B01                   BF          L2569
    00000910 A093                   BRA         L2402
    00000912 0009                   NOP
    00000914              L2569:                            
    00000914 A032                   BRA         L2226
    00000916 0009                   NOP
    00000918              L2223:                           ; case label 
      bt_tblade.   539                    {
      bt_tblade.   540                    case _HB_CLOSED:
      bt_tblade.   541                            /* reset the vars for our anim
                         +ation */
      bt_tblade.   542                            pTblade->nHBState = _HB_DEPLOY
                         +ING;
    00000918 E001                   MOV         #1,R0
    0000091A 81E2                   MOV.W       R0,@(4,R14)
      bt_tblade.   543                            pTblade->nHBAnimFrameCount = 0
                         +;
    0000091C 60C3                   MOV         R12,R0
    0000091E 0009                   NOP
    00000920 81E3                   MOV.W       R0,@(6,R14)
      bt_tblade.   544                            pTblade->fHBLeftXlat = 0.0f;
    00000922 E008                   MOV         #8,R0
    00000924 FEF7                   FMOV.S      FR15,@(R0,R14)
      bt_tblade.   545                            pTblade->fHBBoosterXlat = 0.0f
                         +;
    00000926 E00C                   MOV         #12,R0
    00000928 FEF7                   FMOV.S      FR15,@(R0,R14)
      bt_tblade.   546                            pTblade->fHBAnimPercent = 0.0f
                         +;
    0000092A E010                   MOV         #16,R0
    0000092C FEF7                   FMOV.S      FR15,@(R0,R14)
      bt_tblade.   547                            pTblade->nFState = F_RESET;
    0000092E E037                   MOV         #55,R0
      bt_tblade.   548                            phys_ChangeBoosterState( &pPla
                         +yer->Phys, PHYS_BOOSTERSTATE_DEPLOYING );
    00000930 E501                   MOV         #1,R5
    00000932 0EC4                   MOV.B       R12,@(R0,R14)
    00000934 9438                   MOV.W       L2568+2,R4 ; H'0100
    00000936 4B0B                   JSR         @R11
    00000938 34DC                   ADD         R13,R4
      bt_tblade.   549                            break;
    0000093A A07E                   BRA         L2402
    0000093C 0009                   NOP
    0000093E              L2224:                           ; case label 
      bt_tblade.   550                    case _HB_DEPLOYING:
      bt_tblade.   551                            /* see if we are fully deploye
                         +d yet */
      bt_tblade.   552                            if( _AnimateDeployingBoosters(
                         + pTblade ) ) {
    0000093E EC02                   MOV         #2,R12
    00000940 B3F2                   BSR         L1890
    00000942 64E3                   MOV         R14,R4
    00000944 2008                   TST         R0,R0
    00000946 8911                   BT          L2398
      bt_tblade.   553                                    pTblade->nFState = F_T
                         +URNON;
      bt_tblade.   554                                    pTblade->nFState = F_B
                         +_USEABLE;
    00000948 E305                   MOV         #5,R3
    0000094A E037                   MOV         #55,R0
    0000094C 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   555                                    pTblade->nHBState = _H
                         +B_OPEN;
    0000094E 60C3                   MOV         R12,R0
    00000950 0009                   NOP
    00000952 81E2                   MOV.W       R0,@(4,R14)
      bt_tblade.   556                                    pTblade->fHBAnimPercen
                         +t = 0.0f;
    00000954 E010                   MOV         #16,R0
      bt_tblade.   557                                    powerup_MakeBoosterUse
                         +able( &pPlayer->Powerup );
    00000956 64D3                   MOV         R13,R4
    00000958 FEF7                   FMOV.S      FR15,@(R0,R14)
    0000095A D318                   MOV.L       L2568+22,
                        +                                  R3; _powerup_MakeBooster
                        +                                  Useable
    0000095C 430B                   JSR         @R3
    0000095E 7424                   ADD         #36,R4
      bt_tblade.   558                                    phys_ChangeBoosterStat
                         +e( &pPlayer->Phys, PHYS_BOOSTERSTATE_DEPLOYED );
    00000960 9422                   MOV.W       L2568+2,R4 ; H'0100
    00000962 E502                   MOV         #2,R5
    00000964 4B0B                   JSR         @R11
    00000966 34DC                   ADD         R13,R4
    00000968 A053                   BRA         L2542
    0000096A 0009                   NOP
    0000096C              L2398:                            
      bt_tblade.   559                            } else if( pTblade->nHBAnimFra
                         +meCount == 46 ) {
    0000096C 85E3                   MOV.W       @(6,R14),R0
    0000096E 600D                   EXTU.W      R0,R0
    00000970 882E                   CMP/EQ      #46,R0
    00000972 8B4E                   BF          L2542
      bt_tblade.   560                                    /* turn on the blue fl
                         +ame */
      bt_tblade.   561                                    pTblade->nFState = F_T
                         +URNON;  
    00000974 E037                   MOV         #55,R0
    00000976 0EC4                   MOV.B       R12,@(R0,R14)
      bt_tblade.   562                            }
      bt_tblade.   563                            _ProcessLStrut( pTblade, pPlay
                         +er );
      bt_tblade.   564                            break;
    00000978 A04B                   BRA         L2542
    0000097A 0009                   NOP
    0000097C              L2226:                           ; default label 
      bt_tblade.   565                    case _HB_OPEN:
      bt_tblade.   566                            /* nothing to do here         
                         +                 */
      bt_tblade.   567                            break;
      bt_tblade.   568                    default:
      bt_tblade.   569  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +bt_tblade.c", 569 );
    0000097C 4F26                   LDS.L       @R15+,PR
    0000097E D20C                   MOV.L       L2568+10,R2; _gerr_Assert
    00000980 E400                   MOV         #0,R4
    00000982 D50A                   MOV.L       L2568+6,R5 ; L1911
    00000984 FFF9                   FMOV.S      @R15+,FR15
    00000986 9610                   MOV.W       L2568+4,R6 ; H'0239
    00000988 6BF6                   MOV.L       @R15+,R11
    0000098A 6CF6                   MOV.L       @R15+,R12
    0000098C 6DF6                   MOV.L       @R15+,R13
    0000098E 422B                   JMP         @R2
    00000990 6EF6                   MOV.L       @R15+,R14
    00000992              L2396:                            
      bt_tblade.   570                            break;
      bt_tblade.   571                    }
      bt_tblade.   572            }
      bt_tblade.   573            else {  
      bt_tblade.   574                    /* there is no turbo boost left */
      bt_tblade.   575                    switch( pTblade->nHBState )
    00000992 85E2                   MOV.W       @(4,R14),R0
    00000994 600D                   EXTU.W      R0,R0
    00000996 8800                   CMP/EQ      #0,R0
    00000998 894F                   BT          L2402
    0000099A 8802                   CMP/EQ      #2,R0
    0000099C 8910                   BT          L2228
    0000099E 8803                   CMP/EQ      #3,R0
    000009A0 8925                   BT          L2229
    000009A2 A03F                   BRA         L2230
    000009A4 0009                   NOP
    000009A6              L2568:                            
    000009A6 020B                   .DATA.W     H'020B
    000009A8 0100                   .DATA.W     H'0100
    000009AA 0239                   .DATA.W     H'0239
    000009AC <00000000>             .DATA.L     L1911
    000009B0 <00000000>             .DATA.L     _gerr_Assert
    000009B4 <00000000>             .DATA.L     _boats_DrawTrackingNumber
    000009B8 <00000000>             .DATA.L     _phys_ChangeBoosterState
    000009BC <00000000>             .DATA.L     _powerup_MakeBoosterUseable
    000009C0              L2228:                           ; case label 
      bt_tblade.   576                    {
      bt_tblade.   577                    case _HB_CLOSED:
      bt_tblade.   578                            /* don't need to do anything, 
                         +we are already closed */
      bt_tblade.   579                            break;
      bt_tblade.   580                    case _HB_OPEN:
      bt_tblade.   581                            /* reverse the animation to pu
                         +t everything back in its place */
      bt_tblade.   582                            pTblade->nHBState = _HB_RETRAC
                         +TING;
    000009C0 E003                   MOV         #3,R0
    000009C2 81E2                   MOV.W       R0,@(4,R14)
      bt_tblade.   583                            pTblade->nHBAnimFrameCount = 0
                         +;
    000009C4 60C3                   MOV         R12,R0
    000009C6 0009                   NOP
    000009C8 81E3                   MOV.W       R0,@(6,R14)
      bt_tblade.   584  E                         pTblade->fHBLeftXlat = -1.757f
                         +;
    000009CA C74F                   MOVA        L2570+4,R0
    000009CC F308                   FMOV.S      @R0,FR3
    000009CE E008                   MOV         #8,R0
      bt_tblade.   585  E                         pTblade->fHBBoosterXlat = -3.0
                         +f;
      bt_tblade.   586                            pTblade->fHBAnimPercent = 0.0f
                         +;
      bt_tblade.   587                            phys_ChangeBoosterState( &pPla
                         +yer->Phys, PHYS_BOOSTERSTATE_STOWING );
    000009D0 E503                   MOV         #3,R5
    000009D2 FE37                   FMOV.S      FR3,@(R0,R14)
    000009D4 C74D                   MOVA        L2570+8,R0
    000009D6 F308                   FMOV.S      @R0,FR3
    000009D8 E00C                   MOV         #12,R0
    000009DA FE37                   FMOV.S      FR3,@(R0,R14)
    000009DC E010                   MOV         #16,R0
    000009DE FEF7                   FMOV.S      FR15,@(R0,R14)
    000009E0 9490                   MOV.W       L2570,R4   ; H'0100
    000009E2 4B0B                   JSR         @R11
    000009E4 34DC                   ADD         R13,R4
      bt_tblade.   588                            /* turn out the lights and fla
                         +me */
      bt_tblade.   589                            pTblade->nFState = F_TURNOFF;
    000009E6 E037                   MOV         #55,R0
    000009E8 E303                   MOV         #3,R3
      bt_tblade.   590                            break;
    000009EA A026                   BRA         L2402
    000009EC 0E34                   MOV.B       R3,@(R0,R14)
    000009EE              L2229:                           ; case label 
      bt_tblade.   591                    case _HB_RETRACTING:
      bt_tblade.   592                            /* see if we are fully retract
                         +ed yet           */
      bt_tblade.   593                            if( _AnimateRetractingBoosters
                         +( pTblade ) ) {
    000009EE B44D                   BSR         L1889
    000009F0 64E3                   MOV         R14,R4
    000009F2 2008                   TST         R0,R0
    000009F4 890D                   BT          L2542
      bt_tblade.   594                                    pTblade->nHBState = _H
                         +B_CLOSED;
    000009F6 60C3                   MOV         R12,R0
    000009F8 0009                   NOP
    000009FA 81E2                   MOV.W       R0,@(4,R14)
      bt_tblade.   595                                    pTblade->nHBAnimFrameC
                         +ount = 0;
      bt_tblade.   596                                    pTblade->fHBLeftXlat =
                         + 0.0f;
      bt_tblade.   597                                    pTblade->fHBBoosterXla
                         +t = 0.0f;
      bt_tblade.   598                                    pTblade->fHBAnimPercen
                         +t = 0.0f;       
      bt_tblade.   599                                    phys_ChangeBoosterStat
                         +e( &pPlayer->Phys, PHYS_BOOSTERSTATE_STOWED );
    000009FC E500                   MOV         #0,R5
    000009FE 81E3                   MOV.W       R0,@(6,R14)
    00000A00 E008                   MOV         #8,R0
    00000A02 FEF7                   FMOV.S      FR15,@(R0,R14)
    00000A04 E00C                   MOV         #12,R0
    00000A06 FEF7                   FMOV.S      FR15,@(R0,R14)
    00000A08 E010                   MOV         #16,R0
    00000A0A FEF7                   FMOV.S      FR15,@(R0,R14)
    00000A0C 947A                   MOV.W       L2570,R4   ; H'0100
    00000A0E 4B0B                   JSR         @R11
    00000A10 34DC                   ADD         R13,R4
    00000A12              L2542:                            
      bt_tblade.   600                            }
      bt_tblade.   601                            _ProcessLStrut( pTblade, pPlay
                         +er );
    00000A12 4F26                   LDS.L       @R15+,PR
    00000A14 65D3                   MOV         R13,R5
    00000A16 64E3                   MOV         R14,R4
    00000A18 FFF9                   FMOV.S      @R15+,FR15
    00000A1A 6BF6                   MOV.L       @R15+,R11
    00000A1C 6CF6                   MOV.L       @R15+,R12
    00000A1E 6DF6                   MOV.L       @R15+,R13
    00000A20 A012                   BRA         L1885
    00000A22 6EF6                   MOV.L       @R15+,R14
    00000A24              L2230:                           ; default label 
      bt_tblade.   602                            break;
      bt_tblade.   603                    default:
      bt_tblade.   604  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +bt_tblade.c", 604 );
    00000A24 4F26                   LDS.L       @R15+,PR
    00000A26 D33B                   MOV.L       L2570+16,R3; _gerr_Assert
    00000A28 E400                   MOV         #0,R4
    00000A2A D539                   MOV.L       L2570+12,R5; L1911
    00000A2C FFF9                   FMOV.S      @R15+,FR15
    00000A2E 966A                   MOV.W       L2570+2,R6 ; H'025C
    00000A30 6BF6                   MOV.L       @R15+,R11
    00000A32 6CF6                   MOV.L       @R15+,R12
    00000A34 6DF6                   MOV.L       @R15+,R13
    00000A36 432B                   JMP         @R3
    00000A38 6EF6                   MOV.L       @R15+,R14
    00000A3A              L2402:                            
      bt_tblade.   605                            break;
      bt_tblade.   606                    }
      bt_tblade.   607            }
      bt_tblade.   608    }
    00000A3A 4F26                   LDS.L       @R15+,PR
    00000A3C FFF9                   FMOV.S      @R15+,FR15
    00000A3E 6BF6                   MOV.L       @R15+,R11
    00000A40 6CF6                   MOV.L       @R15+,R12
    00000A42 6DF6                   MOV.L       @R15+,R13
    00000A44 000B                   RTS
    00000A46 6EF6                   MOV.L       @R15+,R14
      bt_tblade.   609    
      bt_tblade.   610    void _ProcessLStrut( TBlade_t *ptblade, Player_t *pPla
                         +yer ) {
    00000A48              L1885:                           ; function: _ProcessL
                        +                                  Strut
                                                           ; frame size=16
      bt_tblade.   611            const static u8 _aVerts2Morph[9] = { 1, 3, 4, 
                         +7, 9, 10, 13, 15, 16 };
      bt_tblade.   612            u32 i, nVertNum;
      bt_tblade.   613            f32 fX;
      bt_tblade.   614    
      bt_tblade.   615            /* only need to do this for the player lod */
      bt_tblade.   616            if( pPlayer->nLod == BOATS_LOD_PLAYER ) {
    00000A48 E058                   MOV         #88,R0
    00000A4A 2FE6                   MOV.L       R14,@-R15
    00000A4C 2FD6                   MOV.L       R13,@-R15
    00000A4E 2FC6                   MOV.L       R12,@-R15
    00000A50 2FA6                   MOV.L       R10,@-R15
    00000A52 035D                   MOV.W       @(R0,R5),R3
    00000A54 2338                   TST         R3,R3
    00000A56 8B50                   BF          L2406
      bt_tblade.   617                    fX = ptblade->fHBLeftXlat;
      bt_tblade.   618                    for( i=0; i < 9; i++ ) {
    00000A58 E700                   MOV         #0,R7
    00000A5A DE30                   MOV.L       L2570+24,R14; L1880
    00000A5C 6673                   MOV         R7,R6
    00000A5E 6573                   MOV         R7,R5
    00000A60 E008                   MOV         #8,R0
    00000A62 D72F                   MOV.L       L2570+28,R7; L1881
    00000A64 F446                   FMOV.S      @(R0,R4),FR4
    00000A66 EC09                   MOV         #9,R12
    00000A68 DD2B                   MOV.L       L2570+20,R13; L1983
    00000A6A              L2408:                            
      bt_tblade.   619                            nVertNum = _aVerts2Morph[i];
    00000A6A 61D4                   MOV.B       @R13+,R1
      bt_tblade.   620                            ptblade->pLHBStruts->pVtx[nVer
                         +tNum].Point.p[0] = _afLStrutVerts[i] + fX;
    00000A6C 5345                   MOV.L       @(20,R4),R3
    00000A6E 611C                   EXTU.B      R1,R1
    00000A70 6213                   MOV         R1,R2
    00000A72 4100                   SHLL        R1
    00000A74 312C                   ADD         R2,R1
    00000A76 533E                   MOV.L       @(56,R3),R3
    00000A78 4108                   SHLL2       R1
    00000A7A 4100                   SHLL        R1
    00000A7C 6A13                   MOV         R1,R10
    00000A7E 313C                   ADD         R3,R1
    00000A80 6053                   MOV         R5,R0
    00000A82 0009                   NOP
    00000A84 F3E6                   FMOV.S      @(R0,R14),FR3
    00000A86 7504                   ADD         #4,R5
    00000A88 F340                   FADD        FR4,FR3
    00000A8A F13A                   FMOV.S      FR3,@R1
      bt_tblade.   621            
      bt_tblade.   622                            ptblade->pRHBStruts->pVtx[nVer
                         +tNum].Point.p[0] = _afRStrutVerts[i] - fX;
    00000A8C F376                   FMOV.S      @(R0,R7),FR3
    00000A8E 5346                   MOV.L       @(24,R4),R3
    00000A90 F341                   FSUB        FR4,FR3
    00000A92 533E                   MOV.L       @(56,R3),R3
    00000A94 3A3C                   ADD         R3,R10
    00000A96 FA3A                   FMOV.S      FR3,@R10
    00000A98 6AD4                   MOV.B       @R13+,R10
    00000A9A 5345                   MOV.L       @(20,R4),R3
    00000A9C 6AAC                   EXTU.B      R10,R10
    00000A9E 62A3                   MOV         R10,R2
    00000AA0 4A00                   SHLL        R10
    00000AA2 3A2C                   ADD         R2,R10
    00000AA4 533E                   MOV.L       @(56,R3),R3
    00000AA6 4A08                   SHLL2       R10
    00000AA8 4A00                   SHLL        R10
    00000AAA 61A3                   MOV         R10,R1
    00000AAC 3A3C                   ADD         R3,R10
    00000AAE 6053                   MOV         R5,R0
    00000AB0 0009                   NOP
    00000AB2 F3E6                   FMOV.S      @(R0,R14),FR3
    00000AB4 7504                   ADD         #4,R5
    00000AB6 F340                   FADD        FR4,FR3
    00000AB8 FA3A                   FMOV.S      FR3,@R10
    00000ABA F376                   FMOV.S      @(R0,R7),FR3
    00000ABC 5346                   MOV.L       @(24,R4),R3
    00000ABE F341                   FSUB        FR4,FR3
    00000AC0 533E                   MOV.L       @(56,R3),R3
    00000AC2 313C                   ADD         R3,R1
    00000AC4 F13A                   FMOV.S      FR3,@R1
    00000AC6 61D4                   MOV.B       @R13+,R1
    00000AC8 5345                   MOV.L       @(20,R4),R3
    00000ACA 611C                   EXTU.B      R1,R1
    00000ACC 6213                   MOV         R1,R2
    00000ACE 4100                   SHLL        R1
    00000AD0 312C                   ADD         R2,R1
    00000AD2 533E                   MOV.L       @(56,R3),R3
    00000AD4 4108                   SHLL2       R1
    00000AD6 4100                   SHLL        R1
    00000AD8 6A13                   MOV         R1,R10
    00000ADA 313C                   ADD         R3,R1
    00000ADC 6053                   MOV         R5,R0
    00000ADE 0009                   NOP
    00000AE0 F3E6                   FMOV.S      @(R0,R14),FR3
    00000AE2 7603                   ADD         #3,R6
    00000AE4 36C2                   CMP/HS      R12,R6
    00000AE6 F340                   FADD        FR4,FR3
    00000AE8 F13A                   FMOV.S      FR3,@R1
    00000AEA F376                   FMOV.S      @(R0,R7),FR3
    00000AEC 5346                   MOV.L       @(24,R4),R3
    00000AEE F341                   FSUB        FR4,FR3
    00000AF0 533E                   MOV.L       @(56,R3),R3
    00000AF2 3A3C                   ADD         R3,R10
    00000AF4 FA3A                   FMOV.S      FR3,@R10
    00000AF6 8FB8                   BF/S        L2408
    00000AF8 7504                   ADD         #4,R5
    00000AFA              L2406:                            
      bt_tblade.   623                    }       
      bt_tblade.   624            }
      bt_tblade.   625    }
    00000AFA 6AF6                   MOV.L       @R15+,R10
    00000AFC 6CF6                   MOV.L       @R15+,R12
    00000AFE 6DF6                   MOV.L       @R15+,R13
    00000B00 000B                   RTS
    00000B02 6EF6                   MOV.L       @R15+,R14
    00000B04              L2570:                            
    00000B04 0100                   .DATA.W     H'0100
    00000B06 025C                   .DATA.W     H'025C
    00000B08 BFE0E560               .DATA.L     H'BFE0E560
    00000B0C C0400000               .DATA.L     H'C0400000
    00000B10 <00000000>             .DATA.L     L1911
    00000B14 <00000000>             .DATA.L     _gerr_Assert
    00000B18 <00000000>             .DATA.L     L1983
    00000B1C <00000000>             .DATA.L     L1880
    00000B20 <00000000>             .DATA.L     L1881
      bt_tblade.   626    
      bt_tblade.   627    static void _ProcessEngineFlames( TBlade_t *ptblade, P
                         +layer_t *pPlayer ) {
    00000B24              L1886:                           ; function: _ProcessE
                        +                                  ngineFlames
                                                           ; frame size=4
      bt_tblade.   628            f32 fThrottle, fTemp;
      bt_tblade.   629            int i;
      bt_tblade.   630            
      bt_tblade.   631  E         fThrottle = ( (pPlayer->Controls.fWithDeadZone
                         +[1])>=0.0f ? (pPlayer->Controls.fWithDeadZone[1]) : -(
                         +pPlayer->Controls.fWithDeadZone[1]) );
    00000B24 E040                   MOV         #64,R0
    00000B26 2FE6                   MOV.L       R14,@-R15
    00000B28 F456                   FMOV.S      @(R0,R5),FR4
    00000B2A F38D                   FLDI0       FR3
    00000B2C F345                   FCMP/GT     FR4,FR3
    00000B2E 8F01                   BF/S        L2410
      bt_tblade.   632            fTemp = fThrottle - ptblade->fEngStaticLightIn
                         +tensity;
    00000B30 E02C                   MOV         #44,R0
    00000B32 F44D                   FNEG        FR4
    00000B34              L2410:                            
      bt_tblade.   633            ptblade->fEngStaticLightIntensity += (fTemp * 
                         +0.15f);
    00000B34 D13A                   MOV.L       L2571,R1   ; H'3E199999
    00000B36 F346                   FMOV.S      @(R0,R4),FR3
    00000B38 415A                   LDS         R1,FPUL
    00000B3A F431                   FSUB        FR3,FR4
    00000B3C F00D                   FSTS        FPUL,FR0
    00000B3E F34E                   FMAC        FR0,FR4,FR3
    00000B40 F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   634            if( ptblade->fEngStaticLightIntensity < 0.025f
                         + ) {
    00000B42 C738                   MOVA        L2571+4,R0
    00000B44 F208                   FMOV.S      @R0,FR2
    00000B46 E02C                   MOV         #44,R0
    00000B48 F346                   FMOV.S      @(R0,R4),FR3
    00000B4A F235                   FCMP/GT     FR3,FR2
    00000B4C 8F01                   BF/S        L2411
    00000B4E F48D                   FLDI0       FR4
      bt_tblade.   635                    ptblade->fEngStaticLightIntensity = 0.
                         +0f;
    00000B50 F447                   FMOV.S      FR4,@(R0,R4)
    00000B52              L2411:                            
      bt_tblade.   636            }
      bt_tblade.   637            if( ptblade->fEngStaticLightIntensity > 0.0f )
                         + {
    00000B52 F246                   FMOV.S      @(R0,R4),FR2
    00000B54 F38D                   FLDI0       FR3
    00000B56 F235                   FCMP/GT     FR3,FR2
    00000B58 8F5C                   BF/S        L2412
    00000B5A E700                   MOV         #0,R7
      bt_tblade.   638  E                 ptblade->bEngDrawFlames = 1;
    00000B5C E034                   MOV         #52,R0
      bt_tblade.   639                    
      bt_tblade.   640                    /* Scale the flame height */
      bt_tblade.   641                    for( i = 0; i < 6; i++ ) {
    00000B5E 6E73                   MOV         R7,R14
    00000B60 E201                   MOV         #1,R2
    00000B62 E106                   MOV         #6,R1
    00000B64 0424                   MOV.B       R2,@(R0,R4)
    00000B66 554C                   MOV.L       @(48,R4),R5
    00000B68 D62F                   MOV.L       L2571+8,R6 ; L1882
    00000B6A 555E                   MOV.L       @(56,R5),R5
    00000B6C              L2414:                            
      bt_tblade.   642                            ptblade->pEngFlame->pVtx[i].Po
                         +int.p[1] = _fEngFlameYCoord[i] * ptblade->fEngStaticLi
                         +ghtIntensity;
    00000B6C E02C                   MOV         #44,R0
    00000B6E F269                   FMOV.S      @R6+,FR2
    00000B70 F346                   FMOV.S      @(R0,R4),FR3
    00000B72 E004                   MOV         #4,R0
    00000B74 7E03                   ADD         #3,R14
    00000B76 F232                   FMUL        FR3,FR2
    00000B78 3E13                   CMP/GE      R1,R14
    00000B7A F527                   FMOV.S      FR2,@(R0,R5)
    00000B7C E02C                   MOV         #44,R0
    00000B7E F269                   FMOV.S      @R6+,FR2
    00000B80 7518                   ADD         #24,R5
    00000B82 F346                   FMOV.S      @(R0,R4),FR3
    00000B84 E004                   MOV         #4,R0
    00000B86 F232                   FMUL        FR3,FR2
    00000B88 F527                   FMOV.S      FR2,@(R0,R5)
    00000B8A E02C                   MOV         #44,R0
    00000B8C F269                   FMOV.S      @R6+,FR2
    00000B8E 7518                   ADD         #24,R5
    00000B90 F346                   FMOV.S      @(R0,R4),FR3
    00000B92 E004                   MOV         #4,R0
    00000B94 F232                   FMUL        FR3,FR2
    00000B96 F527                   FMOV.S      FR2,@(R0,R5)
    00000B98 8FE8                   BF/S        L2414
    00000B9A 7518                   ADD         #24,R5
    00000B9C 6E43                   MOV         R4,R14
    00000B9E 7E1C                   ADD         #28,R14
    00000BA0 66E3                   MOV         R14,R6
    00000BA2 65E3                   MOV         R14,R5
    00000BA4 64E3                   MOV         R14,R4
      bt_tblade.   643                    }
      bt_tblade.   644                    /* each pipe is on different texture f
                         +rames */
      bt_tblade.   645  E                 for( i=0; i < 8; i++ ) {
    00000BA6 EE07                   MOV         #7,R14
    00000BA8 E008                   MOV         #8,R0
    00000BAA 6173                   MOV         R7,R1
    00000BAC              L2416:                            
      bt_tblade.   646                            ptblade->nEngFlameFrameCount[i
                         +]++;
    00000BAC 6250                   MOV.B       @R5,R2
    00000BAE 7201                   ADD         #1,R2
    00000BB0 2520                   MOV.B       R2,@R5
      bt_tblade.   647  E                         if( ptblade->nEngFlameFrameCou
                         +nt[i] >= 7 ) {
    00000BB2 6360                   MOV.B       @R6,R3
    00000BB4 633C                   EXTU.B      R3,R3
    00000BB6 33E3                   CMP/GE      R14,R3
    00000BB8 8F01                   BF/S        L2417
    00000BBA 7101                   ADD         #1,R1
      bt_tblade.   648                                    ptblade->nEngFlameFram
                         +eCount[i] = 0;
    00000BBC 2470                   MOV.B       R7,@R4
    00000BBE              L2417:                            
    00000BBE 7501                   ADD         #1,R5
    00000BC0 7601                   ADD         #1,R6
    00000BC2 6350                   MOV.B       @R5,R3
    00000BC4 7301                   ADD         #1,R3
    00000BC6 2530                   MOV.B       R3,@R5
    00000BC8 6260                   MOV.B       @R6,R2
    00000BCA 622C                   EXTU.B      R2,R2
    00000BCC 32E3                   CMP/GE      R14,R2
    00000BCE 8F01                   BF/S        L2418
    00000BD0 7401                   ADD         #1,R4
    00000BD2 2470                   MOV.B       R7,@R4
    00000BD4              L2418:                            
    00000BD4 7501                   ADD         #1,R5
    00000BD6 7601                   ADD         #1,R6
    00000BD8 6250                   MOV.B       @R5,R2
    00000BDA 7101                   ADD         #1,R1
    00000BDC 7201                   ADD         #1,R2
    00000BDE 2520                   MOV.B       R2,@R5
    00000BE0 6360                   MOV.B       @R6,R3
    00000BE2 633C                   EXTU.B      R3,R3
    00000BE4 33E3                   CMP/GE      R14,R3
    00000BE6 8F01                   BF/S        L2419
    00000BE8 7401                   ADD         #1,R4
    00000BEA 2470                   MOV.B       R7,@R4
    00000BEC              L2419:                            
    00000BEC 7501                   ADD         #1,R5
    00000BEE 7601                   ADD         #1,R6
    00000BF0 6350                   MOV.B       @R5,R3
    00000BF2 7101                   ADD         #1,R1
    00000BF4 7301                   ADD         #1,R3
    00000BF6 2530                   MOV.B       R3,@R5
    00000BF8 6260                   MOV.B       @R6,R2
    00000BFA 622C                   EXTU.B      R2,R2
    00000BFC 32E3                   CMP/GE      R14,R2
    00000BFE 8F01                   BF/S        L2420
    00000C00 7401                   ADD         #1,R4
    00000C02 2470                   MOV.B       R7,@R4
    00000C04              L2420:                            
    00000C04 7101                   ADD         #1,R1
    00000C06 3103                   CMP/GE      R0,R1
    00000C08 7601                   ADD         #1,R6
    00000C0A 7401                   ADD         #1,R4
    00000C0C 8FCE                   BF/S        L2416
    00000C0E 7501                   ADD         #1,R5
    00000C10 A004                   BRA         L2421
    00000C12 0009                   NOP
    00000C14              L2412:                            
      bt_tblade.   649                            }
      bt_tblade.   650                    }
      bt_tblade.   651            } else {
      bt_tblade.   652                    /* no engine flames are required at th
                         +is time */
      bt_tblade.   653  E                 ptblade->bEngDrawFlames = 0;
    00000C14 E034                   MOV         #52,R0
    00000C16 0474                   MOV.B       R7,@(R0,R4)
      bt_tblade.   654                    ptblade->fEngStaticLightIntensity = 0.
                         +0f;
    00000C18 E02C                   MOV         #44,R0
    00000C1A F447                   FMOV.S      FR4,@(R0,R4)
    00000C1C              L2421:                            
      bt_tblade.   655            }
      bt_tblade.   656    }
    00000C1C 000B                   RTS
    00000C1E 6EF6                   MOV.L       @R15+,R14
    00000C20              L2571:                            
    00000C20 3E199999               .DATA.L     H'3E199999
    00000C24 3CCCCCCC               .DATA.L     H'3CCCCCCC
    00000C28 <00000000>             .DATA.L     L1882
      bt_tblade.   657    
      bt_tblade.   658    static void _DrawProp( TBlade_t *ptblade, Player_t *pP
                         +layer ) {
    00000C2C              L1887:                           ; function: _DrawProp
                                                           ; frame size=120
    00000C2C 4F22                   STS.L       PR,@-R15
    00000C2E 7F8C                   ADD         #-116,R15
    00000C30 2F42                   MOV.L       R4,@R15
    00000C32 1F51                   MOV.L       R5,@(4,R15)
      bt_tblade.   659            Xfm_t xfm;
      bt_tblade.   660            int nPropRot;
      bt_tblade.   661            
      bt_tblade.   662            if( pPlayer->nLoadFlag == BOATS_EVERYTHING_OK 
                         +) {
    00000C34 6053                   MOV         R5,R0
    00000C36 0009                   NOP
    00000C38 E15A                   MOV         #90,R1
    00000C3A 001D                   MOV.W       @(R0,R1),R0
    00000C3C 600D                   EXTU.W      R0,R0
    00000C3E 8803                   CMP/EQ      #3,R0
    00000C40 8B2D                   BF          L2422
      bt_tblade.   663                    /* Draw the propeller */
      bt_tblade.   664                    nPropRot = boats_Prop( pPlayer->fRPM )
                         +;
    00000C42 D33C                   MOV.L       L2572+4,R3 ; _boats_Prop
    00000C44 E01C                   MOV         #28,R0
    00000C46 52F1                   MOV.L       @(4,R15),R2
    00000C48 430B                   JSR         @R3
    00000C4A F426                   FMOV.S      @(R0,R2),FR4
      bt_tblade.   665                    ptblade->nPropRot += nPropRot;
    00000C4C 62F2                   MOV.L       @R15,R2
    00000C4E 6403                   MOV         R0,R4
    00000C50 6322                   MOV.L       @R2,R3
    00000C52 334C                   ADD         R4,R3
    00000C54 2232                   MOV.L       R3,@R2
      bt_tblade.   666  E                 _pProp->pMtl->pTexDef = (nPropRot == -
                         +( 65536/2 ) ) ? _paPropCell[1] : _paPropCell[0];
    00000C56 D138                   MOV.L       L2572+8,R1 ; L1815
    00000C58 6212                   MOV.L       @R1,R2
    00000C5A 532D                   MOV.L       @(52,R2),R3
    00000C5C 9268                   MOV.W       L2572,R2   ; H'8000
    00000C5E 3420                   CMP/EQ      R2,R4
    00000C60 8B02                   BF          L2423
    00000C62 D036                   MOV.L       L2572+12,R0; H'00000004+L1825
    00000C64 A001                   BRA         L2543
    00000C66 0009                   NOP
    00000C68              L2423:                            
    00000C68 D035                   MOV.L       L2572+16,R0; L1825
    00000C6A              L2543:                            
    00000C6A 6002                   MOV.L       @R0,R0
      bt_tblade.   667                    xfm_BuildRotZ_XlatFromPoint( &xfm, ptb
                         +lade->nPropRot, 0.0f, -1.211f, -12.62f );
    00000C6C 64F3                   MOV         R15,R4
    00000C6E 1305                   MOV.L       R0,@(20,R3)
    00000C70 C734                   MOVA        L2572+20,R0
    00000C72 65F2                   MOV.L       @R15,R5
    00000C74 F608                   FMOV.S      @R0,FR6
    00000C76 C734                   MOVA        L2572+24,R0
    00000C78 6552                   MOV.L       @R5,R5
    00000C7A D334                   MOV.L       L2572+28,
                        +                                  R3; _xfm_BuildRotZ_XlatF
                        +                                  romPoint
    00000C7C F508                   FMOV.S      @R0,FR5
    00000C7E F48D                   FLDI0       FR4
    00000C80 430B                   JSR         @R3
    00000C82 7408                   ADD         #8,R4
      bt_tblade.   668                    xfm_Push( &xfm );
    00000C84 D232                   MOV.L       L2572+32,R2; _xfm_Push
    00000C86 64F3                   MOV         R15,R4
    00000C88 420B                   JSR         @R2
    00000C8A 7408                   ADD         #8,R4
      bt_tblade.   669  E                 mesh3d_Draw( _pProp, 0xf, 1 );
    00000C8C D32A                   MOV.L       L2572+8,R3 ; L1815
    00000C8E E601                   MOV         #1,R6
    00000C90 D230                   MOV.L       L2572+36,R2; _mesh3d_Draw
    00000C92 E50F                   MOV         #15,R5
    00000C94 420B                   JSR         @R2
    00000C96 6432                   MOV.L       @R3,R4
      bt_tblade.   670                    xfm_Pop();
    00000C98 D12F                   MOV.L       L2572+40,R1; _xfm_Pop
    00000C9A 410B                   JSR         @R1
    00000C9C 0009                   NOP
    00000C9E              L2422:                            
      bt_tblade.   671            }
      bt_tblade.   672    }
    00000C9E 7F74                   ADD         #116,R15
    00000CA0 4F26                   LDS.L       @R15+,PR
    00000CA2 000B                   RTS
    00000CA4 0009                   NOP
      bt_tblade.   673    
      bt_tblade.   674    static void _ProcessFlame( TBlade_t *ptblade, Player_t
                         + *pPlayer ) {
    00000CA6              L1888:                           ; function: _ProcessF
                        +                                  lame
                                                           ; frame size=32
    00000CA6 2FE6                   MOV.L       R14,@-R15
    00000CA8 6E43                   MOV         R4,R14
    00000CAA 2FD6                   MOV.L       R13,@-R15
      bt_tblade.   675  E         int bSwitch = 0;
      bt_tblade.   676    
      bt_tblade.   677            switch( ptblade->nFState )
    00000CAC E037                   MOV         #55,R0
    00000CAE 2FC6                   MOV.L       R12,@-R15
    00000CB0 ED00                   MOV         #0,R13
    00000CB2 2FB6                   MOV.L       R11,@-R15
    00000CB4 6C53                   MOV         R5,R12
    00000CB6 2FA6                   MOV.L       R10,@-R15
    00000CB8 6AD3                   MOV         R13,R10
    00000CBA 2F96                   MOV.L       R9,@-R15
    00000CBC E504                   MOV         #4,R5
    00000CBE 2F86                   MOV.L       R8,@-R15
    00000CC0 E806                   MOV         #6,R8
    00000CC2 00EC                   MOV.B       @(R0,R14),R0
    00000CC4 4F22                   STS.L       PR,@-R15
    00000CC6 D925                   MOV.L       L2572+44,R9; _light_SetIntensity
    00000CC8 600C                   EXTU.B      R0,R0
    00000CCA 8800                   CMP/EQ      #0,R0
    00000CCC F58D                   FLDI0       FR5
    00000CCE 8D0A                   BT/S        L2232
    00000CD0 EB01                   MOV         #1,R11
    00000CD2 8801                   CMP/EQ      #1,R0
    00000CD4 8B01                   BF          L2573
    00000CD6 A211                   BRA         L2425
    00000CD8 0009                   NOP
    00000CDA              L2573:                            
    00000CDA 8802                   CMP/EQ      #2,R0
    00000CDC 8942                   BT          L2234
    00000CDE 8803                   CMP/EQ      #3,R0
    00000CE0 8963                   BT          L2235
    00000CE2 A082                   BRA         L2236
    00000CE4 0009                   NOP
    00000CE6              L2232:                           ; case label 
      bt_tblade.   678            {
      bt_tblade.   679            case F_RESET:
      bt_tblade.   680                    /* RESET ALL VARIABLES AND PUT THE FLA
                         +ME INTO AN OFF STATE */
      bt_tblade.   681                    ptblade->nFState = F_OFF;
    00000CE6 E037                   MOV         #55,R0
    00000CE8 0EB4                   MOV.B       R11,@(R0,R14)
      bt_tblade.   682  E                 ptblade->bFDrawOrange = 0;
    00000CEA E035                   MOV         #53,R0
    00000CEC 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   683  E                 ptblade->bFDrawBlue = 0;
    00000CEE E036                   MOV         #54,R0
    00000CF0 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   684  E                 ptblade->nFCell = 0;
    00000CF2 E038                   MOV         #56,R0
    00000CF4 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   685                    ptblade->fFIntensity = 0.0f;
    00000CF6 E040                   MOV         #64,R0
    00000CF8 FE57                   FMOV.S      FR5,@(R0,R14)
      bt_tblade.   686                    ptblade->nFGeoCell = 0;
    00000CFA E03A                   MOV         #58,R0
    00000CFC 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   687                    ptblade->nFGeoDir = 0;
      bt_tblade.   688                    /* only do lighting stuff if this is t
                         +he player lod */
      bt_tblade.   689                    if( pPlayer->nLod == BOATS_LOD_PLAYER 
                         +) {
    00000CFE E058                   MOV         #88,R0
    00000D00 1EDF                   MOV.L       R13,@(60,R14)
    00000D02 03CD                   MOV.W       @(R0,R12),R3
    00000D04 2338                   TST         R3,R3
    00000D06 8901                   BT          L2574
    00000D08 A1F8                   BRA         L2425
    00000D0A 0009                   NOP
    00000D0C              L2574:                            
      bt_tblade.   690                            light_SetIntensity( &ptblade->
                         +FLight.Light, ptblade->fFIntensity );
    00000D0C E040                   MOV         #64,R0
    00000D0E 64E3                   MOV         R14,R4
    00000D10 F4E6                   FMOV.S      @(R0,R14),FR4
    00000D12 490B                   JSR         @R9
    00000D14 7444                   ADD         #68,R4
      bt_tblade.   691  E                         light_TurnOn( &ptblade->FLight
                         +.Light, 0 );
    00000D16 4F26                   LDS.L       @R15+,PR
    00000D18 D311                   MOV.L       L2572+48,R3; _light_TurnOn
    00000D1A 64E3                   MOV         R14,R4
    00000D1C E500                   MOV         #0,R5
    00000D1E 68F6                   MOV.L       @R15+,R8
    00000D20 7444                   ADD         #68,R4
    00000D22 69F6                   MOV.L       @R15+,R9
    00000D24 6AF6                   MOV.L       @R15+,R10
    00000D26 6BF6                   MOV.L       @R15+,R11
    00000D28 6CF6                   MOV.L       @R15+,R12
    00000D2A 6DF6                   MOV.L       @R15+,R13
    00000D2C 432B                   JMP         @R3
    00000D2E 6EF6                   MOV.L       @R15+,R14
    00000D30              L2572:                            
    00000D30 8000                   .DATA.W     H'8000
    00000D32 00000002               .RES.W      1
    00000D34 <00000000>             .DATA.L     _boats_Prop
    00000D38 <00000000>             .DATA.L     L1815
    00000D3C <00000004>             .DATA.L     H'00000004+L1825
    00000D40 <00000000>             .DATA.L     L1825
    00000D44 C149EB85               .DATA.L     H'C149EB85
    00000D48 BF9B020C               .DATA.L     H'BF9B020C
    00000D4C <00000000>             .DATA.L     _xfm_BuildRotZ_XlatFromPoint
    00000D50 <00000000>             .DATA.L     _xfm_Push
    00000D54 <00000000>             .DATA.L     _mesh3d_Draw
    00000D58 <00000000>             .DATA.L     _xfm_Pop
    00000D5C <00000000>             .DATA.L     _light_SetIntensity
    00000D60 <00000000>             .DATA.L     _light_TurnOn
    00000D64              L2234:                           ; case label 
      bt_tblade.   692                    }
      bt_tblade.   693                    break;
      bt_tblade.   694            case F_OFF:
      bt_tblade.   695                    /* THE FLAMES ARE OFF, DON'T DO ANYTHI
                         +NG */
      bt_tblade.   696                    break;
      bt_tblade.   697            case F_TURNON:
      bt_tblade.   698                    /* TURN THE BLUE FLAME ON, NOT ALLOWIN
                         +G THE ORANGE TO BE USED */
      bt_tblade.   699  E                 ptblade->bFDrawOrange = 0;
    00000D64 E035                   MOV         #53,R0
    00000D66 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   700  E                 ptblade->bFDrawBlue = 1;
    00000D68 E036                   MOV         #54,R0
    00000D6A 0EB4                   MOV.B       R11,@(R0,R14)
      bt_tblade.   701  E                 ptblade->nFCell = 0;
    00000D6C E038                   MOV         #56,R0
    00000D6E 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   702                    ptblade->nFState = F_B_ON;
    00000D70 E037                   MOV         #55,R0
    00000D72 0E54                   MOV.B       R5,@(R0,R14)
      bt_tblade.   703  E                 ptblade->fFIntensity = 0.35f;
    00000D74 C73F                   MOVA        L2575,R0
    00000D76 F308                   FMOV.S      @R0,FR3
    00000D78 E040                   MOV         #64,R0
    00000D7A FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   704                    /* only do lighting stuff if this is t
                         +he player lod */
      bt_tblade.   705                    if( pPlayer->nLod == BOATS_LOD_PLAYER 
                         +) {
    00000D7C E058                   MOV         #88,R0
    00000D7E 03CD                   MOV.W       @(R0,R12),R3
    00000D80 2338                   TST         R3,R3
    00000D82 8901                   BT          L2576
    00000D84 A1BA                   BRA         L2425
    00000D86 0009                   NOP
    00000D88              L2576:                            
      bt_tblade.   706                            /* turn on the light */
      bt_tblade.   707                            light_SetMotif( &ptblade->FLig
                         +ht.Light, SLMOTIF_BLUEFLAME1 );
    00000D88 D33B                   MOV.L       L2575+4,R3 ; _light_SetMotif
    00000D8A 64E3                   MOV         R14,R4
    00000D8C E50F                   MOV         #15,R5
    00000D8E 430B                   JSR         @R3
    00000D90 7444                   ADD         #68,R4
      bt_tblade.   708  E                         light_TurnOn( &ptblade->FLight
                         +.Light, 1 );
    00000D92 D23A                   MOV.L       L2575+8,R2 ; _light_TurnOn
    00000D94 64E3                   MOV         R14,R4
    00000D96 E501                   MOV         #1,R5
    00000D98 420B                   JSR         @R2
    00000D9A 7444                   ADD         #68,R4
      bt_tblade.   709                            light_SetIntensity( &ptblade->
                         +FLight.Light, ptblade->fFIntensity );
    00000D9C E040                   MOV         #64,R0
    00000D9E 64E3                   MOV         R14,R4
    00000DA0 F4E6                   FMOV.S      @(R0,R14),FR4
    00000DA2 490B                   JSR         @R9
    00000DA4 7444                   ADD         #68,R4
      bt_tblade.   710                    }
      bt_tblade.   711                    break;
    00000DA6 A1A9                   BRA         L2425
    00000DA8 0009                   NOP
    00000DAA              L2235:                           ; case label 
      bt_tblade.   712            case F_TURNOFF:
      bt_tblade.   713                    /* TURN OFF THE FLAME FROM ANY STATE, 
                         +SETS THE STATE TO F_B_TURNOFF OR F_O_TURNOFF */
      bt_tblade.   714                    if( ptblade->bFDrawBlue ) {
    00000DAA E036                   MOV         #54,R0
    00000DAC 02EC                   MOV.B       @(R0,R14),R2
    00000DAE 2228                   TST         R2,R2
    00000DB0 8906                   BT          L2428
      bt_tblade.   715  E                         ptblade->bFDrawOrange = 0;
    00000DB2 E035                   MOV         #53,R0
    00000DB4 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   716  E                         ptblade->bFDrawBlue = 0;
    00000DB6 E036                   MOV         #54,R0
    00000DB8 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   717                            ptblade->nFState = F_B_TURNOFF
                         +;       
    00000DBA E037                   MOV         #55,R0
    00000DBC A19E                   BRA         L2425
    00000DBE 0E84                   MOV.B       R8,@(R0,R14)
    00000DC0              L2428:                            
      bt_tblade.   718                    } else if( ptblade->bFDrawOrange ) {
    00000DC0 E035                   MOV         #53,R0
    00000DC2 02EC                   MOV.B       @(R0,R14),R2
    00000DC4 2228                   TST         R2,R2
    00000DC6 890D                   BT          L2430
      bt_tblade.   719  E                         ptblade->bFDrawBlue = 0;
    00000DC8 E036                   MOV         #54,R0
    00000DCA 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   720                            ptblade->nFState = F_O_TURNOFF
                         +;       
    00000DCC E037                   MOV         #55,R0
    00000DCE E30A                   MOV         #10,R3
    00000DD0 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   721  E                         if( ptblade->nFCell > 6 ) {
    00000DD2 E038                   MOV         #56,R0
    00000DD4 02ED                   MOV.W       @(R0,R14),R2
    00000DD6 622D                   EXTU.W      R2,R2
    00000DD8 3287                   CMP/GT      R8,R2
    00000DDA 8901                   BT          L2577
    00000DDC A18E                   BRA         L2425
    00000DDE 0009                   NOP
    00000DE0              L2577:                            
      bt_tblade.   722  E                                 ptblade->nFCell = 0;
    00000DE0 A18C                   BRA         L2425
    00000DE2 0ED5                   MOV.W       R13,@(R0,R14)
    00000DE4              L2430:                            
      bt_tblade.   723                            }
      bt_tblade.   724                    } else {
      bt_tblade.   725                            ptblade->nFState = F_RESET;
    00000DE4 E037                   MOV         #55,R0
      bt_tblade.   726                    }
      bt_tblade.   727                    break;
    00000DE6 A189                   BRA         L2425
    00000DE8 0ED4                   MOV.B       R13,@(R0,R14)
    00000DEA              L2236:                           ; default label 
      bt_tblade.   728            default:
      bt_tblade.   729                    /* ALL OTHER CASES MUST BE BLUE OR ORA
                         +NGE FLAMES */
      bt_tblade.   730                    if( ptblade->bFDrawBlue ) {
    00000DEA C725                   MOVA        L2575+12,R0
    00000DEC F408                   FMOV.S      @R0,FR4
    00000DEE E036                   MOV         #54,R0
    00000DF0 03EC                   MOV.B       @(R0,R14),R3
    00000DF2 2338                   TST         R3,R3
    00000DF4 8D6E                   BT/S        L2433
    00000DF6 E402                   MOV         #2,R4
      bt_tblade.   731                            switch( ptblade->nFState )
    00000DF8 E037                   MOV         #55,R0
    00000DFA 00EC                   MOV.B       @(R0,R14),R0
    00000DFC 600C                   EXTU.B      R0,R0
    00000DFE 8804                   CMP/EQ      #4,R0
    00000E00 8905                   BT          L2237
    00000E02 8805                   CMP/EQ      #5,R0
    00000E04 890D                   BT          L2238
    00000E06 8806                   CMP/EQ      #6,R0
    00000E08 891F                   BT          L2239
    00000E0A A03B                   BRA         L2240
    00000E0C 0009                   NOP
    00000E0E              L2237:                           ; case label 
      bt_tblade.   732                            {
      bt_tblade.   733                            case F_B_ON:
      bt_tblade.   734                                    /* THE BLUE FLAME IS O
                         +N, BUT IS NOT USEABLE YET */
      bt_tblade.   735                                    ++ptblade->nFCell;
    00000E0E E038                   MOV         #56,R0
    00000E10 03ED                   MOV.W       @(R0,R14),R3
    00000E12 7301                   ADD         #1,R3
    00000E14 0E35                   MOV.W       R3,@(R0,R14)
      bt_tblade.   736  E                                 if( ptblade->nFCell > 
                         +4 ) {
    00000E16 02ED                   MOV.W       @(R0,R14),R2
    00000E18 622D                   EXTU.W      R2,R2
    00000E1A 3257                   CMP/GT      R5,R2
    00000E1C 8B37                   BF          L2434
      bt_tblade.   737  E                                         ptblade->nFCel
                         +l = 0;
      bt_tblade.   738                                    }
      bt_tblade.   739                                    break;
    00000E1E A036                   BRA         L2434
    00000E20 0ED5                   MOV.W       R13,@(R0,R14)
    00000E22              L2238:                           ; case label 
      bt_tblade.   740                            case F_B_USEABLE:
      bt_tblade.   741                                    /* THE BLUE FLAME IS O
                         +N AND IS USEABLE */
      bt_tblade.   742                                    ++ptblade->nFCell;
    00000E22 E038                   MOV         #56,R0
    00000E24 02ED                   MOV.W       @(R0,R14),R2
    00000E26 7201                   ADD         #1,R2
    00000E28 0E25                   MOV.W       R2,@(R0,R14)
      bt_tblade.   743  E                                 if( ptblade->nFCell > 
                         +4 ) {
    00000E2A 03ED                   MOV.W       @(R0,R14),R3
    00000E2C 633D                   EXTU.W      R3,R3
    00000E2E 3357                   CMP/GT      R5,R3
    00000E30 8B00                   BF          L2436
      bt_tblade.   744  E                                         ptblade->nFCel
                         +l = 0;
    00000E32 0ED5                   MOV.W       R13,@(R0,R14)
    00000E34              L2436:                            
      bt_tblade.   745                                    }
      bt_tblade.   746                                    /* check to see if we 
                         +should turn on the orange flame */
      bt_tblade.   747  E                                 if( (pPlayer->Controls
                         +.nButtons & 0x2) && (pPlayer->fFinishTime == 0.0f) ) {
    00000E34 E044                   MOV         #68,R0
    00000E36 03CE                   MOV.L       @(R0,R12),R3
    00000E38 2438                   TST         R3,R4
    00000E3A 8928                   BT          L2434
    00000E3C E030                   MOV         #48,R0
    00000E3E F38D                   FLDI0       FR3
    00000E40 F2C6                   FMOV.S      @(R0,R12),FR2
    00000E42 F234                   FCMP/EQ     FR3,FR2
    00000E44 8B23                   BF          L2434
      bt_tblade.   748  E                                         bSwitch = 1;
      bt_tblade.   749                                    }
      bt_tblade.   750                                    break;
    00000E46 A022                   BRA         L2434
    00000E48 6AB3                   MOV         R11,R10
    00000E4A              L2239:                           ; case label 
      bt_tblade.   751                            case F_B_TURNOFF:
      bt_tblade.   752                                    ptblade->fFIntensity -
                         += 0.03f;
    00000E4A E040                   MOV         #64,R0
      bt_tblade.   753                                    if( ptblade->fFIntensi
                         +ty <= 0.0f ) {
    00000E4C F28D                   FLDI0       FR2
    00000E4E F3E6                   FMOV.S      @(R0,R14),FR3
    00000E50 F341                   FSUB        FR4,FR3
    00000E52 F325                   FCMP/GT     FR2,FR3
    00000E54 8D03                   BT/S        L2438
    00000E56 FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   754                                            ptblade->fFInt
                         +ensity = 0.0f;
    00000E58 FE57                   FMOV.S      FR5,@(R0,R14)
      bt_tblade.   755                                            ptblade->nFSta
                         +te = F_RESET;
    00000E5A E037                   MOV         #55,R0
    00000E5C 0ED4                   MOV.B       R13,@(R0,R14)
    00000E5E              L2438:                            
      bt_tblade.   756                                    } 
      bt_tblade.   757                                    /* only do lighting st
                         +uff if this is the player lod */
      bt_tblade.   758                                    if( pPlayer->nLod == B
                         +OATS_LOD_PLAYER ) {
    00000E5E E058                   MOV         #88,R0
    00000E60 03CD                   MOV.W       @(R0,R12),R3
    00000E62 2338                   TST         R3,R3
    00000E64 8B13                   BF          L2434
      bt_tblade.   759                                            light_SetInten
                         +sity( &ptblade->FLight.Light, ptblade->fFIntensity );
    00000E66 E040                   MOV         #64,R0
    00000E68 64E3                   MOV         R14,R4
    00000E6A F4E6                   FMOV.S      @(R0,R14),FR4
    00000E6C 490B                   JSR         @R9
    00000E6E 7444                   ADD         #68,R4
      bt_tblade.   760                                    }
      bt_tblade.   761                                    break;
    00000E70 A00D                   BRA         L2434
    00000E72 0009                   NOP
    00000E74              L2575:                            
    00000E74 3EB33333               .DATA.L     H'3EB33333
    00000E78 <00000000>             .DATA.L     _light_SetMotif
    00000E7C <00000000>             .DATA.L     _light_TurnOn
    00000E80 3CF5C28F               .DATA.L     H'3CF5C28F
    00000E84              L2240:                           ; default label 
      bt_tblade.   762                            default:
      bt_tblade.   763  E                                 if( (!(0)) ) gerr_Asse
                         +rt( 0, "bt_tblade.c", 763 );
    00000E84 D23E                   MOV.L       L2578+6,R2 ; _gerr_Assert
    00000E86 D53D                   MOV.L       L2578+2,R5 ; L1911
    00000E88 9677                   MOV.W       L2578,R6   ; H'02FB
    00000E8A 420B                   JSR         @R2
    00000E8C E400                   MOV         #0,R4
      bt_tblade.   764                                    break;
    00000E8E              L2434:                            
      bt_tblade.   765                            }
      bt_tblade.   766                            if( bSwitch ) {
    00000E8E 2AA8                   TST         R10,R10
    00000E90 8B01                   BF          L2579
    00000E92 A133                   BRA         L2425
    00000E94 0009                   NOP
    00000E96              L2579:                            
      bt_tblade.   767                                    /* switch to the orang
                         +e flame */
      bt_tblade.   768  E                                 ptblade->bFDrawOrange 
                         += 1;
    00000E96 E035                   MOV         #53,R0
    00000E98 0EB4                   MOV.B       R11,@(R0,R14)
      bt_tblade.   769  E                                 ptblade->bFDrawBlue = 
                         +0;
    00000E9A E036                   MOV         #54,R0
    00000E9C 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   770  E                                 ptblade->nFCell = 0;
    00000E9E E038                   MOV         #56,R0
    00000EA0 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   771                                    ptblade->nFState = F_O
                         +_BURSTON;
    00000EA2 E037                   MOV         #55,R0
    00000EA4 E307                   MOV         #7,R3
    00000EA6 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   772                                    ptblade->nFGeoCell = 0
                         +;
    00000EA8 E03A                   MOV         #58,R0
    00000EAA 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   773                                    ptblade->nFGeoDir = 0;
      bt_tblade.   774                                    /* only do lighting st
                         +uff if this is the player lod */
      bt_tblade.   775                                    if( pPlayer->nLod == B
                         +OATS_LOD_PLAYER ) {
    00000EAC E058                   MOV         #88,R0
    00000EAE 1EDF                   MOV.L       R13,@(60,R14)
    00000EB0 03CD                   MOV.W       @(R0,R12),R3
    00000EB2 2338                   TST         R3,R3
    00000EB4 8901                   BT          L2580
    00000EB6 A121                   BRA         L2425
    00000EB8 0009                   NOP
    00000EBA              L2580:                            
      bt_tblade.   776                                            /* change the 
                         +light motif to the flame */
      bt_tblade.   777                                            light_SetMotif
                         +( &ptblade->FLight.Light, SLMOTIF_FLAME4 );
    00000EBA 4F26                   LDS.L       @R15+,PR
    00000EBC D331                   MOV.L       L2578+10,R3; _light_SetMotif
    00000EBE 64E3                   MOV         R14,R4
    00000EC0 E505                   MOV         #5,R5
    00000EC2 68F6                   MOV.L       @R15+,R8
    00000EC4 7444                   ADD         #68,R4
    00000EC6 69F6                   MOV.L       @R15+,R9
    00000EC8 6AF6                   MOV.L       @R15+,R10
    00000ECA 6BF6                   MOV.L       @R15+,R11
    00000ECC 6CF6                   MOV.L       @R15+,R12
    00000ECE 6DF6                   MOV.L       @R15+,R13
    00000ED0 432B                   JMP         @R3
    00000ED2 6EF6                   MOV.L       @R15+,R14
    00000ED4              L2433:                            
      bt_tblade.   778                                    }
      bt_tblade.   779                            }
      bt_tblade.   780                    } else if( ptblade->bFDrawOrange ) {
    00000ED4 E035                   MOV         #53,R0
    00000ED6 03EC                   MOV.B       @(R0,R14),R3
    00000ED8 2338                   TST         R3,R3
    00000EDA 8B01                   BF          L2581
    00000EDC A101                   BRA         L2444
    00000EDE 0009                   NOP
    00000EE0              L2581:                            
      bt_tblade.   781                            switch( ptblade->nFState )
    00000EE0 E037                   MOV         #55,R0
    00000EE2 00EC                   MOV.B       @(R0,R14),R0
    00000EE4 600C                   EXTU.B      R0,R0
    00000EE6 8807                   CMP/EQ      #7,R0
    00000EE8 8D0C                   BT/S        L2241
    00000EEA E508                   MOV         #8,R5
    00000EEC 8808                   CMP/EQ      #8,R0
    00000EEE 894D                   BT          L2242
    00000EF0 8809                   CMP/EQ      #9,R0
    00000EF2 8B01                   BF          L2582
    00000EF4 A07C                   BRA         L2243
    00000EF6 0009                   NOP
    00000EF8              L2582:                            
    00000EF8 880A                   CMP/EQ      #10,R0
    00000EFA 8B01                   BF          L2583
    00000EFC A0A6                   BRA         L2244
    00000EFE 0009                   NOP
    00000F00              L2583:                            
    00000F00 A0C6                   BRA         L2245
    00000F02 0009                   NOP
    00000F04              L2241:                           ; case label 
      bt_tblade.   782                            {
      bt_tblade.   783                            case F_O_BURSTON:
      bt_tblade.   784                                    /* check to see if we 
                         +still using our Hydro Boost */
      bt_tblade.   785  E                                 if( (pPlayer->Controls
                         +.nButtons & 0x2) && (pPlayer->fFinishTime == 0.0f) ) {
    00000F04 E044                   MOV         #68,R0
    00000F06 03CE                   MOV.L       @(R0,R12),R3
    00000F08 2438                   TST         R3,R4
    00000F0A 8929                   BT          L2446
    00000F0C E030                   MOV         #48,R0
    00000F0E F38D                   FLDI0       FR3
    00000F10 F2C6                   FMOV.S      @(R0,R12),FR2
    00000F12 F234                   FCMP/EQ     FR3,FR2
    00000F14 8B24                   BF          L2446
      bt_tblade.   786                                            ++ptblade->nFC
                         +ell;
    00000F16 E038                   MOV         #56,R0
    00000F18 02ED                   MOV.W       @(R0,R14),R2
    00000F1A 7201                   ADD         #1,R2
    00000F1C 0E25                   MOV.W       R2,@(R0,R14)
      bt_tblade.   787  E                                         if( ptblade->n
                         +FCell > 6 ) {
    00000F1E C71A                   MOVA        L2578+14,R0
    00000F20 F508                   FMOV.S      @R0,FR5
    00000F22 E038                   MOV         #56,R0
    00000F24 03ED                   MOV.W       @(R0,R14),R3
    00000F26 633D                   EXTU.W      R3,R3
    00000F28 3387                   CMP/GT      R8,R3
    00000F2A 8B04                   BF          L2447
      bt_tblade.   788                                                    ptblad
                         +e->nFState = F_O_FIRE;
    00000F2C E037                   MOV         #55,R0
    00000F2E E209                   MOV         #9,R2
    00000F30 0E24                   MOV.B       R2,@(R0,R14)
      bt_tblade.   789  E                                                 ptblad
                         +e->fFIntensity = 0.75f;
    00000F32 E040                   MOV         #64,R0
    00000F34 FE57                   FMOV.S      FR5,@(R0,R14)
    00000F36              L2447:                            
      bt_tblade.   790                                            }
      bt_tblade.   791                                            /* fade on the
                         + light */
      bt_tblade.   792                                            ptblade->fFInt
                         +ensity += 0.03f;
    00000F36 E040                   MOV         #64,R0
    00000F38 F3E6                   FMOV.S      @(R0,R14),FR3
    00000F3A F340                   FADD        FR4,FR3
      bt_tblade.   793  E                                         if( ptblade->f
                         +FIntensity >= 0.75f ) {
    00000F3C F23C                   FMOV.S      FR3,FR2
    00000F3E F525                   FCMP/GT     FR2,FR5
    00000F40 8D01                   BT/S        L2448
    00000F42 FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   794  E                                                 ptblad
                         +e->fFIntensity = 0.75f;
    00000F44 FE57                   FMOV.S      FR5,@(R0,R14)
    00000F46              L2448:                            
      bt_tblade.   795                                            }
      bt_tblade.   796                                            /* only do lig
                         +hting stuff if this is the player lod */
      bt_tblade.   797                                            if( pPlayer->n
                         +Lod == BOATS_LOD_PLAYER ) {
    00000F46 E058                   MOV         #88,R0
    00000F48 03CD                   MOV.W       @(R0,R12),R3
    00000F4A 2338                   TST         R3,R3
    00000F4C 8901                   BT          L2584
    00000F4E A0A4                   BRA         L2445
    00000F50 0009                   NOP
    00000F52              L2584:                            
      bt_tblade.   798                                                    light_
                         +SetIntensity( &ptblade->FLight.Light, ptblade->fFInten
                         +sity );
    00000F52 E040                   MOV         #64,R0
    00000F54 64E3                   MOV         R14,R4
    00000F56 F4E6                   FMOV.S      @(R0,R14),FR4
    00000F58 490B                   JSR         @R9
    00000F5A 7444                   ADD         #68,R4
    00000F5C A09D                   BRA         L2445
    00000F5E 0009                   NOP
    00000F60              L2446:                            
      bt_tblade.   799                                            }
      bt_tblade.   800                                    } else {
      bt_tblade.   801                                            ++ptblade->nFC
                         +ell;
    00000F60 E038                   MOV         #56,R0
    00000F62 02ED                   MOV.W       @(R0,R14),R2
    00000F64 7201                   ADD         #1,R2
    00000F66 0E25                   MOV.W       R2,@(R0,R14)
      bt_tblade.   802  E                                         if( ptblade->n
                         +FCell > 6 ) {
    00000F68 03ED                   MOV.W       @(R0,R14),R3
    00000F6A 633D                   EXTU.W      R3,R3
    00000F6C 3387                   CMP/GT      R8,R3
    00000F6E 8B01                   BF          L2451
      bt_tblade.   803  E                                                 bSwitc
                         +h = 1;
    00000F70 A093                   BRA         L2445
    00000F72 6AB3                   MOV         R11,R10
    00000F74              L2451:                            
      bt_tblade.   804                                            } else {
      bt_tblade.   805                                                    ptblad
                         +e->nFState = F_O_BURSTOFF;      
    00000F74 E037                   MOV         #55,R0
      bt_tblade.   806                                            }
      bt_tblade.   807                                    }
      bt_tblade.   808                                    break;
    00000F76 A090                   BRA         L2445
    00000F78 0E54                   MOV.B       R5,@(R0,R14)
    00000F7A              L2578:                            
    00000F7A 02FB                   .DATA.W     H'02FB
    00000F7C <00000000>             .DATA.L     L1911
    00000F80 <00000000>             .DATA.L     _gerr_Assert
    00000F84 <00000000>             .DATA.L     _light_SetMotif
    00000F88 3F400000               .DATA.L     H'3F400000
    00000F8C              L2242:                           ; case label 
      bt_tblade.   809                            case F_O_BURSTOFF:
      bt_tblade.   810                                    ++ptblade->nFCell;
    00000F8C E038                   MOV         #56,R0
    00000F8E 02ED                   MOV.W       @(R0,R14),R2
    00000F90 7201                   ADD         #1,R2
    00000F92 0E25                   MOV.W       R2,@(R0,R14)
      bt_tblade.   811  E                                 if( ptblade->nFCell > 
                         +6 ) {
    00000F94 03ED                   MOV.W       @(R0,R14),R3
    00000F96 633D                   EXTU.W      R3,R3
    00000F98 3387                   CMP/GT      R8,R3
    00000F9A 8F01                   BF/S        L2453
      bt_tblade.   812  E                                         bSwitch = 1;
      bt_tblade.   813                                    }
      bt_tblade.   814  E                                 if( (pPlayer->Controls
                         +.nButtons & 0x2) && (pPlayer->fFinishTime == 0.0f) ) {
    00000F9C E044                   MOV         #68,R0
    00000F9E 6AB3                   MOV         R11,R10
    00000FA0              L2453:                            
    00000FA0 02CE                   MOV.L       @(R0,R12),R2
    00000FA2 2428                   TST         R2,R4
    00000FA4 8908                   BT          L2454
    00000FA6 E030                   MOV         #48,R0
    00000FA8 F38D                   FLDI0       FR3
    00000FAA F2C6                   FMOV.S      @(R0,R12),FR2
    00000FAC F234                   FCMP/EQ     FR3,FR2
    00000FAE 8B03                   BF          L2454
      bt_tblade.   815                                            ptblade->nFSta
                         +te = F_O_BURSTON;
    00000FB0 E037                   MOV         #55,R0
      bt_tblade.   816  E                                         bSwitch = 0;
    00000FB2 6AD3                   MOV         R13,R10
    00000FB4 E207                   MOV         #7,R2
    00000FB6 0E24                   MOV.B       R2,@(R0,R14)
    00000FB8              L2454:                            
      bt_tblade.   817                                    }
      bt_tblade.   818                                    /* fade out the light 
                         +*/
      bt_tblade.   819                                    ptblade->fFIntensity -
                         += 0.03f;
    00000FB8 E040                   MOV         #64,R0
      bt_tblade.   820                                    if( ptblade->fFIntensi
                         +ty <= 0.0f ) {
    00000FBA F28D                   FLDI0       FR2
    00000FBC F3E6                   FMOV.S      @(R0,R14),FR3
    00000FBE F341                   FSUB        FR4,FR3
    00000FC0 F325                   FCMP/GT     FR2,FR3
    00000FC2 8D0A                   BT/S        L2455
    00000FC4 FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   821                                            ptblade->fFInt
                         +ensity = 0.0f;
    00000FC6 FE57                   FMOV.S      FR5,@(R0,R14)
      bt_tblade.   822                                            /* only do lig
                         +hting stuff if this is the player lod */
      bt_tblade.   823                                            if( pPlayer->n
                         +Lod == BOATS_LOD_PLAYER ) {
    00000FC8 E058                   MOV         #88,R0
    00000FCA 03CD                   MOV.W       @(R0,R12),R3
    00000FCC 2338                   TST         R3,R3
    00000FCE 8B04                   BF          L2455
      bt_tblade.   824  E                                                 light_
                         +TurnOn( &ptblade->FLight.Light, 0 );
    00000FD0 D32E                   MOV.L       L2585+2,R3 ; _light_TurnOn
    00000FD2 64E3                   MOV         R14,R4
    00000FD4 E500                   MOV         #0,R5
    00000FD6 430B                   JSR         @R3
    00000FD8 7444                   ADD         #68,R4
    00000FDA              L2455:                            
      bt_tblade.   825                                            }
      bt_tblade.   826                                    }
      bt_tblade.   827                                    /* only do lighting st
                         +uff if this is the player lod */
      bt_tblade.   828                                    if( pPlayer->nLod == B
                         +OATS_LOD_PLAYER ) {
    00000FDA E058                   MOV         #88,R0
    00000FDC 02CD                   MOV.W       @(R0,R12),R2
    00000FDE 2228                   TST         R2,R2
    00000FE0 8B5B                   BF          L2445
      bt_tblade.   829                                            light_SetInten
                         +sity( &ptblade->FLight.Light, ptblade->fFIntensity );
    00000FE2 E040                   MOV         #64,R0
    00000FE4 64E3                   MOV         R14,R4
    00000FE6 F4E6                   FMOV.S      @(R0,R14),FR4
    00000FE8 490B                   JSR         @R9
    00000FEA 7444                   ADD         #68,R4
      bt_tblade.   830                                    }
      bt_tblade.   831                                    break;
    00000FEC A055                   BRA         L2445
    00000FEE 0009                   NOP
    00000FF0              L2243:                           ; case label 
      bt_tblade.   832                            case F_O_FIRE:
      bt_tblade.   833                                    if( !ptblade->nFGeoDir
                         + ) {
    00000FF0 52EF                   MOV.L       @(60,R14),R2
    00000FF2 2228                   TST         R2,R2
    00000FF4 8B09                   BF          L2458
      bt_tblade.   834                                            ++ptblade->nFG
                         +eoCell;
    00000FF6 E03A                   MOV         #58,R0
    00000FF8 03ED                   MOV.W       @(R0,R14),R3
    00000FFA 7301                   ADD         #1,R3
    00000FFC 0E35                   MOV.W       R3,@(R0,R14)
      bt_tblade.   835  E                                         if( ptblade->n
                         +FGeoCell == (4 - 1) ) {
    00000FFE 00ED                   MOV.W       @(R0,R14),R0
    00001000 600D                   EXTU.W      R0,R0
    00001002 8803                   CMP/EQ      #3,R0
    00001004 8B09                   BF          L2460
      bt_tblade.   836                                                    ptblad
                         +e->nFGeoDir = 1;
    00001006 A008                   BRA         L2460
    00001008 1EBF                   MOV.L       R11,@(60,R14)
    0000100A              L2458:                            
      bt_tblade.   837                                            }
      bt_tblade.   838                                    } else {
      bt_tblade.   839                                            --ptblade->nFG
                         +eoCell;
    0000100A E03A                   MOV         #58,R0
    0000100C 03ED                   MOV.W       @(R0,R14),R3
    0000100E 73FF                   ADD         #-1,R3
    00001010 0E35                   MOV.W       R3,@(R0,R14)
      bt_tblade.   840                                            if( ptblade->n
                         +FGeoCell == 0 ) {
    00001012 02ED                   MOV.W       @(R0,R14),R2
    00001014 2228                   TST         R2,R2
    00001016 8B00                   BF          L2460
      bt_tblade.   841                                                    ptblad
                         +e->nFGeoDir = 0;
    00001018 1EDF                   MOV.L       R13,@(60,R14)
    0000101A              L2460:                            
      bt_tblade.   842                                            }
      bt_tblade.   843                                    }
      bt_tblade.   844                                    ++ptblade->nFCell;
    0000101A E038                   MOV         #56,R0
    0000101C 02ED                   MOV.W       @(R0,R14),R2
    0000101E 7201                   ADD         #1,R2
    00001020 0E25                   MOV.W       R2,@(R0,R14)
      bt_tblade.   845  E                                 if( ptblade->nFCell > 
                         +16 ) {
    00001022 E210                   MOV         #16,R2
    00001024 03ED                   MOV.W       @(R0,R14),R3
    00001026 633D                   EXTU.W      R3,R3
    00001028 3327                   CMP/GT      R2,R3
    0000102A 8B01                   BF          L2462
      bt_tblade.   846  E                                         ptblade->nFCel
                         +l = 7;
    0000102C E107                   MOV         #7,R1
    0000102E 0E15                   MOV.W       R1,@(R0,R14)
    00001030              L2462:                            
      bt_tblade.   847                                    }
      bt_tblade.   848                                    /* check to see if we 
                         +are still using our Hydro Boost */
      bt_tblade.   849  E                                 if( !(pPlayer->Control
                         +s.nButtons & 0x2) || (pPlayer->fFinishTime != 0.0f) ) 
                         +{
    00001030 E044                   MOV         #68,R0
    00001032 03CE                   MOV.L       @(R0,R12),R3
    00001034 2438                   TST         R3,R4
    00001036 8904                   BT          L2464
    00001038 E030                   MOV         #48,R0
    0000103A F38D                   FLDI0       FR3
    0000103C F2C6                   FMOV.S      @(R0,R12),FR2
    0000103E F234                   FCMP/EQ     FR3,FR2
    00001040 892B                   BT          L2445
    00001042              L2464:                            
      bt_tblade.   850  E                                         ptblade->nFCel
                         +l = 0;
    00001042 E038                   MOV         #56,R0
    00001044 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   851                                            ptblade->nFSta
                         +te = F_O_BURSTOFF;      
    00001046 E037                   MOV         #55,R0
      bt_tblade.   852                                    }
      bt_tblade.   853                                    break;
    00001048 A027                   BRA         L2445
    0000104A 0E54                   MOV.B       R5,@(R0,R14)
    0000104C              L2244:                           ; case label 
      bt_tblade.   854                            case F_O_TURNOFF:
      bt_tblade.   855                                    /* fade out the light 
                         +*/
      bt_tblade.   856                                    ptblade->fFIntensity -
                         += 0.03f;
    0000104C E040                   MOV         #64,R0
      bt_tblade.   857                                    if( ptblade->fFIntensi
                         +ty <= 0.0f ) {
    0000104E F28D                   FLDI0       FR2
    00001050 F3E6                   FMOV.S      @(R0,R14),FR3
    00001052 F341                   FSUB        FR4,FR3
    00001054 F325                   FCMP/GT     FR2,FR3
    00001056 8D01                   BT/S        L2465
    00001058 FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   858                                            ptblade->fFInt
                         +ensity = 0.0f;
    0000105A FE57                   FMOV.S      FR5,@(R0,R14)
    0000105C              L2465:                            
      bt_tblade.   859                                    }
      bt_tblade.   860                                    /* only do lighting st
                         +uff if this is the player lod */
      bt_tblade.   861                                    if( pPlayer->nLod == B
                         +OATS_LOD_PLAYER ) {
    0000105C E058                   MOV         #88,R0
    0000105E 03CD                   MOV.W       @(R0,R12),R3
    00001060 2338                   TST         R3,R3
    00001062 8B04                   BF          L2466
      bt_tblade.   862                                            light_SetInten
                         +sity( &ptblade->FLight.Light, ptblade->fFIntensity );
    00001064 E040                   MOV         #64,R0
    00001066 64E3                   MOV         R14,R4
    00001068 F4E6                   FMOV.S      @(R0,R14),FR4
    0000106A 490B                   JSR         @R9
    0000106C 7444                   ADD         #68,R4
    0000106E              L2466:                            
      bt_tblade.   863                                    }                     
                         +        
      bt_tblade.   864  E                                 if( ptblade->nFCell < 
                         +6 ) {   
    0000106E E038                   MOV         #56,R0
    00001070 03ED                   MOV.W       @(R0,R14),R3
    00001072 633D                   EXTU.W      R3,R3
    00001074 3383                   CMP/GE      R8,R3
    00001076 8903                   BT          L2467
      bt_tblade.   865                                            ++ptblade->nFC
                         +ell;
    00001078 02ED                   MOV.W       @(R0,R14),R2
    0000107A 7201                   ADD         #1,R2
    0000107C A00D                   BRA         L2445
    0000107E 0E25                   MOV.W       R2,@(R0,R14)
    00001080              L2467:                            
      bt_tblade.   866                                    } else {
      bt_tblade.   867  E                                         ptblade->bFDra
                         +wOrange = 0;
    00001080 E035                   MOV         #53,R0
    00001082 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   868                                            ptblade->nFSta
                         +te = F_RESET;
    00001084 E037                   MOV         #55,R0
      bt_tblade.   869                                    }
      bt_tblade.   870                                    break;
    00001086 A008                   BRA         L2445
    00001088 0ED4                   MOV.B       R13,@(R0,R14)
    0000108A              L2585:                            
    0000108A 00000002               .RES.W      1
    0000108C <00000000>             .DATA.L     _light_TurnOn
    00001090              L2245:                           ; default label 
      bt_tblade.   871                            default:
      bt_tblade.   872  E                                 if( (!(0)) ) gerr_Asse
                         +rt( 0, "bt_tblade.c", 872 );
    00001090 D221                   MOV.L       L2586+10,R2; _gerr_Assert
    00001092 D520                   MOV.L       L2586+6,R5 ; L1911
    00001094 963B                   MOV.W       L2586,R6   ; H'0368
    00001096 420B                   JSR         @R2
    00001098 E400                   MOV         #0,R4
      bt_tblade.   873                                    break;
    0000109A              L2445:                            
      bt_tblade.   874                            }
      bt_tblade.   875                            if( bSwitch ) {
    0000109A 2AA8                   TST         R10,R10
    0000109C 892E                   BT          L2425
      bt_tblade.   876                                    /* switch to the blue 
                         +flame */
      bt_tblade.   877  E                                 ptblade->bFDrawOrange 
                         += 0;
    0000109E E035                   MOV         #53,R0
    000010A0 0ED4                   MOV.B       R13,@(R0,R14)
      bt_tblade.   878  E                                 ptblade->bFDrawBlue = 
                         +1;
    000010A2 E036                   MOV         #54,R0
    000010A4 0EB4                   MOV.B       R11,@(R0,R14)
      bt_tblade.   879  E                                 ptblade->nFCell = 0;
    000010A6 E038                   MOV         #56,R0
    000010A8 0ED5                   MOV.W       R13,@(R0,R14)
      bt_tblade.   880                                    ptblade->nFState = F_B
                         +_USEABLE;
    000010AA E037                   MOV         #55,R0
    000010AC E305                   MOV         #5,R3
    000010AE 0E34                   MOV.B       R3,@(R0,R14)
      bt_tblade.   881  E                                 ptblade->fFIntensity =
                         + 0.35f;
    000010B0 C71A                   MOVA        L2586+14,R0
    000010B2 F308                   FMOV.S      @R0,FR3
    000010B4 E040                   MOV         #64,R0
    000010B6 FE37                   FMOV.S      FR3,@(R0,R14)
      bt_tblade.   882                                    /* only do lighting st
                         +uff if this is the player lod */
      bt_tblade.   883                                    if( pPlayer->nLod == B
                         +OATS_LOD_PLAYER ) {
    000010B8 E058                   MOV         #88,R0
    000010BA 03CD                   MOV.W       @(R0,R12),R3
    000010BC 2338                   TST         R3,R3
    000010BE 8B1D                   BF          L2425
      bt_tblade.   884                                            /* turn on the
                         + light */
      bt_tblade.   885                                            light_SetMotif
                         +( &ptblade->FLight.Light, SLMOTIF_BLUEFLAME1 );
    000010C0 D317                   MOV.L       L2586+18,R3; _light_SetMotif
    000010C2 64E3                   MOV         R14,R4
    000010C4 E50F                   MOV         #15,R5
    000010C6 430B                   JSR         @R3
    000010C8 7444                   ADD         #68,R4
      bt_tblade.   886  E                                         light_TurnOn( 
                         +&ptblade->FLight.Light, 1 );
    000010CA D216                   MOV.L       L2586+22,R2; _light_TurnOn
    000010CC 64E3                   MOV         R14,R4
    000010CE E501                   MOV         #1,R5
    000010D0 420B                   JSR         @R2
    000010D2 7444                   ADD         #68,R4
      bt_tblade.   887                                            light_SetInten
                         +sity( &ptblade->FLight.Light, ptblade->fFIntensity );
    000010D4 E040                   MOV         #64,R0
    000010D6 64E3                   MOV         R14,R4
    000010D8 F4E6                   FMOV.S      @(R0,R14),FR4
    000010DA 490B                   JSR         @R9
    000010DC 7444                   ADD         #68,R4
    000010DE A00D                   BRA         L2425
    000010E0 0009                   NOP
    000010E2              L2444:                            
      bt_tblade.   888                                    }
      bt_tblade.   889                            }
      bt_tblade.   890                    } else {
      bt_tblade.   891  E                         if( (!(0)) ) gerr_Assert( 0, "
                         +bt_tblade.c", 891 );
    000010E2 4F26                   LDS.L       @R15+,PR
    000010E4 D20C                   MOV.L       L2586+10,R2; _gerr_Assert
    000010E6 E400                   MOV         #0,R4
    000010E8 9612                   MOV.W       L2586+2,R6 ; H'037B
    000010EA 68F6                   MOV.L       @R15+,R8
    000010EC D509                   MOV.L       L2586+6,R5 ; L1911
    000010EE 69F6                   MOV.L       @R15+,R9
    000010F0 6AF6                   MOV.L       @R15+,R10
    000010F2 6BF6                   MOV.L       @R15+,R11
    000010F4 6CF6                   MOV.L       @R15+,R12
    000010F6 6DF6                   MOV.L       @R15+,R13
    000010F8 422B                   JMP         @R2
    000010FA 6EF6                   MOV.L       @R15+,R14
    000010FC              L2425:                            
      bt_tblade.   892                            break;
      bt_tblade.   893                    }
      bt_tblade.   894                    break;
      bt_tblade.   895            }
      bt_tblade.   896    }
    000010FC 4F26                   LDS.L       @R15+,PR
    000010FE 68F6                   MOV.L       @R15+,R8
    00001100 69F6                   MOV.L       @R15+,R9
    00001102 6AF6                   MOV.L       @R15+,R10
    00001104 6BF6                   MOV.L       @R15+,R11
    00001106 6CF6                   MOV.L       @R15+,R12
    00001108 6DF6                   MOV.L       @R15+,R13
    0000110A 000B                   RTS
    0000110C 6EF6                   MOV.L       @R15+,R14
    0000110E              L2586:                            
    0000110E 0368                   .DATA.W     H'0368
    00001110 037B                   .DATA.W     H'037B
    00001112 00000002               .RES.W      1
    00001114 <00000000>             .DATA.L     L1911
    00001118 <00000000>             .DATA.L     _gerr_Assert
    0000111C 3EB33333               .DATA.L     H'3EB33333
    00001120 <00000000>             .DATA.L     _light_SetMotif
    00001124 <00000000>             .DATA.L     _light_TurnOn
      bt_tblade.   897    
      bt_tblade.   898  E static int _AnimateDeployingBoosters( TBlade_t *pTblad
                         +e ) {
    00001128              L1890:                           ; function: _AnimateD
                        +                                  eployingBoosters
                                                           ; frame size=0
      bt_tblade.   899    
      bt_tblade.   900            switch( pTblade->nHBAnimFrameCount )
    00001128 8543                   MOV.W       @(6,R4),R0
    0000112A 600D                   EXTU.W      R0,R0
    0000112C E135                   MOV         #53,R1
    0000112E 3012                   CMP/HS      R1,R0
    00001130 8B01                   BF          L2587
    00001132 A086                   BRA         L2299
    00001134 0009                   NOP
    00001136              L2587:                            
    00001136 4000                   SHLL        R0
    00001138 6103                   MOV         R0,R1
    0000113A C702                   MOVA        L2589,R0
    0000113C 001D                   MOV.W       @(R0,R1),R0
    0000113E 0023                   BRAF        R0
    00001140 0009                   NOP
    00001142              L2588:                            
    00001142 00000002               .RES.W      1
    00001144              L2589:
    00001144 006C                   .DATA.W     L2246-L2588
    00001146 006C                   .DATA.W     L2247-L2588
    00001148 006C                   .DATA.W     L2248-L2588
    0000114A 006C                   .DATA.W     L2249-L2588
    0000114C 006C                   .DATA.W     L2250-L2588
    0000114E 006C                   .DATA.W     L2251-L2588
    00001150 006C                   .DATA.W     L2252-L2588
    00001152 006C                   .DATA.W     L2253-L2588
    00001154 006C                   .DATA.W     L2254-L2588
    00001156 006C                   .DATA.W     L2255-L2588
    00001158 006C                   .DATA.W     L2256-L2588
    0000115A 006C                   .DATA.W     L2257-L2588
    0000115C 006C                   .DATA.W     L2258-L2588
    0000115E 006C                   .DATA.W     L2259-L2588
    00001160 006C                   .DATA.W     L2260-L2588
    00001162 006C                   .DATA.W     L2261-L2588
    00001164 006C                   .DATA.W     L2262-L2588
    00001166 006C                   .DATA.W     L2263-L2588
    00001168 006C                   .DATA.W     L2264-L2588
    0000116A 006C                   .DATA.W     L2265-L2588
    0000116C 006C                   .DATA.W     L2266-L2588
    0000116E 006C                   .DATA.W     L2267-L2588
    00001170 006C                   .DATA.W     L2268-L2588
    00001172 006C                   .DATA.W     L2269-L2588
    00001174 006C                   .DATA.W     L2270-L2588
    00001176 006C                   .DATA.W     L2271-L2588
    00001178 006C                   .DATA.W     L2272-L2588
    0000117A 006C                   .DATA.W     L2273-L2588
    0000117C 006C                   .DATA.W     L2274-L2588
    0000117E 0098                   .DATA.W     L2275-L2588
    00001180 00A4                   .DATA.W     L2276-L2588
    00001182 00AA                   .DATA.W     L2277-L2588
    00001184 00B0                   .DATA.W     L2278-L2588
    00001186 00B6                   .DATA.W     L2279-L2588
    00001188 00BE                   .DATA.W     L2280-L2588
    0000118A 00BE                   .DATA.W     L2281-L2588
    0000118C 00BE                   .DATA.W     L2282-L2588
    0000118E 00BE                   .DATA.W     L2283-L2588
    00001190 00BE                   .DATA.W     L2284-L2588
    00001192 00BE                   .DATA.W     L2285-L2588
    00001194 00BE                   .DATA.W     L2286-L2588
    00001196 00BE                   .DATA.W     L2287-L2588
    00001198 00BE                   .DATA.W     L2288-L2588
    0000119A 00BE                   .DATA.W     L2289-L2588
    0000119C 00BE                   .DATA.W     L2290-L2588
    0000119E 00BE                   .DATA.W     L2291-L2588
    000011A0 00BE                   .DATA.W     L2292-L2588
    000011A2 00BE                   .DATA.W     L2293-L2588
    000011A4 00BE                   .DATA.W     L2294-L2588
    000011A6 00DE                   .DATA.W     L2295-L2588
    000011A8 00E6                   .DATA.W     L2296-L2588
    000011AA 00EE                   .DATA.W     L2297-L2588
    000011AC 00F6                   .DATA.W     L2298-L2588
      bt_tblade.   901            {
      bt_tblade.   902            /* 30 frames of cowling xlat */
      bt_tblade.   903            case 0:
    000011AE              L2246:                           ; case label 
      bt_tblade.   904            case 1:
    000011AE              L2247:                           ; case label 
      bt_tblade.   905            case 2:
    000011AE              L2248:                           ; case label 
      bt_tblade.   906            case 3:
    000011AE              L2249:                           ; case label 
      bt_tblade.   907            case 4:
    000011AE              L2250:                           ; case label 
      bt_tblade.   908            case 5:
    000011AE              L2251:                           ; case label 
      bt_tblade.   909            case 6:
    000011AE              L2252:                           ; case label 
      bt_tblade.   910            case 7:
    000011AE              L2253:                           ; case label 
      bt_tblade.   911            case 8:
    000011AE              L2254:                           ; case label 
      bt_tblade.   912            case 9:
    000011AE              L2255:                           ; case label 
      bt_tblade.   913            case 10:
    000011AE              L2256:                           ; case label 
      bt_tblade.   914            case 11:
    000011AE              L2257:                           ; case label 
      bt_tblade.   915            case 12:
    000011AE              L2258:                           ; case label 
      bt_tblade.   916            case 13:
    000011AE              L2259:                           ; case label 
      bt_tblade.   917            case 14:
    000011AE              L2260:                           ; case label 
      bt_tblade.   918            case 15:
    000011AE              L2261:                           ; case label 
      bt_tblade.   919            case 16:
    000011AE              L2262:                           ; case label 
      bt_tblade.   920            case 17:
    000011AE              L2263:                           ; case label 
      bt_tblade.   921            case 18:
    000011AE              L2264:                           ; case label 
      bt_tblade.   922            case 19:
    000011AE              L2265:                           ; case label 
      bt_tblade.   923            case 20:
    000011AE              L2266:                           ; case label 
      bt_tblade.   924            case 21:
    000011AE              L2267:                           ; case label 
      bt_tblade.   925            case 22:
    000011AE              L2268:                           ; case label 
      bt_tblade.   926            case 23:
    000011AE              L2269:                           ; case label 
      bt_tblade.   927            case 24:
    000011AE              L2270:                           ; case label 
      bt_tblade.   928            case 25:
    000011AE              L2271:                           ; case label 
      bt_tblade.   929            case 26:
    000011AE              L2272:                           ; case label 
      bt_tblade.   930            case 27:
    000011AE              L2273:                           ; case label 
      bt_tblade.   931            case 28:
    000011AE              L2274:                           ; case label 
      bt_tblade.   932  E                 pTblade->fHBAnimPercent = ( pTblade->f
                         +HBAnimPercent+((pTblade->fHBAnimPercent*(1.f-pTblade->
                         +fHBAnimPercent))*.1807280f+.01f) );
    000011AE E010                   MOV         #16,R0
    000011B0 F39D                   FLDI1       FR3
    000011B2 F446                   FMOV.S      @(R0,R4),FR4
    000011B4 C727                   MOVA        L2590+2,R0
    000011B6 F008                   FMOV.S      @R0,FR0
    000011B8 C727                   MOVA        L2590+6,R0
    000011BA F341                   FSUB        FR4,FR3
    000011BC F24C                   FMOV.S      FR4,FR2
    000011BE F342                   FMUL        FR4,FR3
    000011C0 F23E                   FMAC        FR0,FR3,FR2
    000011C2 F308                   FMOV.S      @R0,FR3
    000011C4 E010                   MOV         #16,R0
    000011C6 F230                   FADD        FR3,FR2
    000011C8 F427                   FMOV.S      FR2,@(R0,R4)
      bt_tblade.   933  E                 pTblade->fHBLeftXlat = -1.757f * pTbla
                         +de->fHBAnimPercent;     
    000011CA C724                   MOVA        L2590+10,R0
    000011CC F208                   FMOV.S      @R0,FR2
    000011CE E010                   MOV         #16,R0
    000011D0 F146                   FMOV.S      @(R0,R4),FR1
    000011D2 F122                   FMUL        FR2,FR1
    000011D4 F14D                   FNEG        FR1
      bt_tblade.   934                    break;
    000011D6 A021                   BRA         L2548
    000011D8 E008                   MOV         #8,R0
    000011DA              L2275:                           ; case label 
      bt_tblade.   935            case 29:
      bt_tblade.   936                    pTblade->fHBAnimPercent = 0.0f;
    000011DA E010                   MOV         #16,R0
    000011DC F38D                   FLDI0       FR3
    000011DE F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.   937  E                 pTblade->fHBLeftXlat = (-1.757f + -0.0
                         +5f);    
    000011E0 C71F                   MOVA        L2590+14,R0
      bt_tblade.   938                    break;
    000011E2 A00B                   BRA         L2547
    000011E4 F308                   FMOV.S      @R0,FR3
    000011E6              L2276:                           ; case label 
      bt_tblade.   939            /* reverb cowling  */
      bt_tblade.   940            case 30:
      bt_tblade.   941  E                 pTblade->fHBLeftXlat = (-1.757f + 0.04
                         +f);
    000011E6 C71F                   MOVA        L2590+18,R0
      bt_tblade.   942                    break;
    000011E8 A008                   BRA         L2547
    000011EA F308                   FMOV.S      @R0,FR3
    000011EC              L2277:                           ; case label 
      bt_tblade.   943            /* reverb cowling */
      bt_tblade.   944            case 31:
      bt_tblade.   945  E                 pTblade->fHBLeftXlat = (-1.757f + -0.0
                         +3f);
    000011EC C71E                   MOVA        L2590+22,R0
      bt_tblade.   946                    break;
    000011EE A005                   BRA         L2547
    000011F0 F308                   FMOV.S      @R0,FR3
    000011F2              L2278:                           ; case label 
      bt_tblade.   947            /* reverb cowling */
      bt_tblade.   948            case 32:
      bt_tblade.   949  E                 pTblade->fHBLeftXlat = (-1.757f + 0.01
                         +5f);
    000011F2 C71E                   MOVA        L2590+26,R0
      bt_tblade.   950                    break;
    000011F4 A002                   BRA         L2547
    000011F6 F308                   FMOV.S      @R0,FR3
    000011F8              L2279:                           ; case label 
      bt_tblade.   951            /* reverb cowling */
      bt_tblade.   952            case 33:
      bt_tblade.   953  E                 pTblade->fHBLeftXlat = -1.757f; 
    000011F8 C71D                   MOVA        L2590+30,R0
    000011FA F308                   FMOV.S      @R0,FR3
      bt_tblade.   954                    break;
    000011FC              L2547:                            
    000011FC A01F                   BRA         L2552
    000011FE E008                   MOV         #8,R0
    00001200              L2280:                           ; case label 
      bt_tblade.   955            /* 15 frames linear booster xlat */
      bt_tblade.   956            case 34:
      bt_tblade.   957            case 35:
    00001200              L2281:                           ; case label 
      bt_tblade.   958            case 36:
    00001200              L2282:                           ; case label 
      bt_tblade.   959            case 37:
    00001200              L2283:                           ; case label 
      bt_tblade.   960            case 38:
    00001200              L2284:                           ; case label 
      bt_tblade.   961            case 39:
    00001200              L2285:                           ; case label 
      bt_tblade.   962            case 40:
    00001200              L2286:                           ; case label 
      bt_tblade.   963            case 41:
    00001200              L2287:                           ; case label 
      bt_tblade.   964            case 42:
    00001200              L2288:                           ; case label 
      bt_tblade.   965            case 43:
    00001200              L2289:                           ; case label 
      bt_tblade.   966            case 44:
    00001200              L2290:                           ; case label 
      bt_tblade.   967            case 45:
    00001200              L2291:                           ; case label 
      bt_tblade.   968            case 46:
    00001200              L2292:                           ; case label 
      bt_tblade.   969            case 47:
    00001200              L2293:                           ; case label 
      bt_tblade.   970            case 48:
    00001200              L2294:                           ; case label 
      bt_tblade.   971  E                 pTblade->fHBAnimPercent = ( pTblade->f
                         +HBAnimPercent+=0.06666666666667f );
    00001200 D11C                   MOV.L       L2590+34,R1; H'3D888888
    00001202 E010                   MOV         #16,R0
    00001204 F246                   FMOV.S      @(R0,R4),FR2
    00001206 415A                   LDS         R1,FPUL
    00001208 F30D                   FSTS        FPUL,FR3
    0000120A F230                   FADD        FR3,FR2
    0000120C F427                   FMOV.S      FR2,@(R0,R4)
      bt_tblade.   972  E                 pTblade->fHBBoosterXlat = -3.0f * pTbl
                         +ade->fHBAnimPercent;
    0000120E C71A                   MOVA        L2590+38,R0
    00001210 F208                   FMOV.S      @R0,FR2
    00001212 E010                   MOV         #16,R0
    00001214 F146                   FMOV.S      @(R0,R4),FR1
    00001216 E00C                   MOV         #12,R0
    00001218 F122                   FMUL        FR2,FR1
    0000121A F14D                   FNEG        FR1
      bt_tblade.   973                    break;
    0000121C              L2548:                            
    0000121C A013                   BRA         L2474
    0000121E F417                   FMOV.S      FR1,@(R0,R4)
    00001220              L2295:                           ; case label 
      bt_tblade.   974            /* reverb the booster pipe */
      bt_tblade.   975            case 49:
      bt_tblade.   976  E                 pTblade->fHBBoosterXlat = (-3.0f + -0.
                         +05f);
    00001220 C716                   MOVA        L2590+42,R0
    00001222 F308                   FMOV.S      @R0,FR3
      bt_tblade.   977                    break;
    00001224 A00B                   BRA         L2552
    00001226 E00C                   MOV         #12,R0
    00001228              L2296:                           ; case label 
      bt_tblade.   978            /* reverb the booster pipe */
      bt_tblade.   979            case 50:
      bt_tblade.   980  E                 pTblade->fHBBoosterXlat = (-3.0f + 0.0
                         +35f);
    00001228 C715                   MOVA        L2590+46,R0
    0000122A F308                   FMOV.S      @R0,FR3
      bt_tblade.   981                    break;
    0000122C A007                   BRA         L2552
    0000122E E00C                   MOV         #12,R0
    00001230              L2297:                           ; case label 
      bt_tblade.   982            /* reverb the booster pipe */
      bt_tblade.   983            case 51:
      bt_tblade.   984  E                 pTblade->fHBBoosterXlat = (-3.0f + -0.
                         +015f);
    00001230 C714                   MOVA        L2590+50,R0
    00001232 F308                   FMOV.S      @R0,FR3
      bt_tblade.   985                    break;
    00001234 A003                   BRA         L2552
    00001236 E00C                   MOV         #12,R0
    00001238              L2298:                           ; case label 
      bt_tblade.   986            /* reverb the booster pipe */
      bt_tblade.   987            case 52:
      bt_tblade.   988  E                 pTblade->fHBBoosterXlat = -3.0f;      
    00001238 C713                   MOVA        L2590+54,R0
    0000123A F308                   FMOV.S      @R0,FR3
    0000123C E00C                   MOV         #12,R0
      bt_tblade.   989                    break;
    0000123E              L2552:                            
    0000123E A002                   BRA         L2474
    00001240 F437                   FMOV.S      FR3,@(R0,R4)
    00001242              L2299:                           ; default label 
      bt_tblade.   990            default:
      bt_tblade.   991  E                 return 1;
    00001242 000B                   RTS
    00001244 E001                   MOV         #1,R0
    00001246              L2474:                            
      bt_tblade.   992            }
      bt_tblade.   993    
      bt_tblade.   994            ++pTblade->nHBAnimFrameCount;
    00001246 8543                   MOV.W       @(6,R4),R0
    00001248 7001                   ADD         #1,R0
    0000124A 8143                   MOV.W       R0,@(6,R4)
      bt_tblade.   995  E         return 0;
    0000124C E000                   MOV         #0,R0
      bt_tblade.   996    }
    0000124E              L2475:                            
    0000124E 000B                   RTS
    00001250 0009                   NOP
    00001252              L2590:                            
    00001252 00000002               .RES.W      1
    00001254 3E3910C2               .DATA.L     H'3E3910C2
    00001258 3C23D70A               .DATA.L     H'3C23D70A
    0000125C 3FE0E560               .DATA.L     H'3FE0E560
    00001260 BFE74BC6               .DATA.L     H'BFE74BC6
    00001264 BFDBC6A7

00001268 BFE4BC6A               .DATA.L     H'BFE4BC6A
    0000126C BFDEF9DA               .DATA.L     H'BFDEF9DA
    00001270 BFE0E560               .DATA.L     H'BFE0E560
    00001274 3D888888               .DATA.L     H'3D888888
    00001278 40400000               .DATA.L     H'40400000
    0000127C C0433333               .DATA.L     H'C0433333
    00001280 C03DC28F               .DATA.L     H'C03DC28F
    00001284 C040F5C2               .DATA.L     H'C040F5C2
    00001288 C0400000               .DATA.L     H'C0400000
      bt_tblade.   997    
      bt_tblade.   998  E static int _AnimateRetractingBoosters( TBlade_t *pTbla
                         +de ) {
    0000128C              L1889:                           ; function: _AnimateR
                        +                                  etractingBoosters
                                                           ; frame size=0
      bt_tblade.   999    
      bt_tblade.  1000            switch( pTblade->nHBAnimFrameCount )
    0000128C 8543                   MOV.W       @(6,R4),R0
    0000128E 600D                   EXTU.W      R0,R0
    00001290 E132                   MOV         #50,R1
    00001292 3012                   CMP/HS      R1,R0
    00001294 8963                   BT          L2350
    00001296 4000                   SHLL        R0
    00001298 6103                   MOV         R0,R1
    0000129A C702                   MOVA        L2592,R0
    0000129C 001D                   MOV.W       @(R0,R1),R0
    0000129E 0023                   BRAF        R0
    000012A0 0009                   NOP
    000012A2              L2591:                            
    000012A2 00000002               .RES.W      1
    000012A4              L2592:
    000012A4 0066                   .DATA.W     L2300-L2591
    000012A6 0066                   .DATA.W     L2301-L2591
    000012A8 0066                   .DATA.W     L2302-L2591
    000012AA 0066                   .DATA.W     L2303-L2591
    000012AC 0066                   .DATA.W     L2304-L2591
    000012AE 0066                   .DATA.W     L2305-L2591
    000012B0 0066                   .DATA.W     L2306-L2591
    000012B2 0066                   .DATA.W     L2307-L2591
    000012B4 0066                   .DATA.W     L2308-L2591
    000012B6 0066                   .DATA.W     L2309-L2591
    000012B8 0066                   .DATA.W     L2310-L2591
    000012BA 0066                   .DATA.W     L2311-L2591
    000012BC 0066                   .DATA.W     L2312-L2591
    000012BE 0066                   .DATA.W     L2313-L2591
    000012C0 0066                   .DATA.W     L2314-L2591
    000012C2 0066                   .DATA.W     L2315-L2591
    000012C4 0066                   .DATA.W     L2316-L2591
    000012C6 0066                   .DATA.W     L2317-L2591
    000012C8 0066                   .DATA.W     L2318-L2591
    000012CA 0066                   .DATA.W     L2319-L2591
    000012CC 0086                   .DATA.W     L2320-L2591
    000012CE 008C                   .DATA.W     L2321-L2591
    000012D0 008C                   .DATA.W     L2322-L2591
    000012D2 008C                   .DATA.W     L2323-L2591
    000012D4 008C                   .DATA.W     L2324-L2591
    000012D6 008C                   .DATA.W     L2325-L2591
    000012D8 008C                   .DATA.W     L2326-L2591
    000012DA 008C                   .DATA.W     L2327-L2591
    000012DC 008C                   .DATA.W     L2328-L2591
    000012DE 008C                   .DATA.W     L2329-L2591
    000012E0 008C                   .DATA.W     L2330-L2591
    000012E2 008C                   .DATA.W     L2331-L2591
    000012E4 008C                   .DATA.W     L2332-L2591
    000012E6 008C                   .DATA.W     L2333-L2591
    000012E8 008C                   .DATA.W     L2334-L2591
    000012EA 008C                   .DATA.W     L2335-L2591
    000012EC 008C                   .DATA.W     L2336-L2591
    000012EE 008C                   .DATA.W     L2337-L2591
    000012F0 008C                   .DATA.W     L2338-L2591
    000012F2 008C                   .DATA.W     L2339-L2591
    000012F4 008C                   .DATA.W     L2340-L2591
    000012F6 008C                   .DATA.W     L2341-L2591
    000012F8 008C                   .DATA.W     L2342-L2591
    000012FA 008C                   .DATA.W     L2343-L2591
    000012FC 008C                   .DATA.W     L2344-L2591
    000012FE 008C                   .DATA.W     L2345-L2591
    00001300 008C                   .DATA.W     L2346-L2591
    00001302 008C                   .DATA.W     L2347-L2591
    00001304 008C                   .DATA.W     L2348-L2591
    00001306 008C                   .DATA.W     L2349-L2591
      bt_tblade.  1001            {
      bt_tblade.  1002            /* 20 frames of cowling xlat */
      bt_tblade.  1003            case 0:
    00001308              L2300:                           ; case label 
      bt_tblade.  1004            case 1:
    00001308              L2301:                           ; case label 
      bt_tblade.  1005            case 2:
    00001308              L2302:                           ; case label 
      bt_tblade.  1006            case 3:
    00001308              L2303:                           ; case label 
      bt_tblade.  1007            case 4:
    00001308              L2304:                           ; case label 
      bt_tblade.  1008            case 5:
    00001308              L2305:                           ; case label 
      bt_tblade.  1009            case 6:
    00001308              L2306:                           ; case label 
      bt_tblade.  1010            case 7:
    00001308              L2307:                           ; case label 
      bt_tblade.  1011            case 8:
    00001308              L2308:                           ; case label 
      bt_tblade.  1012            case 9:
    00001308              L2309:                           ; case label 
      bt_tblade.  1013            case 10:
    00001308              L2310:                           ; case label 
      bt_tblade.  1014            case 11:
    00001308              L2311:                           ; case label 
      bt_tblade.  1015            case 12:
    00001308              L2312:                           ; case label 
      bt_tblade.  1016            case 13:
    00001308              L2313:                           ; case label 
      bt_tblade.  1017            case 14:
    00001308              L2314:                           ; case label 
      bt_tblade.  1018            case 15:
    00001308              L2315:                           ; case label 
      bt_tblade.  1019            case 16:
    00001308              L2316:                           ; case label 
      bt_tblade.  1020            case 17:
    00001308              L2317:                           ; case label 
      bt_tblade.  1021            case 18:
    00001308              L2318:                           ; case label 
      bt_tblade.  1022            case 19:
    00001308              L2319:                           ; case label 
      bt_tblade.  1023  E                 pTblade->fHBAnimPercent = ( pTblade->f
                         +HBAnimPercent+=0.05f );
    00001308 D131                   MOV.L       L2593+2,R1 ; H'3D4CCCCC
    0000130A E010                   MOV         #16,R0
    0000130C F246                   FMOV.S      @(R0,R4),FR2
    0000130E 415A                   LDS         R1,FPUL
    00001310 F30D                   FSTS        FPUL,FR3
    00001312 F230                   FADD        FR3,FR2
    00001314 F427                   FMOV.S      FR2,@(R0,R4)
      bt_tblade.  1024  E                 pTblade->fHBBoosterXlat = -3.0f - (-3.
                         +0f * pTblade->fHBAnimPercent);
    00001316 C72F                   MOVA        L2593+6,R0
    00001318 F208                   FMOV.S      @R0,FR2
    0000131A C72F                   MOVA        L2593+10,R0
    0000

131C F008                   FMOV.S      @R0,FR0
    0000131E E010                   MOV         #16,R0
    00001320 F346                   FMOV.S      @(R0,R4),FR3
    00001322 F23E                   FMAC        FR0,FR3,FR2
      bt_tblade.  1025                    break;
    00001324 A019                   BRA         L2553
    00001326 E00C                   MOV         #12,R0
    00001328              L2320:                           ; case label 
      bt_tblade.  1026            /* 30 frames of cowling xlat  */
      bt_tblade.  1027            case 20:
      bt_tblade.  1028                    pTblade->fHBAnimPercent = 0.0f;
    00001328 E010                   MOV         #16,R0
    0000132A F38D                   FLDI0       FR3
    0000132C F437                   FMOV.S      FR3,@(R0,R4)
      bt_tblade.  1029            case 21:
    0000132E              L2321:                           ; case label 
      bt_tblade.  1030            case 22:
    0000132E              L2322:                           ; case label 
      bt_tblade.  1031            case 23:
    0000132E              L2323:                           ; case label 
      bt_tblade.  1032            case 24:
    0000132E              L2324:                           ; case label 
      bt_tblade.  1033            case 25:
    0000132E              L2325:                           ; case label 
      bt_tblade.  1034            case 26:
    0000132E              L2326:                           ; case label 
      bt_tblade.  1035            case 27:
    0000132E              L2327:                           ; case label 
      bt_tblade.  1036            case 28:
    0000132E              L2328:                           ; case label 
      bt_tblade.  1037            case 29:
    0000132E              L2329:                           ; case label 
      bt_tblade.  1038            case 30:
    0000132E              L2330:                           ; case label 
      bt_tblade.  1039            case 31:
    0000132E              L2331:                           ; case label 
      bt_tblade.  1040            case 32:
    0000132E              L2332:                           ; case label 
      bt_tblade.  1041            case 33:
    0000132E              L2333:                           ; case label 
      bt_tblade.  1042            case 34:
    0000132E              L2334:                           ; case label 
      bt_tblade.  1043            case 35:
    0000132E              L2335:                           ; case label 
      bt_tblade.  1044            case 36:
    0000132E              L2336:                           ; case label 
      bt_tblade.  1045            case 37:
    0000132E              L2337:                           ; case label 
      bt_tblade.  1046            case 38:
    0000132E              L2338:                           ; case label 
      bt_tblade.  1047            case 39:
    0000132E              L2339:                           ; case label 
      bt_tblade.  1048            case 40:
    0000132E              L2340:                           ; case label 
      bt_tblade.  1049            case 41:
    0000132E              L2341:                           ; case label 
      bt_tblade.  1050            case 42:
    0000132E              L2342:                           ; case label 
      bt_tblade.  1051            case 43:
    0000132E              L2343:                           ; case label 
      bt_tblade.  1052            case 44:
    0000132E              L2344:                           ; case label 
      bt_tblade.  1053            case 45:
    0000132E              L2345:                           ; case label 
      bt_tblade.  1054            case 46:
    0000132E              L2346:                           ; case label 
      bt_tblade.  1055            case 47:
    0000132E              L2347:                           ; case label 
      bt_tblade.  1056            case 48:
    0000132E              L2348:                           ; case label 
      bt_tblade.  1057            case 49:
    0000132E              L2349:                           ; case label 
      bt_tblade.  1058  E                 pTblade->fHBAnimPercent = ( pTblade->f
                         +HBAnimPercent+((pTblade->fHBAnimPercent*(1.f-pTblade->
                         +fHBAnimPercent))*.1807280f+.01f) );
    0000132E E010                   MOV         #16,R0
    00001330 F39D                   FLDI1       FR3
    00001332 F446                   FMOV.S      @(R0,R4),FR4
    00001334 C729                   MOVA        L2593+14,R0
    00001336 F008                   FMOV.S      @R0,FR0
    00001338 C729                   MOVA        L2593+18,R0
    0000133A F341                   FSUB        FR4,FR3
    0000133C F24C                   FMOV.S      FR4,FR2
    0000133E F342                   FMUL        FR4,FR3
    00001340 F23E                   FMAC        FR0,FR3,FR2
    00001342 F308                   FMOV.S      @R0,FR3
    00001344 E010                   MOV         #16,R0
    00001346 F230                   FADD        FR3,FR2
    00001348 F427                   FMOV.S      FR2,@(R0,R4)
      bt_tblade.  1059  E                 pTblade->fHBLeftXlat = -1.757f - (-1.7
                         +57f * pTblade->fHBAnimPercent); 
    0000134A C726                   MOVA        L2593+22,R0
    0000134C F208                   FMOV.S      @R0,FR2
    0000134E C726                   MOVA        L2593+26,R0
    00001350 F008                   FMOV.S      @R0,FR0
    00001352 E010                   MOV         #16,R0
    00001354 F346                   FMOV.S      @(R0,R4),FR3
    00001356 E008                   MOV         #8,R0
    00001358 F23E                   FMAC        FR0,FR3,FR2
      bt_tblade.  1060                    break;
    0000135A              L2553:                            
    0000135A A002                   BRA         L2476
    0000135C F427                   FMOV.S      FR2,@(R0,R4)
    0000135E              L2350:                           ; default label 
      bt_tblade.  1061            default:
      bt_tblade.  1062  E                 return 1;
    0000135E 000B                   RTS
    00001360 E001                   MOV         #1,R0
    00001362              L2476:                            
      bt_tblade.  1063            }
      bt_tblade.  1064    
      bt_tblade.  1065            ++pTblade->nHBAnimFrameCount;
    00001362 8543                   MOV.W       @(6,R4),R0
    00001364 7001                   ADD         #1,R0
    00001366 8143                   MOV.W       R0,@(6,R4)
      bt_tblade.  1066  E         return 0;
    00001368 E000                   MOV         #0,R0
      bt_tblade.  1067    }
    0000136A              L2477:                            
    0000136A 000B                   RTS
    0000136C 0009                   NOP
      bt_tblade.  1068    
      bt_tblade.  1069    static void _FlameParticleInit( void ) {
    0000136E              L1891:                           ; function: _FlamePar
                        +                                  ticleInit
                                                           ; frame size=0
      bt_tblade.  1070  E         _FlameParticle.nFlags = 0x1;
    0000136E D41F                   MOV.L       L2593+30,R4; L1883
      bt_tblade.  1071            _FlameParticle.nType = PARTICLE_FLAME;
      bt_tblade.  1072            _FlameParticle.fScale = 1.0f;
    00001370 E020                   MOV         #32,R0
    00001372 E301                   MOV         #1,R3
    00001374 2432                   MOV.L       R3,@R4
    00001376 E203                   MOV         #3,R2
    00001378 1421                   MOV.L       R2,@(4,R4)
      bt_tblade.  1073            _FlameParticle.fOpacity = 1.0f;
      bt_tblade.  1074            _FlameParticle.nAngle = 0;
    0000137A E500                   MOV         #0,R5
    0000137C F49D                   FLDI1       FR4
    0000137E F447                   FMOV.S      FR4,@(R0,R4)
    00001380 E024                   MOV         #36,R0
    00001382 F447                   FMOV.S      FR4,@(R0,R4)
      bt_tblade.  1075            _FlameParticle.nAge = 0;
      bt_tblade.  1076  E         _FlameParticle.pMesh = 0;
      bt_tblade.  1077  E         _FlameParticle.pUserObj = 0;
      bt_tblade.  1078            _FlameParticle.pWorkFcn = _FlameParticleWork;
    00001384 E044                   MOV         #68,R0
    00001386 145A                   MOV.L       R5,@(40,R4)
    00001388 145B                   MOV.L       R5,@(44,R4)
    0000138A 145E                   MOV.L       R5,@(56,R4)
    0000138C 145F                   MOV.L       R5,@(60,R4)
    0000138E D318                   MOV.L       L2593+34,R3; L1893
    00001390 0436                   MOV.L       R3,@(R0,R4)
      bt_tblade.  1079            _FlameParticle.pDrawFcn = _FlameParticleDraw;
    00001392 E048                   MOV         #72,R0
    00001394 D217                   MOV.L       L2593+38,R2; L1894
      bt_tblade.  1080    }
    00001396 000B                   RTS
    00001398 0426                   MOV.L       R2,@(R0,R4)
      bt_tblade.  1081    
      bt_tblade.  1082    /* just needed to kill the particle when it gets calle
                         +d, */
      bt_tblade.  1083    /* the skip first move flag is set so this particle wi
                         +ll */
      bt_tblade.  1084    /* be drawn and then killed the next loop */
      bt_tblade.  1085  E static int _FlameParticleWork( Particle_t *pParticle )
                         + {
    0000139A              L1893:                           ; function: _FlamePar
                        +                                  ticleWork
                                                           ; frame size=0
      bt_tblade.  1086  E         return 1;
      bt_tblade.  1087    }
    0000139A 000B                   RTS
    0000139C E001                   MOV         #1,R0
      bt_tblade.  1088    
      bt_tblade.  1089    static void _FlameParticleAdd( Player_t *pPlayer ) {
    0000139E              L1892:                           ; function: _FlamePar
                        +                                  ticleAdd
                                                           ; frame size=0
      bt_tblade.  1090            _FlameParticle.Pos.p[0] = pPlayer->pWorldOb->O
                         +rient.Pos.p[0];
    0000139E E050                   MOV         #80,R0
    000013A0 D512                   MOV.L       L2593+30,R5; L1883
    000013A2 024E                   MOV.L       @(R0,R4),R2
    000013A4 E008                   MOV         #8,R0
    000013A6 7258                   ADD         #88,R2
    000013A8 F328                   FMOV.S      @R2,FR3
    000013AA F537                   FMOV.S      FR3,@(R0,R5)
      bt_tblade.  1091            _FlameParticle.Pos.p[1] = pPlayer->pWorldOb->O
                         +rient.Pos.p[1];
    000013AC E050                   MOV         #80,R0
    000013AE 034E                   MOV.L       @(R0,R4),R3
    000013B0 E05C                   MOV         #92,R0
    000013B2 F336                   FMOV.S      @(R0,R3),FR3
    000013B4 E00C                   MOV         #12,R0
    000013B6 F537                   FMOV.S      FR3,@(R0,R5)
      bt_tblade.  1092            _FlameParticle.Pos.p[2] = pPlayer->pWorldOb->O
                         +rient.Pos.p[2];
    000013B8 E050                   MOV         #80,R0
    000013BA 034E                   MOV.L       @(R0,R4),R3
    000013BC E060                   MOV         #96,R0
    000013BE F336                   FMOV.S      @(R0,R3),FR3
    000013C0 E010                   MOV         #16,R0
    000013C2 F537                   FMOV.S      FR3,@(R0,R5)
      bt_tblade.  1093            _FlameParticle.pUserObj = pPlayer;
    000013C4 154F                   MOV.L       R4,@(60,R5)
      bt_tblade.  1094    
      bt_tblade.  1095  E         particle_Add( &_FlameParticle, 0 );
    000013C6 D409                   MOV.L       L2593+30,R4; L1883
    000013C8 D30B                   MOV.L       L2593+42,R3; _particle_Add
    000013CA 432B                   JMP         @R3
    000013CC E500                   MOV         #0,R5
    000013CE              L2593:                            
    000013CE 00000002               .RES.W      1
    000013D0 3D4CCCCC               .DATA.L     H'3D4CCCCC
    000013D4 C0400000               .DATA.L     H'C0400000
    000013D8 40400000               .DATA.L     H'40400000
    000013DC 3E3910C2               .DATA.L     H'3E3910C2
    000013E0 3C23D70A               .DATA.L     H'3C23D70A
    000013E4 BFE0E560               .DATA.L     H'BFE0E560
    000013E8 3FE0E560               .DATA.L     H'3FE0E560
    000013EC <00000000>             .DATA.L     L1883
    000013F0 <00000000>             .DATA.L     L1893
    000013F4 <00000000>             .DATA.L     L1894
    000013F8 <00000000>             .DATA.L     _particle_Add
      bt_tblade.  1096    }
      bt_tblade.  1097    
      bt_tblade.  1098    static void _FlameParticleDraw( Particle_t *pParticle 
                         +) {
    000013FC              L1894:                           ; function: _FlamePar
                        +                                  ticleDraw
                                                           ; frame size=312
    000013FC 2FE6                   MOV.L       R14,@-R15
    000013FE 2FD6                   MOV.L       R13,@-R15
    00001400 2FC6                   MOV.L       R12,@-R15
    00001402 2FB6                   MOV.L       R11,@-R15
    00001404 2FA6                   MOV.L       R10,@-R15
    00001406 2F96                   MOV.L       R9,@-R15
    00001408 2F86                   MOV.L       R8,@-R15
    0000140A 6843                   MOV         R4,R8
    0000140C FFFB                   FMOV.S      FR15,@-R15
    0000140E FFEB                   FMOV.S      FR14,@-R15
    00001410 FFDB                   FMOV.S      FR13,@-R15
    00001412 4F22                   STS.L       PR,@-R15
    00001414 9086                   MOV.W       L2594,R0   ; H'FEF4
      bt_tblade.  1099            Player_t *pPlayer = (Player_t *)pParticle->pUs
                         +erObj;
    00001416 538F                   MOV.L       @(60,R8),R3
    00001418 3F0C                   ADD         R0,R15
      bt_tblade.  1100            TBlade_t *ptblade = (TBlade_t *)pPlayer->pBoat
                         +Data;
    0000141A E060                   MOV         #96,R0
    0000141C 6E33                   MOV         R3,R14
      bt_tblade.  1101            Xfm_t PosterXfm, xfm;
      bt_tblade.  1102            f32 fTemp = 1.0f;
      bt_tblade.  1103            u32 nLightFrame, i, nTemp;
      bt_tblade.  1104            Mesh3dAmbient_t Ambient;
      bt_tblade.  1105            Mesh3d_t *pTop, *pBottom;
      bt_tblade.  1106  E         int bScale;
      bt_tblade.  1107            
      bt_tblade.  1108            /* push the boat's current xfm */
      bt_tblade.  1109            orient_BuildXfm( &xfm, &pPlayer->pWorldOb->Ori
                         +ent );
    0000141E 6533                   MOV         R3,R5
    00001420 2F32                   MOV.L       R3,@R15
    00001422 0EEE                   MOV.L       @(R0,R14),R14
    00001424 E050                   MOV         #80,R0
    00001426 055E                   MOV.L       @(R0,R5),R5
    00001428 64F3                   MOV         R15,R4
    0000142A D33F                   MOV.L       L2594+4,R3 ; _orient_BuildXfm
    0000142C FE9D                   FLDI1       FR14
    0000142E 7558                   ADD         #88,R5
    00001430 FFEC                   FMOV.S      FR14,FR15
    00001432 430B                   JSR         @R3
    00001434 7434                   ADD         #52,R4
      bt_tblade.  1110            xfm_Push( &xfm );
    00001436 DD3D                   MOV.L       L2594+8,R13; _xfm_Push
    00001438 64F3                   MOV         R15,R4
    0000143A 4D0B                   JSR         @R13
    0000143C 7434                   ADD         #52,R4
      bt_tblade.  1111            /* calculate the postering xfm */
      bt_tblade.  1112            xfm_PosterAboutZ( &PosterXfm );
    0000143E D23C                   MOV.L       L2594+12,R2; _xfm_PosterAboutZ
    00001440 9471                   MOV.W       L2594+2,R4 ; H'00A0
    00001442 420B                   JSR         @R2
    00001444 34FC                   ADD         R15,R4
      bt_tblade.  1113            mesh3d_GetAmbientLightState( &Ambient );
    00001446 D33B                   MOV.L       L2594+16,
                        +                                  R3; _mesh3d_GetAmbientLi
                        +                                  ghtState
    00001448 64F3                   MOV         R15,R4
    0000144A 430B                   JSR         @R3
    0000144C 7410                   ADD         #16,R4
      bt_tblade.  1114            nLightFrame = mesh3d_StartLightFrame();
    0000144E D23A                   MOV.L       L2594+20,
                        +                                  R2; _mesh3d_StartLightFr
                        +                                  ame
    00001450 420B                   JSR         @R2
    00001452 0009                   NOP
      bt_tblade.  1115            mesh3d_ClearLightFrame();
    00001454 D339                   MOV.L       L2594+24,
                        +                                  R3; _mesh3d_ClearLightFr
                        +                                  ame
    00001456 430B                   JSR         @R3
    00001458 1F03                   MOV.L       R0,@(12,R15)
      bt_tblade.  1116            mesh3d_SetAmbientEffects( pParticle->fOpacity 
                         +);
    0000145A DB39                   MOV.L       L2594+28,
                        +                                  R11; _mesh3d_SetAmbientE
                        +                                  ffects
    0000145C E024                   MOV         #36,R0
    0000145E 4B0B                   JSR         @R11
    00001460 F486                   FMOV.S      @(R0,R8),FR4
      bt_tblade.  1117            if( ptblade->bFDrawBlue ) {
    00001462 C738                   MOVA        L2594+32,R0
    00001464 DC3A                   MOV.L       L2594+44,R12; _mesh3d_Draw
    00001466 F408                   FMOV.S      @R0,FR4
    00001468 E036                   MOV         #54,R0
    0000146A 03EC                   MOV.B       @(R0,R14),R3
    0000146C D936                   MOV.L       L2594+36,R9; _xfm_Mult
    0000146E DA37                   MOV.L       L2594+40,R10; _xfm_Pop
    00001470 2338                   TST         R3,R3
    00001472 8B01                   BF          L2595
    00001474 A082                   BRA         L2479
    00001476 0009                   NOP
    00001478              L2595:                            
      bt_tblade.  1118                    /* draw the blue flame with end caps *
                         +/
      bt_tblade.  1119                    _pBFlame->pMtl->pTexDef = _paBlueCell[
                         +ptblade->nFCell];
    00001478 E038                   MOV         #56,R0
    0000147A D836                   MOV.L       L2594+48,R8; L1816
    0000147C 01ED                   MOV.W       @(R0,R14),R1
    0000147E 6382                   MOV.L       @R8,R3
    00001480 D035                   MOV.L       L2594+52,R0; L1827
    00001482 611D                   EXTU.W      R1,R1
    00001484 523D                   MOV.L       @(52,R3),R2
    00001486 4108                   SHLL2       R1
    00001488 031E                   MOV.L       @(R0,R1),R3
      bt_tblade.  1120    
      bt_tblade.  1121  E                 if( ptblade->fFIntensity != 0.35f ) {
    0000148A C734                   MOVA        L2594+56,R0
    0000148C 1235                   MOV.L       R3,@(20,R2)
    0000148E FD08                   FMOV.S      @R0,FR13
    00001490 E040                   MOV         #64,R0
    00001492 F3E6                   FMOV.S      @(R0,R14),FR3
    00001494 F3D4                   FCMP/EQ     FR13,FR3
    00001496 8903                   BT          L2480
      bt_tblade.  1122                            fTemp = 0.75f - ptblade->fFInt
                         +ensity;
    00001498 F3E6                   FMOV.S      @(R0,R14),FR3
    0000149A F34D                   FNEG        FR3
    0000149C FF3C                   FMOV.S      FR3,FR15
    0000149E FF40                   FADD        FR4,FR15
    000014A0              L2480:                            
      bt_tblade.  1123                    }
      bt_tblade.  1124                    mesh3d_SetAmbientLight( 0.0f, 0.0f, 1.
                         +0f, fTemp );
    000014A0 D32F                   MOV.L       L2594+60,
                        +                                  R3; _mesh3d_SetAmbientLi
                        +                                  ght
    000014A2 F58D                   FLDI0       FR5
    000014A4 F7FC                   FMOV.S      FR15,FR7
    000014A6 F6EC                   FMOV.S      FR14,FR6
    000014A8 430B                   JSR         @R3
    000014AA F48D                   FLDI0       FR4
      bt_tblade.  1125  E                 mesh3d_Draw( _pLEndPiece, 0xf, 1 );
    000014AC D22D                   MOV.L       L2594+64,R2; L1821
    000014AE E50F                   MOV         #15,R5
    000014B0 E601                   MOV         #1,R6
    000014B2 4C0B                   JSR         @R12
    000014B4 6422                   MOV.L       @R2,R4
      bt_tblade.  1126  E                 mesh3d_Draw( _pREndPiece, 0xf, 1 );
    000014B6 D32C                   MOV.L       L2594+68,R3; L1822
    000014B8 E50F                   MOV         #15,R5
    000014BA E601                   MOV         #1,R6
    000014BC 4C0B                   JSR         @R12
    000014BE 6432                   MOV.L       @R3,R4
      bt_tblade.  1127                    /* draw the left flame */
      bt_tblade.  1128                    mesh3d_SetAmbientEffects( ( (xmath_Ran
                         +domFloat() * 0.6f) + 0.35f ) );
    000014C0 D22A                   MOV.L       L2594+72,R2; _xmath_RandomFloat
    000014C2 420B                   JSR         @R2
    000014C4 0009                   NOP
    000014C6 C72A                   MOVA        L2594+76,R0
    000014C8 F30C                   FMOV.S      FR0,FR3
    000014CA F008                   FMOV.S      @R0,FR0
    000014CC F4DC                   FMOV.S      FR13,FR4
    000014CE 4B0B                   JSR         @R11
    000014D0 F43E                   FMAC        FR0,FR3,FR4
      bt_tblade.  1129                    xfm_Mult( &xfm, &_xfmLFlame, &PosterXf
                         +m ); 
    000014D2 9628                   MOV.W       L2594+2,R6 ; H'00A0
    000014D4 64F3                   MOV         R15,R4
    000014D6 D527                   MOV.L       L2594+80,R5; L1877
    000014D8 36FC                   ADD         R15,R6
    000014DA 490B                   JSR         @R9
    000014DC 7434                   ADD         #52,R4
      bt_tblade.  1130                    xfm_Push( &xfm );
    000014DE 64F3                   MOV         R15,R4
    000014E0 4D0B                   JSR         @R13
    000014E2 7434                   ADD         #52,R4
      bt_tblade.  1131  E                 mesh3d_Draw( _pBFlame, 0xf, 1 );
    000014E4 E50F                   MOV         #15,R5
    000014E6 E601                   MOV         #1,R6
    000014E8 4C0B                   JSR         @R12
    000014EA 6482                   MOV.L       @R8,R4
      bt_tblade.  1132                    xfm_Pop();
    000014EC 4A0B                   JSR         @R10
    000014EE 0009                   NOP
      bt_tblade.  1133                    /* draw the right flame */
      bt_tblade.  1134                    mesh3d_SetAmbientEffects( ( (xmath_Ran
                         +domFloat() * 0.6f) + 0.35f ) );
    000014F0 D31E                   MOV.L       L2594+72,R3; _xmath_RandomFloat
    000014F2 430B                   JSR         @R3
    000014F4 0009                   NOP
    000014F6 C71E                   MOVA        L2594+76,R0
    000014F8 F30C                   FMOV.S      FR0,FR3
    000014FA F008                   FMOV.S      @R0,FR0
    000014FC FD3E                   FMAC        FR0,FR3,FR13
    000014FE 4B0B                   JSR         @R11
    00001500 F4DC                   FMOV.S      FR13,FR4
      bt_tblade.  1135                    xfm_Mult( &xfm, &_xfmRFlame, &PosterXf
                         +m ); 
    00001502 9610                   MOV.W       L2594+2,R6 ; H'00A0
    00001504 64F3                   MOV         R15,R4
    00001506 D51C                   MOV.L       L2594+84,R5; L1878
    00001508 36FC                   ADD         R15,R6
    0000150A 490B                   JSR         @R9
    0000150C 7434                   ADD         #52,R4
      bt_tblade.  1136                    xfm_Push( &xfm );
    0000150E 64F3                   MOV         R15,R4
    00001510 4D0B                   JSR         @R13
    00001512 7434                   ADD         #52,R4
      bt_tblade.  1137  E                 mesh3d_Draw( _pBFlame, 0xf, 1 );
    00001514 E50F                   MOV         #15,R5
    00001516 E601                   MOV         #1,R6
    00001518 4C0B                   JSR         @R12
    0000151A 6482                   MOV.L       @R8,R4
      bt_tblade.  1138                    xfm_Pop();
    0000151C 4A0B                   JSR         @R10
    0000151E 0009                   NOP
    00001520 A135                   BRA         L2481
    00001522 0009                   NOP
    00001524              L2594:                            
    00001524 FEF4                   .DATA.W     H'FEF4
    00001526 00A0                   .DATA.W     H'00A0
    00001528 <00000000>             .DATA.L     _orient_BuildXfm
    0000152C <00000000>             .DATA.L     _xfm_Push
    00001530 <00000000>             .DATA.L     _xfm_PosterAboutZ
    00001534 <00000000>             .DATA.L     _mesh3d_GetAmbientLightState
    00001538 <00000000>             .DATA.L     _mesh3d_StartLightFrame
    0000153C <00000000>             .DATA.L     _mesh3d_ClearLightFrame
    00001540 <00000000>             .DATA.L     _mesh3d_SetAmbientEffects
    00001544 3F400000               .DATA.L     H'3F400000
    00001548 <00000000>             .DATA.L     _xfm_Mult
    0000154C <00000000>             .DATA.L     _xfm_Pop
    00001550 <00000000>             .DATA.L     _mesh3d_Draw
    00001554 <00000000>             .DATA.L     L1816
    00001558 <00000000>             .DATA.L     L1827
    0000155C 3EB33333               .DATA.L     H'3EB33333
    00001560 <00000000>             .DATA.L     _mesh3d_SetAmbientLight
    00001564 <00000000>             .DATA.L     L1821
    00001568 <00000000>             .DATA.L     L1822
    0000156C <00000000>             .DATA.L     _xmath_RandomFloat
    00001570 3F199999               .DATA.L     H'3F199999
    00001574 <00000000>             .DATA.L     L1877
    00001578 <00000000>             .DATA.L     L1878
    0000157C              L2479:                            
      bt_tblade.  1139            } else if( ptblade->bFDrawOrange) {     
    0000157C E035                   MOV         #53,R0
    0000157E 02EC                   MOV.B       @(R0,R14),R2
    00001580 2228                   TST         R2,R2
    00001582 8B01                   BF          L2596
    00001584 A103                   BRA         L2481
    00001586 0009                   NOP
    00001588              L2596:                            
    00001588 E038                   MOV         #56,R0
    0000158A D43B                   MOV.L       L2597+4,R4 ; L1826
    0000158C 03ED                   MOV.W       @(R0,R14),R3
    0000158E E207                   MOV         #7,R2
    00001590 633D                   EXTU.W      R3,R3
    00001592 3323                   CMP/GE      R2,R3
    00001594 8D0A                   BT/S        L2483
    00001596 6543                   MOV         R4,R5
      bt_tblade.  1140                    /* draw the orange flame with end caps
                         + */
      bt_tblade.  1141  E                 if( ptblade->nFCell < 7 ) {
      bt_tblade.  1142                            _pOFlameBurst->pMtl->pTexDef =
                         + _paFlameCell[ptblade->nFCell]; 
    00001598 D338                   MOV.L       L2597+8,R3 ; L1819
    0000159A 00ED                   MOV.W       @(R0,R14),R0
    0000159C 6132                   MOV.L       @R3,R1
    0000159E 600D                   EXTU.W      R0,R0
    000015A0 4008                   SHLL2       R0
    000015A2 521D                   MOV.L       @(52,R1),R2
    000015A4 015E                   MOV.L       @(R0,R5),R1
    000015A6 1215                   MOV.L       R1,@(20,R2)
    000015A8 A023                   BRA         L2484
    000015AA 0009                   NOP
    000015AC              L2483:                            
      bt_tblade.  1143                    } else {
      bt_tblade.  1144                            pTop = _paOFlameTop[ ptblade->
                         +nFGeoCell ];
    000015AC E03A                   MOV         #58,R0
    000015AE 06ED                   MOV.W       @(R0,R14),R6
    000015B0 D033                   MOV.L       L2597+12,R0; L1817
    000015B2 666D                   EXTU.W      R6,R6
    000015B4 4608                   SHLL2       R6
    000015B6 036E                   MOV.L       @(R0,R6),R3
    000015B8 1F31                   MOV.L       R3,@(4,R15)
      bt_tblade.  1145                            pBottom = _paOFlameBottom[ ptb
                         +lade->nFGeoCell ];
    000015BA D032                   MOV.L       L2597+16,R0; L1818
    000015BC 036E                   MOV.L       @(R0,R6),R3
    000015BE 1F32                   MOV.L       R3,@(8,R15)
      bt_tblade.  1146                            
      bt_tblade.  1147                            _pLowGeoFlame->pMtl->pTexDef =
                         + _paFlameCell[ ptblade->nFCell ];
    000015C0 D031                   MOV.L       L2597+20,R0; L1824
    000015C2 6202                   MOV.L       @R0,R2
    000015C4 E038                   MOV         #56,R0
    000015C6 00ED                   MOV.W       @(R0,R14),R0
    000015C8 532D                   MOV.L       @(52,R2),R3
    000015CA 600D                   EXTU.W      R0,R0
    000015CC 4008                   SHLL2       R0
    000015CE 025E                   MOV.L       @(R0,R5),R2
      bt_tblade.  1148                            pTop->pMtl->pTexDef = _paFlame
                         +Cell[ ptblade->nFCell ];
    000015D0 E038                   MOV         #56,R0
    000015D2 1325                   MOV.L       R2,@(20,R3)
    000015D4 00ED                   MOV.W       @(R0,R14),R0
    000015D6 53F1                   MOV.L       @(4,R15),R3
    000015D8 600D                   EXTU.W      R0,R0
    000015DA 4008                   SHLL2       R0
    000015DC 523D                   MOV.L       @(52,R3),R2
    000015DE 034E                   MOV.L       @(R0,R4),R3
      bt_tblade.  1149                            pBottom->pMtl->pTexDef = _paFl
                         +ameCell[ ptblade->nFCell ];
    000015E0 E038                   MOV         #56,R0
    000015E2 1235                   MOV.L       R3,@(20,R2)
    000015E4 52F2                   MOV.L       @(8,R15),R2
    000015E6 00ED                   MOV.W       @(R0,R14),R0
    000015E8 532D                   MOV.L       @(52,R2),R3
    000015EA 600D                   EXTU.W      R0,R0
    000015EC 4008                   SHLL2       R0
    000015EE 024E                   MOV.L       @(R0,R4),R2
    000015F0 1325                   MOV.L       R2,@(20,R3)
    000015F2              L2484:                            
      bt_tblade.  1150                    }
      bt_tblade.  1151    
      bt_tblade.  1152  E                 if( ptblade->fFIntensity != 0.75f ) {
    000015F2 E040                   MOV         #64,R0
    000015F4 F3E6                   FMOV.S      @(R0,R14),FR3
    000015F6 F344                   FCMP/EQ     FR4,FR3
    000015F8 8904                   BT          L2485
      bt_tblade.  1153  E                         fTemp = ptblade->fFIntensity *
                         + (1.0f/0.75f);
    000015FA C724                   MOVA        L2597+24,R0
    000015FC F308                   FMOV.S      @R0,FR3
    000015FE E040                   MOV         #64,R0
    00001600 FFE6                   FMOV.S      @(R0,R14),FR15
    00001602 FF32                   FMUL        FR3,FR15
    00001604              L2485:                            
      bt_tblade.  1154                    }
      bt_tblade.  1155                    mesh3d_SetAmbientLight( 1.0f, 0.945098
                         +0392157f, 0.5450980392157f, fTemp );
    00001604 C722                   MOVA        L2597+28,R0
    00001606 D324                   MOV.L       L2597+36,
                        +                                  R3; _mesh3d_SetAmbientLi
                        +                                  ght
    00001608 F608                   FMOV.S      @R0,FR6
    0000160A C722                   MOVA        L2597+32,R0
    0000160C F508                   FMOV.S      @R0,FR5
    0000160E F7FC                   FMOV.S      FR15,FR7
    00001610 430B                   JSR         @R3
    00001612 F4EC                   FMOV.S      FR14,FR4
      bt_tblade.  1156  E                 mesh3d_Draw( _pLEndPiece, 0xf, 1 );
    00001614 D221                   MOV.L       L2597+40,R2; L1821
    00001616 E50F                   MOV         #15,R5
    00001618 E601                   MOV         #1,R6
    0000161A 4C0B                   JSR         @R12
    0000161C 6422                   MOV.L       @R2,R4
      bt_tblade.  1157  E                 mesh3d_Draw( _pREndPiece, 0xf, 1 ); 
    0000161E D320                   MOV.L       L2597+44,R3; L1822
    00001620 E50F                   MOV         #15,R5
    00001622 E601                   MOV         #1,R6
    00001624 4C0B                   JSR         @R12
    00001626 6432                   MOV.L       @R3,R4
      bt_tblade.  1158                    mesh3d_SetAmbientLight( 1.0f, 1.0f, 1.
                         +0f, 1.0f );
    00001628 D21B                   MOV.L       L2597+36,
                        +                                  R2; _mesh3d_SetAmbientLi
                        +                                  ght
    0000162A F5EC                   FMOV.S      FR14,FR5
    0000162C F7EC                   FMOV.S      FR14,FR7
    0000162E F6EC                   FMOV.S      FR14,FR6
    00001630 420B                   JSR         @R2
    00001632 F4EC                   FMOV.S      FR14,FR4
      bt_tblade.  1159                    /* draw the left flame */
      bt_tblade.  1160                    xfm_Mult( &xfm, &_xfmLFlame, &PosterXf
                         +m ); 
    00001634 961E                   MOV.W       L2597,R6   ; H'00A0
    00001636 64F3                   MOV         R15,R4
    00001638 D51A                   MOV.L       L2597+48,R5; L1877
    0000163A 36FC                   ADD         R15,R6
    0000163C 490B                   JSR         @R9
    0000163E 7434                   ADD         #52,R4
      bt_tblade.  1161                    xfm_Push( &xfm );
    00001640 64F3                   MOV         R15,R4
    00001642 4D0B                   JSR         @R13
    00001644 7434                   ADD         #52,R4
      bt_tblade.  1162  E                 if( ptblade->nFCell < 7 ) {
    00001646 E038                   MOV         #56,R0
    00001648 03ED                   MOV.W       @(R0,R14),R3
    0000164A E207                   MOV         #7,R2
    0000164C 633D                   EXTU.W      R3,R3
    0000164E 3323                   CMP/GE      R2,R3
    00001650 892C                   BT          L2486
      bt_tblade.  1163                            mesh3d_SetAmbientEffects( fTem
                         +p );
    00001652 4B0B                   JSR         @R11
    00001654 F4FC                   FMOV.S      FR15,FR4
      bt_tblade.  1164  E                         mesh3d_Draw( _pGlowCard, 0xf, 
                         +1 );
    00001656 D214                   MOV.L       L2597+52,R2; L1823
    00001658 E50F                   MOV         #15,R5
    0000165A E601                   MOV         #1,R6
    0000165C 4C0B                   JSR         @R12
    0000165E 6422                   MOV.L       @R2,R4
      bt_tblade.  1165                            mesh3d_SetAmbientEffects( pPar
                         +ticle->fOpacity );
    00001660 E024                   MOV         #36,R0
    00001662 4B0B                   JSR         @R11
    00001664 F486                   FMOV.S      @(R0,R8),FR4
      bt_tblade.  1166  E                         mesh3d_Draw( _pOFlameBurst, 0x
                         +f, 1 );
    00001666 D305                   MOV.L       L2597+8,R3 ; L1819
    00001668 E50F                   MOV         #15,R5
    0000166A E601                   MOV         #1,R6
    0000166C 4C0B                   JSR         @R12
    0000166E 6432                   MOV.L       @R3,R4
    00001670 A047                   BRA         L2487
    00001672 0009                   NOP
    00001674              L2597:                            
    00001674 00A0                   .DATA.W     H'00A0
    00001676 00000002               .RES.W      1
    00001678 <00000000>             .DATA.L     L1826
    0000167C <00000000>             .DATA.L     L1819
    00001680 <00000000>             .DATA.L     L1817
    00001684 <00000000>             .DATA.L     L1818
    00001688 <00000000>             .DATA.L     L1824
    0000168C 3FAAAAAA               .DATA.L     H'3FAAAAAA
    00001690 3F0B8B8B               .DATA.L     H'3F0B8B8B
    00001694 3F71F1F1               .DATA.L     H'3F71F1F1
    00001698 <00000000>             .DATA.L     _mesh3d_SetAmbientLight
    0000169C <00000000>             .DATA.L     L1821
    000016A0 <00000000>             .DATA.L     L1822
    000016A4 <00000000>             .DATA.L     L1877
    000016A8 <00000000>             .DATA.L     L1823
    000016AC              L2486:                            
      bt_tblade.  1167                    } else {
      bt_tblade.  1168                            fTemp = (xmath_RandomFloat() *
                         + 0.3f) + 0.7f;
    000016AC D143                   MOV.L       L2598+4,R1 ; _xmath_RandomFloat
    000016AE 410B                   JSR         @R1
    000016B0 0009                   NOP
    000016B2 C743                   MOVA        L2598+8,R0
    000016B4 F30C                   FMOV.S      FR0,FR3
    000016B6 FF08                   FMOV.S      @R0,FR15
    000016B8 C742                   MOVA        L2598+12,R0
    000016BA F008                   FMOV.S      @R0,FR0
    000016BC FF3E                   FMAC        FR0,FR3,FR15
      bt_tblade.  1169                            mesh3d_SetAmbientEffects( fTem
                         +p );
    000016BE 4B0B                   JSR         @R11
    000016C0 F4FC                   FMOV.S      FR15,FR4
      bt_tblade.  1170  E                         mesh3d_Draw( _pGlowCard, 0xf, 
                         +1 );
    000016C2 D341                   MOV.L       L2598+16,R3; L1823
    000016C4 E50F                   MOV         #15,R5
    000016C6 E601                   MOV         #1,R6
    000016C8 4C0B                   JSR         @R12
    000016CA 6432                   MOV.L       @R3,R4
      bt_tblade.  1171                            mesh3d_SetAmbientEffects( pPar
                         +ticle->fOpacity );
    000016CC E024                   MOV         #36,R0
    000016CE 4B0B                   JSR         @R11
    000016D0 F486                   FMOV.S      @(R0,R8),FR4
      bt_tblade.  1172    
      bt_tblade.  1173                            if( pPlayer->nLod == BOATS_LOD
                         +_PLAYER ) {
    000016D2 63F2                   MOV.L       @R15,R3
    000016D4 E058                   MOV         #88,R0
    000016D6 023D                   MOV.W       @(R0,R3),R2
    000016D8 2228                   TST         R2,R2
    000016DA 8B0C                   BF          L2488
      bt_tblade.  1174  E                                 mesh3d_Draw( pBottom, 
                         +0xf, 1 );
    000016DC E50F                   MOV         #15,R5
    000016DE E601                   MOV         #1,R6
    000016E0 4C0B                   JSR         @R12
    000016E2 54F2                   MOV.L       @(8,R15),R4
      bt_tblade.  1175  E                                 mesh3d_Draw( _pFlameMi
                         +ddle, 0xf, 1 );
    000016E4 D339                   MOV.L       L2598+20,R3; L1820
    000016E6 E50F                   MOV         #15,R5
    000016E8 E601                   MOV         #1,R6
    000016EA 4C0B                   JSR         @R12
    000016EC 6432                   MOV.L       @R3,R4
      bt_tblade.  1176  E                                 mesh3d_Draw( pTop, 0xf
                         +, 1 );
    000016EE E50F                   MOV         #15,R5
    000016F0 E601                   MOV         #1,R6
    000016F2 A004                   BRA         L2554
    000016F4 54F1                   MOV.L       @(4,R15),R4
    000016F6              L2488:                            
      bt_tblade.  1177                            } else {
      bt_tblade.  1178  E                                 mesh3d_Draw( _pLowGeoF
                         +lame, 0xf, 1 );
    000016F6 D236                   MOV.L       L2598+24,R2; L1824
    000016F8 E601                   MOV         #1,R6
    000016FA E50F                   MOV         #15,R5
    000016FC 6422                   MOV.L       @R2,R4
    000016FE              L2554:                            
    000016FE 4C0B                   JSR         @R12
    00001700 0009                   NOP
    00001702              L2487:                            
      bt_tblade.  1179                            }
      bt_tblade.  1180                    }
      bt_tblade.  1181                    xfm_Pop();
    00001702 4A0B                   JSR         @R10
    00001704 0009                   NOP
      bt_tblade.  1182                    /* draw the right flame */
      bt_tblade.  1183                    xfm_Mult( &xfm, &_xfmRFlame, &PosterXf
                         +m ); 
    00001706 9657                   MOV.W       L2598,R6   ; H'00A0
    00001708 64F3                   MOV         R15,R4
    0000170A D532                   MOV.L       L2598+28,R5; L1878
    0000170C 36FC                   ADD         R15,R6
    0000170E 490B                   JSR         @R9
    00001710 7434                   ADD         #52,R4
      bt_tblade.  1184                    xfm_Push( &xfm );
    00001712 64F3                   MOV         R15,R4
    00001714 4D0B                   JSR         @R13
    00001716 7434                   ADD         #52,R4
      bt_tblade.  1185  E                 if( ptblade->nFCell < 7 ) {
    00001718 E038                   MOV         #56,R0
    0000171A 03ED                   MOV.W       @(R0,R14),R3
    0000171C E207                   MOV         #7,R2
    0000171E 633D                   EXTU.W      R3,R3
    00001720 3323                   CMP/GE      R2,R3
    00001722 8910                   BT          L2490
      bt_tblade.  1186                            mesh3d_SetAmbientEffects( fTem
                         +p );
    00001724 4B0B                   JSR         @R11
    00001726 F4FC                   FMOV.S      FR15,FR4
      bt_tblade.  1187  E                         mesh3d_Draw( _pGlowCard, 0xf, 
                         +1 );
    00001728 D227                   MOV.L       L2598+16,R2; L1823
    0000172A E50F                   MOV         #15,R5
    0000172C E601                   MOV         #1,R6
    0000172E 4C0B                   JSR         @R12
    00001730 6422                   MOV.L       @R2,R4
      bt_tblade.  1188                            mesh3d_SetAmbientEffects( pPar
                         +ticle->fOpacity );
    00001732 E024                   MOV         #36,R0
    00001734 4B0B                   JSR         @R11
    00001736 F486                   FMOV.S      @(R0,R8),FR4
      bt_tblade.  1189  E                         mesh3d_Draw( _pOFlameBurst, 0x
                         +f, 1 );
    00001738 D327                   MOV.L       L2598+32,R3; L1819
    0000173A E50F                   MOV         #15,R5
    0000173C E601                   MOV         #1,R6
    0000173E 4C0B                   JSR         @R12
    00001740 6432                   MOV.L       @R3,R4
    00001742 A022                   BRA         L2491
    00001744 0009                   NOP
    00001746              L2490:                            
      bt_tblade.  1190                    } else {
      bt_tblade.  1191                            mesh3d_SetAmbientEffects( fTem
                         +p );
    00001746 4B0B                   JSR         @R11
    00001748 F4FC                   FMOV.S      FR15,FR4
      bt_tblade.  1192  E                         mesh3d_Draw( _pGlowCard, 0xf, 
                         +1 );
    0000174A D31F                   MOV.L       L2598+16,R3; L1823
    0000174C E50F                   MOV         #15,R5
    0000174E E601                   MOV         #1,R6
    00001750 4C0B                   JSR         @R12
    00001752 6432                   MOV.L       @R3,R4
      bt_tblade.  1193                            mesh3d_SetAmbientEffects( pPar
                         +ticle->fOpacity );
    00001754 E024                   MOV         #36,R0
    00001756 4B0B                   JSR         @R11
    00001758 F486                   FMOV.S      @(R0,R8),FR4
      bt_tblade.  1194                            
      bt_tblade.  1195                            if( pPlayer->nLod == BOATS_LOD
                         +_PLAYER ) {
    0000175A 63F2                   MOV.L       @R15,R3
    0000175C E058                   MOV         #88,R0
    0000175E 023D                   MOV.W       @(R0,R3),R2
    00001760 2228                   TST         R2,R2
    00001762 8B0C                   BF          L2492
      bt_tblade.  1196  E                                 mesh3d_Draw( pBottom, 
                         +0xf, 1 );
    00001764 E50F                   MOV         #15,R5
    00001766 E601                   MOV         #1,R6
    00001768 4C0B                   JSR         @R12
    0000176A 54F2                   MOV.L       @(8,R15),R4
      bt_tblade.  1197  E                                 mesh3d_Draw( _pFlameMi
                         +ddle, 0xf, 1 );
    0000176C D317                   MOV.L       L2598+20,R3; L1820
    0000176E E50F                   MOV         #15,R5
    00001770 E601                   MOV         #1,R6
    00001772 4C0B                   JSR         @R12
    00001774 6432                   MOV.L       @R3,R4
      bt_tblade.  1198  E                                 mesh3d_Draw( pTop, 0xf
                         +, 1 );
    00001776 E50F                   MOV         #15,R5
    00001778 E601                   MOV         #1,R6
    0000177A A004                   BRA         L2555
    0000177C 54F1                   MOV.L       @(4,R15),R4
    0000177E              L2492:                            
      bt_tblade.  1199                            } else {
      bt_tblade.  1200  E                                 mesh3d_Draw( _pLowGeoF
                         +lame, 0xf, 1 );
    0000177E D214                   MOV.L       L2598+24,R2; L1824
    00001780 E601                   MOV         #1,R6
    00001782 E50F                   MOV         #15,R5
    00001784 6422                   MOV.L       @R2,R4
    00001786              L2555:                            
    00001786 4C0B                   JSR         @R12
    00001788 0009                   NOP
    0000178A              L2491:                            
      bt_tblade.  1201                            }
      bt_tblade.  1202                    }
      bt_tblade.  1203                    xfm_Pop( );
    0000178A 4A0B                   JSR         @R10
    0000178C 0009                   NOP
    0000178E              L2481:                            
      bt_tblade.  1204            }
      bt_tblade.  1205            /* draw the engine flame if needed */
      bt_tblade.  1206            if( ptblade->bEngDrawFlames ) {
    0000178E E034                   MOV         #52,R0
    00001790 03EC                   MOV.B       @(R0,R14),R3
    00001792 2338                   TST         R3,R3
    00001794 8B01                   BF          L2599
    00001796 A205                   BRA         L2494
    00001798 0009                   NOP
    0000179A              L2599:                            
      bt_tblade.  1207                    xfm_PosterAboutY( &PosterXfm );
    0000179A D310                   MOV.L       L2598+36,R3; _xfm_PosterAboutY
    0000179C 940C                   MOV.W       L2598,R4   ; H'00A0
    0000179E 430B                   JSR         @R3
    000017A0 34FC                   ADD         R15,R4
      bt_tblade.  1208                    for( i = 0; i < 4; i++ ) {
    000017A2 C710                   MOVA        L2598+44,R0
    000017A4 D80E                   MOV.L       L2598+40,R8; L1879
    000017A6 FF08                   FMOV.S      @R0,FR15
    000017A8 EB00                   MOV         #0,R11
    000017AA              L2496:                            
      bt_tblade.  1209  E                         bScale = ( i == (Gameloop_nFra
                         +meCounter & 0x3) ) ? 1 : 0;
    000017AA D20F                   MOV.L       L2598+48,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    000017AC 6022                   MOV.L       @R2,R0
    000017AE C903                   AND         #3,R0
    000017B0 3B00                   CMP/EQ      R0,R11
    000017B2 8B1B                   BF          L2497
    000017B4 A01B                   BRA         L2498
    000017B6 E301                   MOV         #1,R3
    000017B8              L2598:                            
    000017B8 00A0                   .DATA.W     H'00A0
    000017BA 00000002               .RES.W      1
    000017BC <00000000>             .DATA.L     _xmath_RandomFloat
    000017C0 3F333333               .DATA.L     H'3F333333
    000017C4 3E999999               .DATA.L     H'3E999999
    000017C8 <00000000>             .DATA.L     L1823
    000017CC <00000000>             .DATA.L     L1820
    000017D0 <00000000>             .DATA.L     L1824
    000017D4 <00000000>             .DATA.L     L1878
    000017D8 <00000000>             .DATA.L     L1819
    000017DC <00000000>             .DATA.L     _xfm_PosterAboutY
    000017E0 <00000000>             .DATA.L     L1879
    000017E4 3FA00000               .DATA.L     H'3FA00000
    000017E8 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000017EC              L2497:                            
    000017EC E300                   MOV         #0,R3
    000017EE              L2498:                            
      bt_tblade.  1210                            
      bt_tblade.  1211                            /* draw the left side */
      bt_tblade.  1212                            xfm_Mult( &xfm, &_xfmEngFlame[
                         +i], &PosterXfm );
    000017EE E56C                   MOV         #108,R5
    000017F0 64F3                   MOV         R15,R4
    000017F2 2B5F                   MULS        R5,R11
    000017F4 2F32                   MOV.L       R3,@R15
    000017F6 9669                   MOV.W       L2600,R6   ; H'00A0
    000017F8 051A                   STS         MACL,R5
    000017FA 36FC                   ADD         R15,R6
    000017FC 655F                   EXTS.W      R5,R5
    000017FE 358C                   ADD         R8,R5
    00001800 490B                   JSR         @R9
    00001802 7434                   ADD         #52,R4
      bt_tblade.  1213                            xfm_Push( &xfm );
    00001804 64F3                   MOV         R15,R4
    00001806 4D0B                   JSR         @R13
    00001808 7434                   ADD         #52,R4
      bt_tblade.  1214                            if( bScale ) {
    0000180A 63F2                   MOV.L       @R15,R3
    0000180C 2338                   TST         R3,R3
    0000180E 8907                   BT          L2499
      bt_tblade.  1215                                    xfm_BuildScale1( &xfm,
                         + 1.25f );
    00001810 D32F                   MOV.L       L2600+4,R3 ; _xfm_BuildScale1
    00001812 64F3                   MOV         R15,R4
    00001814 F4FC                   FMOV.S      FR15,FR4
    00001816 430B                   JSR         @R3
    00001818 7434                   ADD         #52,R4
      bt_tblade.  1216                                    xfm_Push( &xfm );
    0000181A 64F3                   MOV         R15,R4
    0000181C 4D0B                   JSR         @R13
    0000181E 7434                   ADD         #52,R4
    00001820              L2499:                            
      bt_tblade.  1217                            }
      bt_tblade.  1218                            ptblade->pEngFlame->pMtl->pTex
                         +Def = _pEngFlameCell[ ptblade->nEngFlameFrameCount[i] 
                         +];
    00001820 61E3                   MOV         R14,R1
    00001822 52EC                   MOV.L       @(48,R14),R2
    00001824 711C                   ADD         #28,R1
    00001826 D02B                   MOV.L       L2600+8,R0 ; L1828
    00001828 532D                   MOV.L       @(52,R2),R3
    0000182A 31BC                   ADD         R11,R1
    0000182C 6210                   MOV.B       @R1,R2
      bt_tblade.  1219  E                         mesh3d_Draw( ptblade->pEngFlam
                         +e, 0xf, 1 );
    0000182E E50F                   MOV         #15,R5
    00001830 E601                   MOV         #1,R6
    00001832 622C                   EXTU.B      R2,R2
    00001834 4208                   SHLL2       R2
    00001836 012E                   MOV.L       @(R0,R2),R1
    00001838 1315                   MOV.L       R1,@(20,R3)
    0000183A 4C0B                   JSR         @R12
    0000183C 54EC                   MOV.L       @(48,R14),R4
      bt_tblade.  1220                            if( bScale ) {
    0000183E 63F2                   MOV.L       @R15,R3
    00001840 2338                   TST         R3,R3
    00001842 8904                   BT          L2500
      bt_tblade.  1221                                    xfm_PopN( 2 );
    00001844 D324                   MOV.L       L2600+12,R3; _xfm_PopN
    00001846 430B                   JSR         @R3
    00001848 E402                   MOV         #2,R4
    0000184A A002                   BRA         L2501
    0000184C 0009                   NOP
    0000184E              L2500:                            
      bt_tblade.  1222                            } else {
      bt_tblade.  1223                                    xfm_Pop();
    0000184E 4A0B                   JSR         @R10
    00001850 0009                   NOP
    00001852              L2501:                            
      bt_tblade.  1224                            }
      bt_tblade.  1225                            /* draw the right side */
      bt_tblade.  1226                            nTemp = i + 4;
    00001852 63B3                   MOV         R11,R3
      bt_tblade.  1227                            xfm_Mult( &xfm, &_xfmEngFlame[
                         +nTemp], &PosterXfm );
    00001854 E56C                   MOV         #108,R5
    00001856 7304                   ADD         #4,R3
    00001858 64F3                   MOV         R15,R4
    0000185A 235F                   MULS        R5,R3
    0000185C 1F31                   MOV.L       R3,@(4,R15)
    0000185E 9635                   MOV.W       L2600,R6   ; H'00A0
    00001860 051A                   STS         MACL,R5
    00001862 36FC                   ADD         R15,R6
    00001864 655F                   EXTS.W      R5,R5
    00001866 358C                   ADD         R8,R5
    00001868 490B                   JSR         @R9
    0000186A 7434                   ADD         #52,R4
      bt_tblade.  1228                            xfm_Push( &xfm );
    0000186C 64F3                   MOV         R15,R4
    0000186E 4D0B                   JSR         @R13
    00001870 7434                   ADD         #52,R4
      bt_tblade.  1229                            if( bScale ) {
    00001872 63F2                   MOV.L       @R15,R3
    00001874 2338                   TST         R3,R3
    00001876 8907                   BT          L2502
      bt_tblade.  1230                                    xfm_BuildScale1( &xfm,
                         + 1.25f );
    00001878 D315                   MOV.L       L2600+4,R3 ; _xfm_BuildScale1
    0000187A 64F3                   MOV         R15,R4
    0000187C F4FC                   FMOV.S      FR15,FR4
    0000187E 430B                   JSR         @R3
    00001880 7434                   ADD         #52,R4
      bt_tblade.  1231                                    xfm_Push( &xfm );
    00001882 64F3                   MOV         R15,R4
    00001884 4D0B                   JSR         @R13
    00001886 7434                   ADD         #52,R4
    00001888              L2502:                            
      bt_tblade.  1232                            }
      bt_tblade.  1233                            ptblade->pEngFlame->pMtl->pTex
                         +Def = _pEngFlameCell[ ptblade->nEngFlameFrameCount[nTe
                         +mp] ];
    00001888 52EC                   MOV.L       @(48,R14),R2
    0000188A 61E3                   MOV         R14,R1
    0000188C 711C                   ADD         #28,R1
    0000188E D011                   MOV.L       L2600+8,R0 ; L1828
    00001890 532D                   MOV.L       @(52,R2),R3
      bt_tblade.  1234  E                         mesh3d_Draw( ptblade->pEngFlam
                         +e, 0xf, 1 );
    00001892 E50F                   MOV         #15,R5
    00001894 52F1                   MOV.L       @(4,R15),R2
    00001896 E601                   MOV         #1,R6
    00001898 312C                   ADD         R2,R1
    0000189A 6110                   MOV.B       @R1,R1
    0000189C 611C                   EXTU.B      R1,R1
    0000189E 4108                   SHLL2       R1
    000018A0 001E                   MOV.L       @(R0,R1),R0
    000018A2 1305                   MOV.L       R0,@(20,R3)
    000018A4 4C0B                   JSR         @R12
    000018A6 54EC                   MOV.L       @(48,R14),R4
      bt_tblade.  1235                            if( bScale ) {
    000018A8 63F2                   MOV.L       @R15,R3
    000018AA 2338                   TST         R3,R3
    000018AC 8904                   BT          L2503
      bt_tblade.  1236                                    xfm_PopN( 2 );
    000018AE D30A                   MOV.L       L2600+12,R3; _xfm_PopN
    000018B0 430B                   JSR         @R3
    000018B2 E402                   MOV         #2,R4
    000018B4 A002                   BRA         L2504
    000018B6 0009                   NOP
    000018B8              L2503:                            
      bt_tblade.  1237                            } else {
      bt_tblade.  1238                                    xfm_Pop();
    000018B8 4A0B                   JSR         @R10
    000018BA 0009                   NOP
    000018BC              L2504:                            
    000018BC D207                   MOV.L       L2600+16,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    000018BE 7B01                   ADD         #1,R11
    000018C0 6022                   MOV.L       @R2,R0
    000018C2 C903                   AND         #3,R0
    000018C4 3B00                   CMP/EQ      R0,R11
    000018C6 8B0B                   BF          L2505
    000018C8 A00B                   BRA         L2506
    000018CA E301                   MOV         #1,R3
    000018CC              L2600:                            
    000018CC 00A0                   .DATA.W     H'00A0
    000018CE 00000002               .RES.W      1
    000018D0 <00000000>             .DATA.L     _xfm_BuildScale1
    000018D4 <00000000>             .DATA.L     L1828
    000018D8 <00000000>             .DATA.L     _xfm_PopN
    000018DC <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000018E0              L2505:                            
    000018E0 E300                   MOV         #0,R3
    000018E2              L2506:                            
    000018E2 E56C                   MOV         #108,R5
    000018E4 64F3                   MOV         R15,R4
    000018E6 2B5F                   MULS        R5,R11
    000018E8 2F32                   MOV.L       R3,@R15
    000018EA 9669                   MOV.W       L2601,R6   ; H'00A0
    000018EC 051A                   STS         MACL,R5
    000018EE 36FC                   ADD         R15,R6
    000018F0 655F                   EXTS.W      R5,R5
    000018F2 358C                   ADD         R8,R5
    000018F4 490B                   JSR         @R9
    000018F6 7434                   ADD         #52,R4
    000018F8 64F3                   MOV         R15,R4
    000018FA 4D0B                   JSR         @R13
    000018FC 7434                   ADD         #52,R4
    000018FE 63F2                   MOV.L       @R15,R3
    00001900 2338                   TST         R3,R3
    00001902 8907                   BT          L2507
    00001904 D32F                   MOV.L       L2601+4,R3 ; _xfm_BuildScale1
    00001906 64F3                   MOV         R15,R4
    00001908 F4FC                   FMOV.S      FR15,FR4
    0000190A 430B                   JSR         @R3
    0000190C 7434                   ADD         #52,R4
    0000190E 64F3                   MOV         R15,R4
    00001910 4D0B                   JSR         @R13
    00001912 7434                   ADD         #52,R4
    00001914              L2507:                            
    00001914 61E3                   MOV         R14,R1
    00001916 52EC                   MOV.L       @(48,R14),R2
    00001918 711C                   ADD         #28,R1
    0000191A D02B                   MOV.L       L2601+8,R0 ; L1828
    0000191C 532D                   MOV.L       @(52,R2),R3
    0000191E 31BC                   ADD         R11,R1
    00001920 6210                   MOV.B       @R1,R2
    00001922 E50F                   MOV         #15,R5
    00001924 E601                   MOV         #1,R6
    00001926 622C                   EXTU.B      R2,R2
    00001928 4208                   SHLL2       R2
    0000192A 012E                   MOV.L       @(R0,R2),R1
    0000192C 1315                   MOV.L       R1,@(20,R3)
    0000192E 4C0B                   JSR         @R12
    00001930 54EC                   MOV.L       @(48,R14),R4
    00001932 63F2                   MOV.L       @R15,R3
    00001934 2338                   TST         R3,R3
    00001936 8904                   BT          L2508
    00001938 D324                   MOV.L       L2601+12,R3; _xfm_PopN
    0000193A 430B                   JSR         @R3
    0000193C E402                   MOV         #2,R4
    0000193E A002                   BRA         L2509
    00001940 0009                   NOP
    00001942              L2508:                            
    00001942 4A0B                   JSR         @R10
    00001944 0009                   NOP
    00001946              L2509:                            
    00001946 63B3                   MOV         R11,R3
    00001948 E56C                   MOV         #108,R5
    0000194A 7304                   ADD         #4,R3
    0000194C 64F3                   MOV         R15,R4
    0000194E 235F                   MULS        R5,R3
    00001950 1F31                   MOV.L       R3,@(4,R15)
    00001952 9635                   MOV.W       L2601,R6   ; H'00A0
    00001954 051A                   STS         MACL,R5
    00001956 36FC                   ADD         R15,R6
    00001958 655F                   EXTS.W      R5,R5
    0000195A 358C                   ADD         R8,R5
    0000195C 490B                   JSR         @R9
    0000195E 7434                   ADD         #52,R4
    00001960 64F3                   MOV         R15,R4
    00001962 4D0B                   JSR         @R13
    00001964 7434                   ADD         #52,R4
    00001966 63F2                   MOV.L       @R15,R3
    00001968 2338                   TST         R3,R3
    0000196A 8907                   BT          L2510
    0000196C D315                   MOV.L       L2601+4,R3 ; _xfm_BuildScale1
    0000196E 64F3                   MOV         R15,R4
    00001970 F4FC                   FMOV.S      FR15,FR4
    00001972 430B                   JSR         @R3
    00001974 7434                   ADD         #52,R4
    00001976 64F3                   MOV         R15,R4
    00001978 4D0B                   JSR         @R13
    0000197A 7434                   ADD         #52,R4
    0000197C              L2510:                            
    0000197C 52EC                   MOV.L       @(48,R14),R2
    0000197E 61E3                   MOV         R14,R1
    00001980 711C                   ADD         #28,R1
    00001982 D011                   MOV.L       L2601+8,R0 ; L1828
    00001984 532D                   MOV.L       @(52,R2),R3
    00001986 E50F                   MOV         #15,R5
    00001988 52F1                   MOV.L       @(4,R15),R2
    0000198A E601                   MOV         #1,R6
    0000198C 312C                   ADD         R2,R1
    0000198E 6110                   MOV.B       @R1,R1
    00001990 611C                   EXTU.B      R1,R1
    00001992 4108                   SHLL2       R1
    00001994 001E                   MOV.L       @(R0,R1),R0
    00001996 1305                   MOV.L       R0,@(20,R3)
    00001998 4C0B                   JSR         @R12
    0000199A 54EC                   MOV.L       @(48,R14),R4
    0000199C 63F2                   MOV.L       @R15,R3
    0000199E 2338                   TST         R3,R3
    000019A0 8904                   BT          L2511
    000019A2 D30A                   MOV.L       L2601+12,R3; _xfm_PopN
    000019A4 430B                   JSR         @R3
    000019A6 E402                   MOV         #2,R4
    000019A8 A002                   BRA         L2512
    000019AA 0009                   NOP
    000019AC              L2511:                            
    000019AC 4A0B                   JSR         @R10
    000019AE 0009                   NOP
    000019B0              L2512:                            
    000019B0 D207                   MOV.L       L2601+16,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    000019B2 7B01                   ADD         #1,R11
    000019B4 6022                   MOV.L       @R2,R0
    000019B6 C903                   AND         #3,R0
    000019B8 3B00                   CMP/EQ      R0,R11
    000019BA 8B0B                   BF          L2513
    000019BC A00B                   BRA         L2514
    000019BE E301                   MOV         #1,R3
    000019C0              L2601:                            
    000019C0 00A0                   .DATA.W     H'00A0
    000019C2 00000002               .RES.W      1
    000019C4 <00000000>             .DATA.L     _xfm_BuildScale1
    000019C8 <00000000>             .DATA.L     L1828
    000019CC <00000000>             .DATA.L     _xfm_PopN
    000019D0 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    000019D4              L2513:                            
    000019D4 E300                   MOV         #0,R3
    000019D6              L2514:                            
    000019D6 E56C                   MOV         #108,R5
    000019D8 64F3                   MOV         R15,R4
    000019DA 2B5F                   MULS        R5,R11
    000019DC 2F32                   MOV.L       R3,@R15
    000019DE 9669                   MOV.W       L2602,R6   ; H'00A0
    000019E0 051A                   STS         MACL,R5
    000019E2 36FC                   ADD         R15,R6
    000019E4 655F                   EXTS.W      R5,R5
    000019E6 358C                   ADD         R8,R5
    000019E8 490B                   JSR         @R9
    000019EA 7434                   ADD         #52,R4
    000019EC 64F3                   MOV         R15,R4
    000019EE 4D0B                   JSR         @R13
    000019F0 7434                   ADD         #52,R4
    000019F2 63F2                   MOV.L       @R15,R3
    000019F4 2338                   TST         R3,R3
    000019F6 8907                   BT          L2515
    000019F8 D32F                   MOV.L       L2602+4,R3 ; _xfm_BuildScale1
    000019FA 64F3                   MOV         R15,R4
    000019FC F4FC                   FMOV.S      FR15,FR4
    000019FE 430B                   JSR         @R3
    00001A00 7434                   ADD         #52,R4
    00001A02 64F3                   MOV         R15,R4
    00001A04 4D0B                   JSR         @R13
    00001A06 7434                   ADD         #52,R4
    00001A08              L2515:                            
    00001A08 61E3                   MOV         R14,R1
    00001A0A 52EC                   MOV.L       @(48,R14),R2
    00001A0C 711C                   ADD         #28,R1
    00001A0E D02B                   MOV.L       L2602+8,R0 ; L1828
    00001A10 532D                   MOV.L       @(52,R2),R3
    00001A12 31BC                   ADD         R11,R1
    00001A14 6210                   MOV.B       @R1,R2
    00001A16 E50F                   MOV         #15,R5
    00001A18 E601                   MOV         #1,R6
    00001A1A 622C                   EXTU.B      R2,R2
    00001A1C 4208                   SHLL2       R2
    00001A1E 012E                   MOV.L       @(R0,R2),R1
    00001A20 1315                   MOV.L       R1,@(20,R3)
    00001A22 4C0B                   JSR         @R12
    00001A24 54EC                   MOV.L       @(48,R14),R4
    00001A26 63F2                   MOV.L       @R15,R3
    00001A28 2338                   TST         R3,R3
    00001A2A 8904                   BT          L2516
    00001A2C D324                   MOV.L       L2602+12,R3; _xfm_PopN
    00001A2E 430B                   JSR         @R3
    00001A30 E402                   MOV         #2,R4
    00001A32 A002                   BRA         L2517
    00001A34 0009                   NOP
    00001A36              L2516:                            
    00001A36 4A0B                   JSR         @R10
    00001A38 0009                   NOP
    00001A3A              L2517:                            
    00001A3A 63B3                   MOV         R11,R3
    00001A3C E56C                   MOV         #108,R5
    00001A3E 7304                   ADD         #4,R3
    00001A40 64F3                   MOV         R15,R4
    00001A42 235F                   MULS        R5,R3
    00001A44 1F31                   MOV.L       R3,@(4,R15)
    00001A46 9635                   MOV.W       L2602,R6   ; H'00A0
    00001A48 051A                   STS         MACL,R5
    00001A4A 36FC                   ADD         R15,R6
    00001A4C 655F                   EXTS.W      R5,R5
    00001A4E 358C                   ADD         R8,R5
    00001A50 490B                   JSR         @R9
    00001A52 7434                   ADD         #52,R4
    00001A54 64F3                   MOV         R15,R4
    00001A56 4D0B                   JSR         @R13
    00001A58 7434                   ADD         #52,R4
    00001A5A 63F2                   MOV.L       @R15,R3
    00001A5C 2338                   TST         R3,R3
    00001A5E 8907                   BT          L2518
    00001A60 D315                   MOV.L       L2602+4,R3 ; _xfm_BuildScale1
    00001A62 64F3                   MOV         R15,R4
    00001A64 F4FC                   FMOV.S      FR15,FR4
    00001A66 430B                   JSR         @R3
    00001A68 7434                   ADD         #52,R4
    00001A6A 64F3                   MOV         R15,R4
    00001A6C 4D0B                   JSR         @R13
    00001A6E 7434                   ADD         #52,R4
    00001A70              L2518:                            
    00001A70 52EC                   MOV.L       @(48,R14),R2
    00001A72 61E3                   MOV         R14,R1
    00001A74 711C                   ADD         #28,R1
    00001A76 D011                   MOV.L       L2602+8,R0 ; L1828
    00001A78 532D                   MOV.L       @(52,R2),R3
    00001A7A E50F                   MOV         #15,R5
    00001A7C 52F1                   MOV.L       @(4,R15),R2
    00001A7E E601                   MOV         #1,R6
    00001A80 312C                   ADD         R2,R1
    00001A82 6110                   MOV.B       @R1,R1
    00001A84 611C                   EXTU.B      R1,R1
    00001A86 4108                   SHLL2       R1
    00001A88 001E                   MOV.L       @(R0,R1),R0
    00001A8A 1305                   MOV.L       R0,@(20,R3)
    00001A8C 4C0B                   JSR         @R12
    00001A8E 54EC                   MOV.L       @(48,R14),R4
    00001A90 63F2                   MOV.L       @R15,R3
    00001A92 2338                   TST         R3,R3
    00001A94 8904                   BT          L2519
    00001A96 D30A                   MOV.L       L2602+12,R3; _xfm_PopN
    00001A98 430B                   JSR         @R3
    00001A9A E402                   MOV         #2,R4
    00001A9C A002                   BRA         L2520
    00001A9E 0009                   NOP
    00001AA0              L2519:                            
    00001AA0 4A0B                   JSR         @R10
    00001AA2 0009                   NOP
    00001AA4              L2520:                            
    00001AA4 D207                   MOV.L       L2602+16,
                        +                                  R2; _Gameloop_nFrameCoun
                        +                                  ter
    00001AA6 7B01                   ADD         #1,R11
    00001AA8 6022                   MOV.L       @R2,R0
    00001AAA C903                   AND         #3,R0
    00001AAC 3B00                   CMP/EQ      R0,R11
    00001AAE 8B0B                   BF          L2521
    00001AB0 A00B                   BRA         L2522
    00001AB2 E301                   MOV         #1,R3
    00001AB4              L2602:                            
    00001AB4 00A0                   .DATA.W     H'00A0
    00001AB6 00000002               .RES.W      1
    00001AB8 <00000000>             .DATA.L     _xfm_BuildScale1
    00001ABC <00000000>             .DATA.L     L1828
    00001AC0 <00000000>             .DATA.L     _xfm_PopN
    00001AC4 <00000000>             .DATA.L     _Gameloop_nFrameCounter
    00001AC8              L2521:                            
    00001AC8 E300                   MOV         #0,R3
    00001ACA              L2522:                            
    00001ACA E56C                   MOV         #108,R5
    00001ACC 64F3                   MOV         R15,R4
    00001ACE 2B5F                   MULS        R5,R11
    00001AD0 2F32                   MOV.L       R3,@R15
    00001AD2 969D                   MOV.W       L2603,R6   ; H'00A0
    00001AD4 051A                   STS         MACL,R5
    00001AD6 36FC                   ADD         R15,R6
    00001AD8 655F                   EXTS.W      R5,R5
    00001ADA 358C                   ADD         R8,R5
    00001ADC 490B                   JSR         @R9
    00001ADE 7434                   ADD         #52,R4
    00001AE0 64F3                   MOV         R15,R4
    00001AE2 4D0B                   JSR         @R13
    00001AE4 7434                   ADD         #52,R4
    00001AE6 63F2                   MOV.L       @R15,R3
    00001AE8 2338                   TST         R3,R3
    00001AEA 8907                   BT          L2523
    00001AEC D34A                   MOV.L       L2603+8,R3 ; _xfm_BuildScale1
    00001AEE 64F3                   MOV         R15,R4
    00001AF0 F4FC                   FMOV.S      FR15,FR4
    00001AF2 430B                   JSR         @R3
    00001AF4 7434                   ADD         #52,R4
    00001AF6 64F3                   MOV         R15,R4
    00001AF8 4D0B                   JSR         @R13
    00001AFA 7434                   ADD         #52,R4
    00001AFC              L2523:                            
    00001AFC 61E3                   MOV         R14,R1
    00001AFE 52EC                   MOV.L       @(48,R14),R2
    00001B00 711C                   ADD         #28,R1
    00001B02 D046                   MOV.L       L2603+12,R0; L1828
    00001B04 532D                   MOV.L       @(52,R2),R3
    00001B06 31BC                   ADD         R11,R1
    00001B08 6210                   MOV.B       @R1,R2
    00001B0A E50F                   MOV         #15,R5
    00001B0C E601                   MOV         #1,R6
    00001B0E 622C                   EXTU.B      R2,R2
    00001B10 4208                   SHLL2       R2
    00001B12 012E                   MOV.L       @(R0,R2),R1
    00001B14 1315                   MOV.L       R1,@(20,R3)
    00001B16 4C0B                   JSR         @R12
    00001B18 54EC                   MOV.L       @(48,R14),R4
    00001B1A 63F2                   MOV.L       @R15,R3
    00001B1C 2338                   TST         R3,R3
    00001B1E 8904                   BT          L2524
    00001B20 D33F                   MOV.L       L2603+16,R3; _xfm_PopN
    00001B22 430B                   JSR         @R3
    00001B24 E402                   MOV         #2,R4
    00001B26 A002                   BRA         L2525
    00001B28 0009                   NOP
    00001B2A              L2524:                            
    00001B2A 4A0B                   JSR         @R10
    00001B2C 0009                   NOP
    00001B2E              L2525:                            
    00001B2E 63B3                   MOV         R11,R3
    00001B30 E56C                   MOV         #108,R5
    00001B32 7304                   ADD         #4,R3
    00001B34 64F3                   MOV         R15,R4
    00001B36 235F                   MULS        R5,R3
    00001B38 1F31                   MOV.L       R3,@(4,R15)
    00001B3A 9669                   MOV.W       L2603,R6   ; H'00A0
    00001B3C 051A                   STS         MACL,R5
    00001B3E 36FC                   ADD         R15,R6
    00001B40 655F                   EXTS.W      R5,R5
    00001B42 358C                   ADD         R8,R5
    00001B44 490B                   JSR         @R9
    00001B46 7434                   ADD         #52,R4
    00001B48 64F3                   MOV         R15,R4
    00001B4A 4D0B                   JSR         @R13
    00001B4C 7434                   ADD         #52,R4
    00001B4E 63F2                   MOV.L       @R15,R3
    00001B50 2338                   TST         R3,R3
    00001B52 8907                   BT          L2526
    00001B54 D330                   MOV.L       L2603+8,R3 ; _xfm_BuildScale1
    00001B56 64F3                   MOV         R15,R4
    00001B58 F4FC                   FMOV.S      FR15,FR4
    00001B5A 430B                   JSR         @R3
    00001B5C 7434                   ADD         #52,R4
    00001B5E 64F3                   MOV         R15,R4
    00001B60 4D0B                   JSR         @R13
    00001B62 7434                   ADD         #52,R4
    00001B64              L2526:                            
    00001B64 52EC                   MOV.L       @(48,R14),R2
    00001B66 61E3                   MOV         R14,R1
    00001B68 711C                   ADD         #28,R1
    00001B6A D02C                   MOV.L       L2603+12,R0; L1828
    00001B6C 532D                   MOV.L       @(52,R2),R3
    00001B6E E50F                   MOV         #15,R5
    00001B70 52F1                   MOV.L       @(4,R15),R2
    00001B72 E601                   MOV         #1,R6
    00001B74 312C                   ADD         R2,R1
    00001B76 6110                   MOV.B       @R1,R1
    00001B78 611C                   EXTU.B      R1,R1
    00001B7A 4108                   SHLL2       R1
    00001B7C 001E                   MOV.L       @(R0,R1),R0
    00001B7E 1305                   MOV.L       R0,@(20,R3)
    00001B80 4C0B                   JSR         @R12
    00001B82 54EC                   MOV.L       @(48,R14),R4
    00001B84 63F2                   MOV.L       @R15,R3
    00001B86 2338                   TST         R3,R3
    00001B88 8904                   BT          L2527
    00001B8A D325                   MOV.L       L2603+16,R3; _xfm_PopN
    00001B8C 430B                   JSR         @R3
    00001B8E E402                   MOV         #2,R4
    00001B90 A002                   BRA         L2528
    00001B92 0009                   NOP
    00001B94              L2527:                            
    00001B94 4A0B                   JSR         @R10
    00001B96 0009                   NOP
    00001B98              L2528:                            
    00001B98 E304                   MOV         #4,R3
    00001B9A 7B01                   ADD         #1,R11
    00001B9C 3B32                   CMP/HS      R3,R11
    00001B9E 8901                   BT          L2604
    00001BA0 AE03                   BRA         L2496
    00001BA2 0009                   NOP
    00001BA4              L2604:                            
    00001BA4              L2494:                            
      bt_tblade.  1239                            }
      bt_tblade.  1240                    }
      bt_tblade.  1241            }
      bt_tblade.  1242            xfm_Pop();
    00001BA4 4A0B                   JSR         @R10
    00001BA6 0009                   NOP
      bt_tblade.  1243            mesh3d_ReleaseLightFrame( nLightFrame );
    00001BA8 D31E                   MOV.L       L2603+20,
                        +                                  R3; _mesh3d_ReleaseLight
                        +                                  Frame
    00001BAA 430B                   JSR         @R3
    00001BAC 54F3                   MOV.L       @(12,R15),R4
      bt_tblade.  1244            mesh3d_SetAmbientLightState( &Ambient );
    00001BAE D21E                   MOV.L       L2603+24,
                        +                                  R2; _mesh3d_SetAmbientLi
                        +                                  ghtState
    00001BB0 64F3                   MOV         R15,R4
    00001BB2 420B                   JSR         @R2
    00001BB4 7410                   ADD         #16,R4
      bt_tblade.  1245    }
    00001BB6 912C                   MOV.W       L2603+2,R1 ; H'010C
    00001BB8 3F1C                   ADD         R1,R15
    00001BBA 4F26                   LDS.L       @R15+,PR
    00001BBC FDF9                   FMOV.S      @R15+,FR13
    00001BBE FEF9                   FMOV.S      @R15+,FR14
    00001BC0 FFF9                   FMOV.S      @R15+,FR15
    00001BC2 68F6                   MOV.L       @R15+,R8
    00001BC4 69F6                   MOV.L       @R15+,R9
    00001BC6 6AF6                   MOV.L       @R15+,R10
    00001BC8 6BF6                   MOV.L       @R15+,R11
    00001BCA 6CF6                   MOV.L       @R15+,R12
    00001BCC 6DF6                   MOV.L       @R15+,R13
    00001BCE 000B                   RTS
    00001BD0 6EF6                   MOV.L       @R15+,R14
      bt_tblade.  1246    
      bt_tblade.  1247    static void _ChangeStaticLightingMotifs( TBlade_t *ptb
                         +lade ) {
    00001BD2              L1895:                           ; function: _ChangeSt
                        +                                  aticLightingMotifs
                                                           ; frame size=0
    00001BD2 E035                   MOV         #53,R0
    00001BD4 D715                   MOV.L       L2603+28,
                        +                                  R7; _Light_aLightMotifTa
                        +                                  ble
    00001BD6 034C                   MOV.B       @(R0,R4),R3
    00001BD8 2338                   TST         R3,R3
    00001BDA 8D2B                   BT/S        L2529
    00001BDC 6573                   MOV         R7,R5
      bt_tblade.  1248            f32 fTemp;
      bt_tblade.  1249    
      bt_tblade.  1250            /* always set the booster flame static lightin
                         +g( only the hup1 version has it but thats ok ) */
      bt_tblade.  1251            if( ptblade->bFDrawOrange ) {
      bt_tblade.  1252                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         + = Light_aLightMotifTable[SLMOTIF_FLAME1];
      bt_tblade.  1253  E                 fTemp = ( 1.0f - 0.75f ) + ptblade->fF
                         +Intensity;
    00001BDE C714                   MOVA        L2603+32,R0
    00001BE0 9618                   MOV.W       L2603+4,R6 ; H'00CC
    00001BE2 5356                   MOV.L       @(24,R5),R3
    00001BE4 365C                   ADD         R5,R6
    00001BE6 2632                   MOV.L       R3,@R6
    00001BE8 5357                   MOV.L       @(28,R5),R3
    00001BEA 1631                   MOV.L       R3,@(4,R6)
    00001BEC 5358                   MOV.L       @(32,R5),R3
    00001BEE 1632                   MOV.L       R3,@(8,R6)
    00001BF0 F308                   FMOV.S      @R0,FR3
    00001BF2 E040                   MOV         #64,R0
    00001BF4 F446                   FMOV.S      @(R0,R4),FR4
      bt_tblade.  1254                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[0] *= fTemp;
      bt_tblade.  1255                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[1] *= fTemp;
    00001BF6 E004                   MOV         #4,R0
    00001BF8 F268                   FMOV.S      @R6,FR2
    00001BFA F430                   FADD        FR3,FR4
    00001BFC F242                   FMUL        FR4,FR2
    00001BFE F62A                   FMOV.S      FR2,@R6
    00001C00 F166                   FMOV.S      @(R0,R6),FR1
    00001C02 F142                   FMUL        FR4,FR1
    00001C04 F617                   FMOV.S      FR1,@(R0,R6)
      bt_tblade.  1256                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[2] *= fTemp;
    00001C06 E008                   MOV         #8,R0
    00001C08 F266                   FMOV.S      @(R0,R6),FR2
    00001C0A F242                   FMUL        FR4,FR2
    00001C0C A030                   BRA         L2530
    00001C0E F627                   FMOV.S      FR2,@(R0,R6)
    00001C10              L2603:                            
    00001C10 00A0                   .DATA.W     H'00A0
    00001C12 010C                   .DATA.W     H'010C
    00001C14 00CC                   .DATA.W     H'00CC
    00001C16 00000002               .RES.W      1
    00001C18 <00000000>             .DATA.L     _xfm_BuildScale1
    00001C1C <00000000>             .DATA.L     L1828
    00001C20 <00000000>             .DATA.L     _xfm_PopN
    00001C24 <00000000>             .DATA.L     _mesh3d_ReleaseLightFrame
    00001C28 <00000000>             .DATA.L     _mesh3d_SetAmbientLightState
    00001C2C <00000000>             .DATA.L     _Light_aLightMotifTable
    00001C30 3E800000               .DATA.L     H'3E800000
    00001C34              L2529:                            
      bt_tblade.  1257            } else if( ptblade->bFDrawBlue ) {
    00001C34 E036                   MOV         #54,R0
    00001C36 024C                   MOV.B       @(R0,R4),R2
    00001C38 2228                   TST         R2,R2
    00001C3A 8919                   BT          L2530
      bt_tblade.  1258  E                 fTemp = ( 1.0f - 0.35f ) + ptblade->fF
                         +Intensity;
    00001C3C C71B                   MOVA        L2605+6,R0
      bt_tblade.  1259                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         + = Light_aLightMotifTable[SLMOTIF_BLUEFLAME1];
    00001C3E 9632                   MOV.W       L2605,R6   ; H'00CC
    00001C40 F308                   FMOV.S      @R0,FR3
    00001C42 E040                   MOV         #64,R0
    00001C44 F446                   FMOV.S      @(R0,R4),FR4
      bt_tblade.  1260                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[0] *= fTemp;
      bt_tblade.  1261                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[1] *= fTemp;
    00001C46 E004                   MOV         #4,R0
    00001C48 365C                   ADD         R5,R6
    00001C4A 932D                   MOV.W       L2605+2,R3 ; H'00B4
    00001C4C F430                   FADD        FR3,FR4
    00001C4E 335C                   ADD         R5,R3
    00001C50 6232                   MOV.L       @R3,R2
    00001C52 2622                   MOV.L       R2,@R6
    00001C54 5231                   MOV.L       @(4,R3),R2
    00001C56 1621                   MOV.L       R2,@(4,R6)
    00001C58 5232                   MOV.L       @(8,R3),R2
    00001C5A 1622                   MOV.L       R2,@(8,R6)
    00001C5C F268                   FMOV.S      @R6,FR2
    00001C5E F242                   FMUL        FR4,FR2
    00001C60 F62A                   FMOV.S      FR2,@R6
    00001C62 F166                   FMOV.S      @(R0,R6),FR1
    00001C64 F142                   FMUL        FR4,FR1
    00001C66 F617                   FMOV.S      FR1,@(R0,R6)
      bt_tblade.  1262                    Light_aLightMotifTable[SLMOTIF_PROGR1]
                         +.Color.rgb[2] *= fTemp;
    00001C68 E008                   MOV         #8,R0
    00001C6A F266                   FMOV.S      @(R0,R6),FR2
    00001C6C F242                   FMUL        FR4,FR2
    00001C6E F627                   FMOV.S      FR2,@(R0,R6)
    00001C70              L2530:                            
      bt_tblade.  1263            }
      bt_tblade.  1264            /* always set the engine flame static lighting
                         + */
      bt_tblade.  1265            Light_aLightMotifTable[SLMOTIF_PROGR2] = Light
                         +_aLightMotifTable[SLMOTIF_FLAME4];
    00001C70 951B                   MOV.W       L2605+4,R5 ; H'00D8
      bt_tblade.  1266            Light_aLightMotifTable[SLMOTIF_PROGR2].Color.r
                         +gb[0] *= ptblade->fEngStaticLightIntensity;
    00001C72 E02C                   MOV         #44,R0
    00001C74 6373                   MOV         R7,R3
    00001C76 733C                   ADD         #60,R3
    00001C78 357C                   ADD         R7,R5
    00001C7A 6232                   MOV.L       @R3,R2
    00001C7C 2522                   MOV.L       R2,@R5
    00001C7E 5231                   MOV.L       @(4,R3),R2
    00001C80 1521                   MOV.L       R2,@(4,R5)
    00001C82 5232                   MOV.L       @(8,R3),R2
    00001C84 1522                   MOV.L       R2,@(8,R5)
    00001C86 F346                   FMOV.S      @(R0,R4),FR3
    00001C88 F258                   FMOV.S      @R5,FR2
    00001C8A F232                   FMUL        FR3,FR2
    00001C8C F52A                   FMOV.S      FR2,@R5
      bt_tblade.  1267            Light_aLightMotifTable[SLMOTIF_PROGR2].Color.r
                         +gb[1] *= ptblade->fEngStaticLightIntensity;
    00001C8E F346                   FMOV.S      @(R0,R4),FR3
    00001C90 E004                   MOV         #4,R0
    00001C92 F256                   FMOV.S      @(R0,R5),FR2
    00001C94 F232                   FMUL        FR3,FR2
    00001C96 F527                   FMOV.S      FR2,@(R0,R5)
      bt_tblade.  1268            Light_aLightMotifTable[SLMOTIF_PROGR2].Color.r
                         +gb[2] *= ptblade->fEngStaticLightIntensity;
    00001C98 E02C                   MOV         #44,R0
    00001C9A F346                   FMOV.S      @(R0,R4),FR3
    00001C9C E008                   MOV         #8,R0
    00001C9E F256                   FMOV.S      @(R0,R5),FR2
    00001CA0 F232                   FMUL        FR3,FR2
      bt_tblade.  1269    }
    00001CA2 000B                   RTS
    00001CA4 F527                   FMOV.S      FR2,@(R0,R5)
    00001CA6              L2605:                            
    00001CA6 00CC                   .DATA.W     H'00CC
    00001CA8 00B4                   .DATA.W     H'00B4
    00001CAA 00D8                   .DATA.W     H'00D8
    00001CAC 3F266666               .DATA.L     H'3F266666
D   00000000              L1809:                           ; static: aPlayerLoad
                        +                                  Table
    00000000 <00000000>             .DATA.L     L1804,L1810,L1805,L1811,L1806,
             <00000000> +                       L1812,L1807,L1813,L1808,L1814
             <00000000>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000000>   
    00000028 0000000000             .DATA.L     H'00000000,H'00000000
             000000       
    00000030              L1829:                           ; static: aCommonLoad
                        +                                  Table
    00000030 <00000000>             .DATA.L     L1815,L1830,L1816,L1831,L1817,
             <00000000> +                       L1832,H'00000004+L1817,L1833,
             <00000000> +                       H'00000008+L1817,L1834,
             <00000000> +                       H'0000000C+L1817,L1835,L1818,
             <00000000> +                       L1836,H'00000004+L1818,L1837,
             <00000000> +                       H'00000008+L1818,L1838,
             <00000004> +                       H'0000000C+L1818,L1839,L1819,
             <00000000> +                       L1840,L1820,L1841,L1821,L1842,
             <00000008> +                       L1822,L1843,L1823,L1844,L1824,
             <00000000> +                       L1845,L1825,L1846,
             <0000000C> +                       H'00000004+L1825,L1847,L1826,
             <00000000> +                       L1848,H'00000004+L1826,L1849,
             <00000000> +                       H'00000008+L1826,L1850,
             <00000000> +                       H'0000000C+L1826,L1851,
             <00000004> +                       H'00000010+L1826,L1852,
             <00000000> +                       H'00000014+L1826,L1853,
             <00000008> +                       H'00000018+L1826,L1854,
             <00000000> +                       H'0000001C+L1826,L1855,
             <0000000C> +                       H'00000020+L1826,L1856,
             <00000000> +                       H'00000024+L1826,L1857,
             <00000000> +                       H'00000028+L1826,L1858,
             <00000000> +                       H'0000002C+L1826,L1859,
             <00000000> +                       H'00000030+L1826,L1860,
             <00000000> +                       H'00000034+L1826,L1861,
             <00000000> +                       H'00000038+L1826,L1862,
             <00000000> +                       H'0000003C+L1826,L1863,
             <00000000> +                       H'00000040+L1826,L1864,L1827,
             <00000000> +                       L1865,H'00000004+L1827,L1866,
             <00000000> +                       H'00000008+L1827,L1867,
             <00000000> +                       H'0000000C+L1827,L1868,
             <00000000> +                       H'00000010+L1827,L1869,L1828,
             <00000000> +                       L1870,H'00000004+L1828,L1871,
             <00000000> +                       H'00000008+L1828,L1872,
             <00000000> +                       H'0000000C+L1828,L1873,
             <00000004> +                       H'00000010+L1828,L1874,
             <00000000> +                       H'00000014+L1828,L1875,
             <00000000> +                       H'00000018+L1828,L1876
             <00000000>   
             <00000004>   
             <00000000>   
             <00000008>   
             <00000000>   
             <0000000C>   
             <00000000>   
             <00000010>   
             <00000000>   
             <00000014>   
             <00000000>   
             <00000018>   
             <00000000>   
             <0000001C>   
             <00000000>   
             <00000020>   
             <00000000>   
             <00000024>   
             <00000000>   
             <00000028>   
             <00000000>   
             <0000002C>   
             <00000000>   
             <00000030>   
             <00000000>   
             <00000034>   
             <00000000>   
             <00000038>   
             <00000000>   
             <0000003C>   
             <00000000>   
             <00000040>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000004>   
             <00000000>   
             <00000008>   
             <00000000>   
             <0000000C>   
             <00000000>   
             <00000010>   
             <00000000>   
             <00000000>   
             <00000000>   
             <00000004>   
             <00000000>   
             <00000008>   
             <00000000>   
             <0000000C>   
             <00000000>   
             <00000010>   
             <00000000>   
             <00000014>   
             <00000000>   
             <00000018>   
             <00000000>   
    000001A8 0000000000             .DATA.L     H'00000000,H'00000000
             000000       
C   00000000              L1911:
    00000000 62745F7462             .SDATA      "bt_tblade.c"
             6C6164652E   
             63           
    0000000B 00                     .DATA.B     H'00
    0000000C              L1913:
    0000000C 4742425449             .SDATA      "GBBTIDAHUP0"
             4441485550   
             30           
    00000017 00                     .DATA.B     H'00
    00000018              L1917:
    00000018 4742425449             .SDATA      "GBBTIDAHUP1"
             4441485550   
             31           
    00000023 00                     .DATA.B     H'00
    00000024              L1918:
    00000024 4742425449             .SDATA      "GBBTIDAHUP2"
             4441485550   
             32           
    0000002F 00                     .DATA.B     H'00
    00000030              L1921:
    00000030 4E4F542045             .SDATA      "NOT ENOUGH MEMORY FOR ALL OF T"
             4E4F554748   
             204D454D4F   
             525920464F   
             5220414C4C   
             204F462054   
    0000004E 4944414C20             .SDATA      "IDAL BLADE!"
             424C414445   
             21           
    00000059 0A00                   .DATA.B     H'0A,H'00
    0000005B 00000001               .RES.B      1
    0000005C              L1923:
    0000005C 4742425449             .SDATA      "GBBTIDAHUH0"
             4441485548   
             30           
    00000067 00                     .DATA.B     H'00
    00000068              L1924:
    00000068 4742425449             .SDATA      "GBBTIDAHUH1"
             4441485548   
             31           
    00000073 00                     .DATA.B     H'00
    00000074              L1927:
    00000074 4742424454             .SDATA      "GBBDTIDHUH0"
             4944485548   
             30           
    0000007F 00                     .DATA.B     H'00
    00000080              L1930:
    00000080 4E4F542045             .SDATA      "NOT ENOUGH MEMORY FOR ALL OF C"
             4E4F554748   
             204D454D4F   
             525920464F   
             5220414C4C   
             204F462043   
    0000009E 5554205448             .SDATA      "UT THROAT!"
             524F415421   
    000000A8 0A00                   .DATA.B     H'0A,H'00
    000000AA 00000002               .RES.W      1
    000000AC              L1932:
    000000AC 4742425449             .SDATA      "GBBTIDAFLP0"
             4441464C50   
             30           
    000000B7 00                     .DATA.B     H'00
    000000B8              L1935:
    000000B8 4742425449             .SDATA      "GBBTIDASRP1"
             4441535250   
             31           
    000000C3 00                     .DATA.B     H'00
    000000C4              L1937:
    000000C4 4742425449             .SDATA      "GBBTIDASRP2"
             4441535250   
             32           
    000000CF 00                     .DATA.B     H'00
    000000D0              L1941:
    000000D0 546964616C             .SDATA      "Tidal Blade used %d bytes of t"
             20426C6164   
             6520757365   
             6420256420   
             6279746573   
             206F662074   
    000000EE 6578747572             .SDATA      "exture space"
             6520737061   
             6365         
    000000FA 0A00                   .DATA.B     H'0A,H'00
    000000FC              L1983:                           ; static: _aVerts2Mor
                        +                                  ph
    000000FC 0103040709             .DATA.B     H'01,H'03,H'04,H'07,H'09,H'0A,
             0A0D0F10   +                       H'0D,H'0F,H'10
    00000105 00000001               .RES.B      1
    00000106 00000002               .RES.W      1
    00000108              L1810:
    00000108 4742425449             .SDATA      "GBBTIDACWP1"
             4441435750   
             31           
    00000113 00                     .DATA.B     H'00
    00000114              L1811:
    00000114 4742425449             .SDATA      "GBBTIDACWP2"
             4441435750   
             32           
    0000011F 00                     .DATA.B     H'00
    00000120              L1812:
    00000120 4742425449             .SDATA      "GBBTIDAENP0"
             4441454E50   
             30           
    0000012B 00                     .DATA.B     H'00
    0000012C              L1813:
    0000012C 4742425449             .SDATA      "GBBTIDABOP1"
             4441424F50   
             31           
    00000137 00                     .DATA.B     H'00
    00000138              L1814:
    00000138 4742425449             .SDATA      "GBBTIDABOP2"
             4441424F50   
             32           
    00000143 00                     .DATA.B     H'00
    00000144              L1830:
    00000144 474242424F             .SDATA      "GBBBOATPRP0"
             4154505250   
             30           
    0000014F 00                     .DATA.B     H'00
    00000150              L1831:
    00000150 4742425449             .SDATA      "GBBTIDABUP1"
             4441425550   
             31           
    0000015B 00                     .DATA.B     H'00
    0000015C              L1832:
    0000015C 4742465449             .SDATA      "GBFTIDA_AH1"
             44415F4148   
             31           
    00000167 00                     .DATA.B     H'00
    00000168              L1833:
    00000168 4742465449             .SDATA      "GBFTIDA_AH2"
             44415F4148   
             32           
    00000173 00                     .DATA.B     H'00
    00000174              L1834:
    00000174 4742465449             .SDATA      "GBFTIDA_AH3"
             44415F4148   
             33           
    0000017F 00                     .DATA.B     H'00
    00000180              L1835:
    00000180 4742465449             .SDATA      "GBFTIDA_AH4"
             44415F4148   
             34           
    0000018B 00                     .DATA.B     H'00
    0000018C              L1836:
    0000018C 4742465449             .SDATA      "GBFTIDA_BH1"
             44415F4248   
             31           
    00000197 00                     .DATA.B     H'00
    00000198              L1837:
    00000198 4742465449             .SDATA      "GBFTIDA_BH2"
             44415F4248   
             32           
    000001A3 00                     .DATA.B     H'00
    000001A4              L1838:
    000001A4 4742465449             .SDATA      "GBFTIDA_BH3"
             44415F4248   
             33           
    000001AF 00                     .DATA.B     H'00
    000001B0              L1839:
    000001B0 4742465449             .SDATA      "GBFTIDA_BH4"
             44415F4248   
             34           
    000001BB 00                     .DATA.B     H'00
    000001BC              L1840:
    000001BC 4742425449             .SDATA      "GBBTIDAFLP5"
             4441464C50   
             35           
    000001C7 00                     .DATA.B     H'00
    000001C8              L1841:
    000001C8 4742465449             .SDATA      "GBFTIDA_AH0"
             44415F4148   
             30           
    000001D3 00                     .DATA.B     H'00
    000001D4              L1842:
    000001D4 4742425449             .SDATA      "GBBTIDAFLP3"
             4441464C50   
             33           
    000001DF 00                     .DATA.B     H'00
    000001E0              L1843:
    000001E0 4742425449             .SDATA      "GBBTIDAFLP4"
             4441464C50   
             34           
    000001EB 00                     .DATA.B     H'00
    000001EC              L1844:
    000001EC 4742425449             .SDATA      "GBBTIDAFLPA"
             4441464C50   
             41           
    000001F7 00                     .DATA.B     H'00
    000001F8              L1845:
    000001F8 4742465449             .SDATA      "GBFTIDA_CH1"
             44415F4348   
             31           
    00000203 00                     .DATA.B     H'00
    00000204              L1846:
    00000204 544242424F             .SDATA      "TBBBOATPR10"
             4154505231   
             30           
    0000020F 00                     .DATA.B     H'00
    00000210              L1847:
    00000210 544242424F             .SDATA      "TBBBOATPR11"
             4154505231   
             31           
    0000021B 00                     .DATA.B     H'00
    0000021C              L1848:
    0000021C 5442464558             .SDATA      "TBFEXHABO20"
             4841424F32   
             30           
    00000227 00                     .DATA.B     H'00
    00000228              L1849:
    00000228 5442464558             .SDATA      "TBFEXHABO21"
             4841424F32   
             31           
    00000233 00                     .DATA.B     H'00
    00000234              L1850:
    00000234 5442464558             .SDATA      "TBFEXHABO22"
             4841424F32   
             32           
    0000023F 00                     .DATA.B     H'00
    00000240              L1851:
    00000240 5442464558             .SDATA      "TBFEXHABO23"
             4841424F32   
             33           
    0000024B 00                     .DATA.B     H'00
    0000024C              L1852:
    0000024C 5442464558             .SDATA      "TBFEXHABO24"
             4841424F32   
             34           
    00000257 00                     .DATA.B     H'00
    00000258              L1853:
    00000258 5442464558             .SDATA      "TBFEXHABO25"
             4841424F32   
             35           
    00000263 00                     .DATA.B     H'00
    00000264              L1854:
    00000264 5442464558             .SDATA      "TBFEXHABO26"
             4841424F32   
             36           
    0000026F 00                     .DATA.B     H'00
    00000270              L1855:
    00000270 5442464649             .SDATA      "TBFFIREBO2A"
             5245424F32   
             41           
    0000027B 00                     .DATA.B     H'00
    0000027C              L1856:
    0000027C 5442464649             .SDATA      "TBFFIREBO2B"
             5245424F32   
             42           
    00000287 00                     .DATA.B     H'00
    00000288              L1857:
    00000288 5442464649             .SDATA      "TBFFIREBO2C"
             5245424F32   
             43           
    00000293 00                     .DATA.B     H'00
    00000294              L1858:
    00000294 5442464649             .SDATA      "TBFFIREBO2D"
             5245424F32   
             44           
    0000029F 00                     .DATA.B     H'00
    000002A0              L1859:
    000002A0 5442464649             .SDATA      "TBFFIREBO2E"
             5245424F32   
             45           
    000002AB 00                     .DATA.B     H'00
    000002AC              L1860:
    000002AC 5442464649             .SDATA      "TBFFIREBO2F"
             5245424F32   
             46           
    000002B7 00                     .DATA.B     H'00
    000002B8              L1861:
    000002B8 5442464649             .SDATA      "TBFFIREBO2G"
             5245424F32   
             47           
    000002C3 00                     .DATA.B     H'00
    000002C4              L1862:
    000002C4 5442464649             .SDATA      "TBFFIREBO2H"
             5245424F32   
             48           
    000002CF 00                     .DATA.B     H'00
    000002D0              L1863:
    000002D0 5442464649             .SDATA      "TBFFIREBO2I"
             5245424F32   
             49           
    000002DB 00                     .DATA.B     H'00
    000002DC              L1864:
    000002DC 5442464649             .SDATA      "TBFFIREBO2J"
             5245424F32   
             4A           
    000002E7 00                     .DATA.B     H'00
    000002E8              L1865:
    000002E8 5442424558             .SDATA      "TBBEXHABU50"
             4841425535   
             30           
    000002F3 00                     .DATA.B     H'00
    000002F4              L1866:
    000002F4 5442424558             .SDATA      "TBBEXHABU51"
             4841425535   
             31           
    000002FF 00                     .DATA.B     H'00
    00000300              L1867:
    00000300 5442424558             .SDATA      "TBBEXHABU52"
             4841425535   
             32           
    0000030B 00                     .DATA.B     H'00
    0000030C              L1868:
    0000030C 5442424558             .SDATA      "TBBEXHABU53"
             4841425535   
             33           
    00000317 00                     .DATA.B     H'00
    00000318              L1869:
    00000318 5442424558             .SDATA      "TBBEXHABU54"
             4841425535   
             34           
    00000323 00                     .DATA.B     H'00
    00000324              L1870:
    00000324 5442465449             .SDATA      "TBFTIDAFL20"
             4441464C32   
             30           
    0000032F 00                     .DATA.B     H'00
    00000330              L1871:
    00000330 5442465449             .SDATA      "TBFTIDAFL21"
             4441464C32   
             31           
    0000033B 00                     .DATA.B     H'00
    0000033C              L1872:
    0000033C 5442465449             .SDATA      "TBFTIDAFL22"
             4441464C32   
             32           
    00000347 00                     .DATA.B     H'00
    00000348              L1873:
    00000348 5442465449             .SDATA      "TBFTIDAFL23"
             4441464C32   
             33           
    00000353 00                     .DATA.B     H'00
    00000354              L1874:
    00000354 5442465449             .SDATA      "TBFTIDAFL24"
             4441464C32   
             34           
    0000035F 00                     .DATA.B     H'00
    00000360              L1875:
    00000360 5442465449             .SDATA      "TBFTIDAFL25"
             4441464C32   
             35           
    0000036B 00                     .DATA.B     H'00
    0000036C              L1876:
    0000036C 5442465449             .SDATA      "TBFTIDAFL26"
             4441464C32   
             36           
    00000377 00                     .DATA.B     H'00
B   00000000              L1804:                           ; static: _pPLCowling
    00000000 00000004               .RES.L      1
    00000004              L1805:                           ; static: _pPRCowling
    00000004 00000004               .RES.L      1
    00000008              L1806:                           ; static: _pPEngine
    00000008 00000004               .RES.L      1
    0000000C              L1807:                           ; static: _pPLBooster
    0000000C 00000004               .RES.L      1
    00000010              L1808:                           ; static: _pPRBooster
    00000010 00000004               .RES.L      1
    00000014              L1815:                           ; static: _pProp
    00000014 00000004               .RES.L      1
    00000018              L1816:                           ; static: _pBFlame
    00000018 00000004               .RES.L      1
    0000001C              L1817:                           ; static: _paOFlameTo
                        +                                  p
    0000001C 00000010               .RES.L      4
    0000002C              L1818:                           ; static: _paOFlameBo
                        +                                  ttom
    0000002C 00000010               .RES.L      4
    0000003C              L1819:                           ; static: _pOFlameBur
                        +                                  st
    0000003C 00000004               .RES.L      1
    00000040              L1820:                           ; static: _pFlameMidd
                        +                                  le
    00000040 00000004               .RES.L      1
    00000044              L1821:                           ; static: _pLEndPiece
    00000044 00000004               .RES.L      1
    00000048              L1822:                           ; static: _pREndPiece
    00000048 00000004               .RES.L      1
    0000004C              L1823:                           ; static: _pGlowCard
    0000004C 00000004               .RES.L      1
    00000050              L1824:                           ; static: _pLowGeoFla
                        +                                  me
    00000050 00000004               .RES.L      1
    00000054              L1825:                           ; static: _paPropCell
    00000054 00000008               .RES.L      2
    0000005C              L1826:                           ; static: _paFlameCel
                        +                                  l
    0000005C 00000044               .RES.L      17
    000000A0              L1827:                           ; static: _paBlueCell
    000000A0 00000014               .RES.L      5
    000000B4              L1828:                           ; static: _pEngFlameC
                        +                                  ell
    000000B4 0000001C               .RES.L      7
    000000D0              L1877:                           ; static: _xfmLFlame
    000000D0 0000006C               .RES.L      27
    0000013C              L1878:                           ; static: _xfmRFlame
    0000013C 0000006C               .RES.L      27
    000001A8              L1879:                           ; static: _xfmEngFlam
                        +                                  e
    000001A8 00000360               .RES.L      216
    00000508              L1880:                           ; static: _afLStrutVe
                        +                                  rts
    00000508 00000024               .RES.L      9
    0000052C              L1881:                           ; static: _afRStrutVe
                        +                                  rts
    0000052C 00000024               .RES.L      9
    00000550              L1882:                           ; static: _fEngFlameY
                        +                                  Coord
    00000550 00000018               .RES.L      6
    00000568              L1883:                           ; static: _FlameParti
                        +                                  cle
    00000568 0000004C               .RES.L      19
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:07:45  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:     1269



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               00001CB0 Byte(s)
CONSTANT SECTION (C):                               00000378 Byte(s)
DATA     SECTION (D):                               000001B0 Byte(s)
BSS      SECTION (B):                               000005B4 Byte(s)

 TOTAL PROGRAM SIZE: 0000278C Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:           48
NUMBER OF EXTERNAL DEFINITION SYMBOLS:           4
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:           469
*** COMMAND PARAMETER ***


  bt_tblade.c -ob=.\obj\bt_tblade.obj -cpu=sh4 -division=cpu -endian=little -fpu
=single -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -debug
 -listfile=.\obj\bt_tblade.lst

report.c

Found at 1xABA0830:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:20:06  PAGE    1

************ OBJECT LISTING ************

FILE NAME: report.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

        report.c     1    /*****************************************************
                         +******************************** */
        report.c     2    /* report.c - WinDev Environment reporting functions. 
                         +*/
        report.c     3    /* */
        report.c     4    /* Author: Steve Ranck      */
        report.c     5    /*****************************************************
                         +******************************** */
        report.c     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
        report.c     7    /* Copyright (c) 1997 */
        report.c     8    /* */
        report.c     9    /* The contents of this file may not be disclosed to t
                         +hird */
        report.c    10    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
        report.c    11    /* without the prior written permission of Midway Home
                         + Entertainment. */
        report.c    12    /*****************************************************
                         +******************************** */
        report.c    13    /* Modification History: */
        report.c    14    /* */
        report.c    15    /* Date     Who         Description */
        report.c    16    /* -------- ----------  ------------------------------
                         +-------------------------------- */
        report.c    17    /* 08/02/97 Ranck       Created. */
        report.c    18    /*****************************************************
                         +******************************** */
        report.c    19    
        report.c    20    #include "gendefs.h"
        report.c    21    
        report.c    22  E #if !((1 )==0)
        report.c    23    void report_Open( void ) {}
P   00000000              _report_Open:                    ; function: report_Op
                        +                                  en
                                                           ; frame size=0
    00000000 000B                   RTS
    00000002 0009                   NOP
        report.c    24    void report_Close( void ) {}
    00000004              _report_Close:                   ; function: report_Cl
                        +                                  ose
                                                           ; frame size=0
    00000004 000B                   RTS
    00000006 0009                   NOP
        report.c    25    void report_WriteString( const char *pszString ) {}
    00000008              _report_WriteString:             ; function: report_Wr
                        +                                  iteString
                                                           ; frame size=0
    00000008 000B                   RTS
    0000000A 0009                   NOP
        report.c    26    #else
        report.c    27 X  
        report.c    28 X  #include <stdio.h>
        report.c    29 X  #include "report.h"
        report.c    30 X  #include "wintap.h"
        report.c    31 X  #include "xclib.h"
        report.c    32 X  #include "tmem.h"
        report.c    33 X  
        report.c    34 X  
        report.c    35 X  #define RECORD_KEYWORD_COMMENT          "COM"
        report.c    36 X  #define RECORD_KEYWORD_REFERENCE        "REF"
        report.c    37 X  #define RECORD_KEYWORD_GEO_INFO         "GEO"
        report.c    38 X  #define RECORD_KEYWORD_TEX_INFO         "TEX"
        report.c    39 X  #define RECORD_KEYWORD_RAD_INFO         "RAD"
        report.c    40 X  
        report.c    41 X  
        report.c    42 X  
        report.c    43 X  static FILE *_pFile;
        report.c    44 X  static const char *_pszReportPathName;
        report.c    45 X  static BOOL _bReportEnabled;
        report.c    46 X  
        report.c    47 X  
        report.c    48 X  void report_Open( void ) {
        report.c    49 X          _pszReportPathName = Wintap_pGuiSettings->pszR
                         +eportPath;
        report.c    50 X          _bReportEnabled = Wintap_pGuiSettings->bReport
                         +Enabled;
        report.c    51 X          if( xclib_strlen( _pszReportPathName ) == 0 ) 
                         +{
        report.c    52 X                  xprintf( "No report filename given.\n"
                         + );
        report.c    53 X                  _bReportEnabled = FALSE;
        report.c    54 X          }
        report.c    55 X  
        report.c    56 X          if( _bReportEnabled ) {
        report.c    57 X                  _pFile = fopen( _pszReportPathName, "w
                         +t" );
        report.c    58 X                  if( _pFile == NULL ) {
        report.c    59 X                          xprintferr( "ERROR: Trouble op
                         +ening report file '%s'.\n", _pszReportPathName );
        report.c    60 X                          _bReportEnabled = FALSE;
        report.c    61 X                  }
        report.c    62 X          }
        report.c    63 X  }
        report.c    64 X  
        report.c    65 X  void report_Close( void ) {
        report.c    66 X          if( _bReportEnabled ) {
        report.c    67 X                  fclose( _pFile );
        report.c    68 X          }
        report.c    69 X  }
        report.c    70 X  
        report.c    71 X  void report_WriteString( const char *pszString ) {
        report.c    72 X          if( _bReportEnabled ) {
        report.c    73 X                  fprintf( _pFile, pszString );
        report.c    74 X          }
        report.c    75 X  }
        report.c    76 X  
        report.c    77 X  /* "COM","string" */
        report.c    78 X  void report_LogComment( const char *pszString ) {
        report.c    79 X          if( _bReportEnabled ) {
        report.c    80 X                  fprintf( _pFile, "\"%s\",\"%s\"\n", RE
                         +CORD_KEYWORD_COMMENT, pszString );
        report.c    81 X          }
        report.c    82 X  }
        report.c    83 X  
        report.c    84 X  /* "REF","referenced name","referenced-by name","in R2
                         +: Y/N" */
        report.c    85 X  void report_LogObRef( const char *pszReferenceName, co
                         +nst char *pszReferencedBy, char cInR2 ) {
        report.c    86 X          if( _bReportEnabled ) {
        report.c    87 X                  fprintf( _pFile, "\"%s\",\"%s\",\"%s\"
                         +,\"%c\"\n", RECORD_KEYWORD_REFERENCE, pszReferenceName
                         +, pszReferencedBy, cInR2 );
        report.c    88 X          }
        report.c    89 X  }
        report.c    90 X  
        report.c    91 X  /* "GEO","name","bytes","tris" */
        report.c    92 X  void report_LogGeoInfo( const char *pszGeoName, u32 nB
                         +ytes, u32 nTris ) {
        report.c    93 X          if( _bReportEnabled ) {
        report.c    94 X                  fprintf( _pFile, "\"%s\",\"%s\",\"%d\"
                         +,\"%d\"\n", RECORD_KEYWORD_GEO_INFO, pszGeoName, nByte
                         +s, nTris );
        report.c    95 X          }
        report.c    96 X  }
        report.c    97 X  
        report.c    98 X  /* "TEX","name","width","height","in tmem: Y/N" */
        report.c    99 X  void report_LogTexInfo( const char *pszTexName, u32 nW
                         +idth, u32 nHeight, char cLoaded ) {
        report.c   100 X          if( _bReportEnabled ) {
        report.c   101 X                  fprintf( _pFile, "\"%s\",\"%s\",\"%d\"
                         +,\"%d\",\"%c\"\n", RECORD_KEYWORD_TEX_INFO, pszTexName
                         +, nWidth, nHeight, cLoaded );
        report.c   102 X          }
        report.c   103 X  }
        report.c   104 X  
        report.c   105 X  void report_LogRadInfo( const char *pszRadarName, u32 
                         +nBytes ) {
        report.c   106 X          if( _bReportEnabled ) {
        report.c   107 X                  fprintf( _pFile, "\"%s\",\"%s\",\"%d\"
                         +\n", RECORD_KEYWORD_RAD_INFO, pszRadarName, nBytes );
        report.c   108 X          }
        report.c   109 X  }
        report.c   110 X  
        report.c   111 X  
        report.c   112 X  
        report.c   113 X  
        report.c   114    #endif
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:20:06  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:      114



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               0000000C Byte(s)
CONSTANT SECTION (C):                               00000000 Byte(s)
DATA     SECTION (D):                               00000000 Byte(s)
BSS      SECTION (B):                               00000000 Byte(s)

 TOTAL PROGRAM SIZE: 0000000C Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:            0
NUMBER OF EXTERNAL DEFINITION SYMBOLS:           3
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:             3
*** COMMAND PARAMETER ***


  report.c -ob=.\obj\report.obj -cpu=sh4 -division=cpu -endian=little -fpu=singl
e -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -debug -list
file=.\obj\report.lst

scissor.c

Found at 1xAF12830:

SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:20:08  PAGE    1

************ OBJECT LISTING ************

FILE NAME: scissor.c

SCT OFFSET   CODE       C LABEL     INSTRUCTION OPERAND    COMMENT

       scissor.c     1    /*****************************************************
                         +******************************** */
       scissor.c     2    /* scissor.c - Screen scissoring functions. */
       scissor.c     3    /* */
       scissor.c     4    /* Author: Steve Ranck */
       scissor.c     5    /*****************************************************
                         +******************************** */
       scissor.c     6    /* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME EN
                         +TERTAINMENT. */
       scissor.c     7    /* Copyright (c) 1997 */
       scissor.c     8    /* */
       scissor.c     9    /* The contents of this file may not be disclosed to t
                         +hird */
       scissor.c    10    /* parties, copied or duplicated in any form, in whole
                         + or in part, */
       scissor.c    11    /* without the prior written permission of Midway Home
                         + Entertainment. */
       scissor.c    12    /*****************************************************
                         +******************************** */
       scissor.c    13    /* Modification History: */
       scissor.c    14    /* */
       scissor.c    15    /* Date         Who                     Description */
       scissor.c    16    /* --------     ----------      ----------------------
                         +---------------------------------------- */
       scissor.c    17    /* 01-21-97     Ranck           Created. */
       scissor.c    18    /*****************************************************
                         +******************************** */
       scissor.c    19    
       scissor.c    20    #include "gendefs.h"
       scissor.c    21    #include "scissor.h"
       scissor.c    22    #include "viewport.h"
       scissor.c    23    #include "init3dfx.h"
       scissor.c    24    #include "glide.h"
       scissor.c    25    
       scissor.c    26    /* These values indicate the visible rectangle, and ar
                         +e inclusive: */
       scissor.c    27    int Scissor_nLeftX;             /* 0 is very left of s
                         +creen */
       scissor.c    28    int Scissor_nRightX;    /* 0 is very left of screen */
       scissor.c    29    int Scissor_nBottomY;   /* 0 is very bottom of screen 
                         +*/
       scissor.c    30    int Scissor_nTopY;              /* 0 is very bottom of
                         + screen */
       scissor.c    31    
       scissor.c    32    
       scissor.c    33    void scissor_SetToViewport( void ) {
P   00000000              _scissor_SetToViewport:          ; function: scissor_S
                        +                                  etToViewport
                                                           ; frame size=0
       scissor.c    34            scissor_Set( 0, Viewport_hres-1, 0, Viewport_v
                         +res-1 );
    00000000 D225                   MOV.L       L1125+4,R2 ; _Viewport_hres
    00000002 E600                   MOV         #0,R6
    00000004 D323                   MOV.L       L1125,R3   ; _Viewport_vres
    00000006 6522                   MOV.L       @R2,R5
    00000008 6732                   MOV.L       @R3,R7
    0000000A 75FF                   ADD         #-1,R5
    0000000C 77FF                   ADD         #-1,R7
    0000000E A009                   BRA         _scissor_Set
    00000010 6463                   MOV         R6,R4
       scissor.c    35    }
       scissor.c    36    
       scissor.c    37    void scissor_SetToScreen( void ) {
    00000012              _scissor_SetToScreen:            ; function: scissor_S
                        +                                  etToScreen
                                                           ; frame size=0
       scissor.c    38            scissor_Set( 0, Init3dfx_nHorizontalPixels-1, 
                         +0, Init3dfx_nVerticalPixels-1 );
    00000012 D223                   MOV.L       L1125+12,
                        +                                  R2; _Init3dfx_nHorizonta
                        +                                  lPixels
    00000014 E600                   MOV         #0,R6
    00000016 D321                   MOV.L       L1125+8,
                        +                                  R3 ; _Init3dfx_nVerticalP
                        +                                  ixels
    00000018 6522                   MOV.L       @R2,R5
    0000001A 6732                   MOV.L       @R3,R7
    0000001C 75FF                   ADD         #-1,R5
    0000001E 77FF                   ADD         #-1,R7
    00000020 A000                   BRA         _scissor_Set
    00000022 6463                   MOV         R6,R4
       scissor.c    39    }
       scissor.c    40    
       scissor.c    41    void scissor_Set( int nLeftX, int nRightX, int nBottom
                         +Y, int nTopY ) {
    00000024              _scissor_Set:                    ; function: scissor_S
                        +                                  et
                                                           ; frame size=16
    00000024 7FF0                   ADD         #-16,R15
    00000026 1F43                   MOV.L       R4,@(12,R15)
    00000028 1F52                   MOV.L       R5,@(8,R15)
    0000002A 1F61                   MOV.L       R6,@(4,R15)
    0000002C 2F72                   MOV.L       R7,@R15
       scissor.c    42            Scissor_nLeftX = nLeftX;
    0000002E 53F3                   MOV.L       @(12,R15),R3
    00000030 D21C                   MOV.L       L1125+16,R2; _Scissor_nLeftX
    00000032 2232                   MOV.L       R3,@R2
       scissor.c    43            Scissor_nRightX = nRightX;
    00000034 D31C                   MOV.L       L1125+20,R3; _Scissor_nRightX
    00000036 51F2                   MOV.L       @(8,R15),R1
    00000038 2312                   MOV.L       R1,@R3
       scissor.c    44            Scissor_nBottomY = nBottomY;
    0000003A D01C                   MOV.L       L1125+24,R0; _Scissor_nBottomY
    0000003C 51F1                   MOV.L       @(4,R15),R1
    0000003E 2012                   MOV.L       R1,@R0
       scissor.c    45            Scissor_nTopY = nTopY;
    00000040 D11B                   MOV.L       L1125+28,R1; _Scissor_nTopY
    00000042 62F2                   MOV.L       @R15,R2
    00000044 2122                   MOV.L       R2,@R1
       scissor.c    46    
       scissor.c    47            grClipWindow( nLeftX, nBottomY, nRightX, nTopY
                         + );
    00000046 54F3                   MOV.L       @(12,R15),R4
    00000048 D21A                   MOV.L       L1125+32,R2; _grClipWindow
    0000004A 55F1                   MOV.L       @(4,R15),R5
    0000004C 67F2                   MOV.L       @R15,R7
    0000004E 56F2                   MOV.L       @(8,R15),R6
    00000050 422B                   JMP         @R2
    00000052 7F10                   ADD         #16,R15
       scissor.c    48    }
       scissor.c    49    
       scissor.c    50    void scissor_SaveState( ScissorState_t *pScissorState 
                         +) {
    00000054              _scissor_SaveState:              ; function: scissor_S
                        +                                  aveState
                                                           ; frame size=0
       scissor.c    51            pScissorState->nLeftX = Scissor_nLeftX;
    00000054 D213                   MOV.L       L1125+16,R2; _Scissor_nLeftX
    00000056 6322                   MOV.L       @R2,R3
    00000058 2432                   MOV.L       R3,@R4
       scissor.c    52            pScissorState->nRightX = Scissor_nRightX;
    0000005A D013                   MOV.L       L1125+20,R0; _Scissor_nRightX
    0000005C 6102                   MOV.L       @R0,R1
    0000005E 1411                   MOV.L       R1,@(4,R4)
       scissor.c    53            pScissorState->nBottomY = Scissor_nBottomY;
    00000060 D112                   MOV.L       L1125+24,R1; _Scissor_nBottomY
    00000062 6312                   MOV.L       @R1,R3
    00000064 1432                   MOV.L       R3,@(8,R4)
       scissor.c    54            pScissorState->nTopY = Scissor_nTopY;
    00000066 D312                   MOV.L       L1125+28,R3; _Scissor_nTopY
    00000068 6232                   MOV.L       @R3,R2
       scissor.c    55    }
    0000006A 000B                   RTS
    0000006C 1423                   MOV.L       R2,@(12,R4)
       scissor.c    56    
       scissor.c    57    void scissor_RestoreState( ScissorState_t *pScissorSta
                         +te ) {
    0000006E              _scissor_RestoreState:           ; function: scissor_R
                        +                                  estoreState
                                                           ; frame size=0
       scissor.c    58            Scissor_nLeftX = pScissorState->nLeftX;
    0000006E 6142                   MOV.L       @R4,R1
    00000070 D00C                   MOV.L       L1125+16,R0; _Scissor_nLeftX
    00000072 2012                   MOV.L       R1,@R0
       scissor.c    59            Scissor_nRightX = pScissorState->nRightX;
    00000074 5341                   MOV.L       @(4,R4),R3
    00000076 D20C                   MOV.L       L1125+20,R2; _Scissor_nRightX
    00000078 2232                   MOV.L       R3,@R2
       scissor.c    60            Scissor_nBottomY = pScissorState->nBottomY;
    0000007A D30C                   MOV.L       L1125+24,R3; _Scissor_nBottomY
    0000007C 5142                   MOV.L       @(8,R4),R1
    0000007E 2312                   MOV.L       R1,@R3
       scissor.c    61            Scissor_nTopY = pScissorState->nTopY;
    00000080 D10B                   MOV.L       L1125+28,R1; _Scissor_nTopY
    00000082 5043                   MOV.L       @(12,R4),R0
       scissor.c    62    
       scissor.c    63            grClipWindow( Scissor_nLeftX, Scissor_nRightX,
                         + Scissor_nBottomY, Scissor_nTopY );
    00000084 6703                   MOV         R0,R7
    00000086 2102                   MOV.L       R0,@R1
    00000088 6522                   MOV.L       @R2,R5
    0000008A D20A                   MOV.L       L1125+32,R2; _grClipWindow
    0000008C D005                   MOV.L       L1125+16,R0; _Scissor_nLeftX
    0000008E 6632                   MOV.L       @R3,R6
    00000090 422B                   JMP         @R2
    00000092 6402                   MOV.L       @R0,R4
    00000094              L1125:                            
    00000094 <00000000>             .DATA.L     _Viewport_vres
    00000098 <00000000>             .DATA.L     _Viewport_hres
    0000009C <00000000>             .DATA.L     _Init3dfx_nVerticalPixels
    000000A0 <00000000>             .DATA.L     _Init3dfx_nHorizontalPixels
    000000A4 <00000000>             .DATA.L     _Scissor_nLeftX
    000000A8 <00000000>             .DATA.L     _Scissor_nRightX
    000000AC <00000000>             .DATA.L     _Scissor_nBottomY
    000000B0 <00000000>             .DATA.L     _Scissor_nTopY
    000000B4 <00000000>             .DATA.L     _grClipWindow
       scissor.c    64    }
       scissor.c    65    
B   00000000              _Scissor_nLeftX:                 ; static: Scissor_nLe
                        +                                  ftX
    00000000 00000004               .RES.L      1
    00000004              _Scissor_nRightX:                ; static: Scissor_nRi
                        +                                  ghtX
    00000004 00000004               .RES.L      1
    00000008              _Scissor_nBottomY:               ; static: Scissor_nBo
                        +                                  ttomY
    00000008 00000004               .RES.L      1
    0000000C              _Scissor_nTopY:                  ; static: Scissor_nTo
                        +                                  pY
    0000000C 00000004               .RES.L      1
SH SERIES C Compiler (Ver. 5.0(Release27))           21-Oct-1998 17:20:08  PAGE    1


******** STATISTICS INFORMATION ********


********** ERROR INFORMATION ***********

NUMBER OF ERRORS:           0
NUMBER OF WARNINGS:         0




******* SOURCE LINE INFORMATION ********

COMPILED SOURCE LINE:       65



******* SECTION SIZE INFORMATION *******

PROGRAM  SECTION (P):                               000000B8 Byte(s)
CONSTANT SECTION (C):                               00000000 Byte(s)
DATA     SECTION (D):                               00000000 Byte(s)
BSS      SECTION (B):                               00000010 Byte(s)

 TOTAL PROGRAM SIZE: 000000C8 Byte(s)



********** LABEL INFORMATION ***********

NUMBER OF EXTERNAL REFERENCE SYMBOLS:            5
NUMBER OF EXTERNAL DEFINITION SYMBOLS:           9
NUMBER OF INTERNAL/EXTERNAL SYMBOLS:            15
*** COMMAND PARAMETER ***


  scissor.c -ob=.\obj\scissor.obj -cpu=sh4 -division=cpu -endian=little -fpu=sin
gle -pic=0 -macsave=0 -string=const -sub=hydro.sub -optimize=1 -speed -debug -li
stfile=.\obj\scissor.lst

Raw Source Code

mesh3d.c

Found at 0x8E94380:

/*////////////////////////////////////////////////////////////////////////////////////*/
/* mesh3d.c - General 3D mesh definitions.*/
/**/
/* Author: Steve Ranck*/
/*////////////////////////////////////////////////////////////////////////////////////*/
/* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME ENTERTAINMENT.*/
/* Copyright (c) 1997*/
/**/
/* The contents of this file may not be disclosed to third*/
/* parties, copied or duplicated in any form, in whole or in part,*/
/* without the prior written permission of Midway Home Entertainment.*/
/*////////////////////////////////////////////////////////////////////////////////////*/
/* Modification History:*/
/**/
/* Date		Who			Description*/
/* --------	----------	--------------------------------------------------------------*/
/* 04-14-97	Ranck		Created.*/
/*////////////////////////////////////////////////////////////////////////////////////*/

#include "gendefs.h"
#include "gfxdefs.h"
#include "vec3.h"
#include "xfm.h"
#include "viewport.h"
#include "glide.h"
#include "gutil.h"
#include "xmath.h"
#include "tmem.h"
#include "mesh3d.h"
#include "light.h"
#include "blit.h"
#include "sysmem.h"
#include "glcount.h"
#include "material.h"
#include "xclib.h"
#include "race.h"
#include <private.h>

#define _INLINE_ASM_ENABLED			FALSE
#define _ASM_TRANSFORM_ENABLED		TRUE
#define _ASM_LIGHTING_ENABLED		TRUE
#define _DYNAMIC_LIGHTING_ENABLED	TRUE
#define _LIGHTING_CACHE_ENABLED		TRUE

#define OLD_OOW_CALC_METHOD 0
#define MY_TEMP_TEST		0
#define MY_TEMP_TEST2		0

#define MESH3D_ZTUG_DELTA_DEPTH_BIAS	5


#ifdef MESH3D_USE_32BIT_TC_INDEX_FIELDS
static Mesh3dMtlDef_t _UnmappedTextureMtl_1Sided = {
	0, 0, 0, 0, 0, 0.0f, 0.0f, NULL, 0.0f, 1.0f, 1.0f, 1.0f
};

static Mesh3dMtlDef_t _UnmappedTextureMtl_2Sided = {
	MESH3D_MTLFLAG_2SIDED, 0, 0, 0, 0, 0.0f, 0.0f, NULL, 0.0f, 1.0f, 1.0f, 1.0f
};
#else
static Mesh3dMtlDef_t _UnmappedTextureMtl_1Sided = {
	0, 0, 0, 0, 0.0f, 0.0f, NULL, 0.0f, 1.0f, 1.0f, 1.0f
};

static M�t˜!��������+ð�geR¯+$�ʇ\}ŒxÁ+±CŠá�£lö›[Ê%¡Ç³ÝwœE±0`Ä�ÑWåy¼UÏKÖÏX½W�ç½õ¤j¢…[?q(š��ɍ=;�–èT�í2:¦RjyØ®$!nsá�.�¹×,%ÕTàVÊ�à÷Zæa§•{¿i»ºú„W´/×8~èx¨#©\l‡-Øí'»"Z÷œÄXÅ´/8vk¡�,•áoQG¿s�8Ê8;ì�5z—X,Ÿ��	“5‰�Rÿ‰ÒY•TA„|ÉQû$J$��RÏwtÛG–Á[‰iÛ:Õ¤<“7ñCìo•kö=��Û�ÓŠêTxνùî˜�\]îZ9·?šÁ™©")ÆI~¢Z°©†Bœi-Õè�eð�r�ÿÿÿÿÿÿÿÿÿÿ�%9�esh3dMtlDef_t _UnmappedTextureMtl_2Sided = {
	MESH3D_MTLFLAG_2SIDED, 0, 0, 0, 0.0f, 0.0f, NULL, 0.0f, 1.0f, 1.0f, 1.0f
};
#endif


/*==================================================================================*/
/* Public Variables:*/

#if MESH3D_ENABLE_STATS
u32 Mesh3d_nTrisCulled_BackfaceTest;
u32 Mesh3d_nTrisCulled_TriBoundTest;
u32 Mesh3d_nTrisCulled_TriVtxTest;
u32 Mesh3d_nTrisCulled_TriClipTest;
u32 Mesh3d_nTrisDrawn_Unclipped;
u32 Mesh3d_nTrisDrawn_Clipped;
#endif

#if MESH3D_TRI_HIGHLIGHT_CODE
BOOL Mesh3d_bDisplayFaceNorms;
BOOL Mesh3d_bDisplayVtxNorms;
RGBn_t Mesh3d_FaceNormColor;
RGBn_t Mesh3d_VtxNormColor;
float Mesh3d_fNormLength;

BOOL Mesh3d_bWireframeMode;			/* FALSE: normal rendering, TRUE: opaque tris and wireframes*/
RGBn_t Mesh3d_WireframeColor;		/* Color when Mesh3d_bWireframeMode is TRUE*/
Mesh3dPolyDrawFcn_t *Mesh3d_pPolyDrawFcn;	/* Called for every poly drawn (NULL=none)*/
#endif

Mesh3dVtxCache_t *Mesh3d_pVtxCache;
Mesh3dVlCache_t *Mesh3d_pVlCache;

u32 Mesh3d_nNextAvailVtxCacheIndex;
u32 Mesh3d_nNextAvailVlCacheIndex;
u32 Mesh3d_nCacheKey;
u32 Mesh3d_nLastFrameCounter;

u32 Mesh3d_nMaxVtxCacheIndex;
u32 Mesh3d_nMaxVlCacheIndex;

#if MESH3D_HIGHLIGHT_2SIDED
BOOL Mesh3d_bHighlight2Sided;
#endif



/*==================================================================================*/
/* Private Variables:*/

static BOOL _bCacheEnable;
static int _nMaterialFilter;
static Mesh3dMtlDef_t *_pCurrentMaterial;
static u32 _nMaterialFlags;
static TexDef_t *_pMaterialTexDef;
static float _fMaterialShininess;
static float _fMaterialShinyStrength;
static float _fMaterialSpecularProduct;
static BOOL _bMaterialTexture;
static BOOL _bMaterial2Sided;
static BOOL _bMaterialReflective;
static BOOL _bMaterialNoDiffuse;
BOOL _bMaterialNoDynLight;
static BOOL _bMaterialAlphaLit;
static BOOL _bMaterialTileS;
static BOOL _bMaterialTileT;
static BOOL _bMaterialZtug;
BOOL _bMaterialNoIncidenceAtten;	/* For lighting*/
static u32 _nMaterialAlphÏŒŸ ��������²ÂgÌÄîãàUHñêÚ�³~�[�
A6©
6þÁ�ÎôÐS¨6h.~·jë�V�c‹þ�e�¿h/�½¨ªîÐÞ³�Ôê�këpÓeë}üïœRš§üÒ8C�¤tåÕÖ䐆ǚD�¾Þ¾~›�'�wBmGŒU<¯¿*«ÜÃ2Ð2)k}ÂL¤é.:ujÒ¦@,�œ"h�ŸÝª–ç‰ïFÚ» NÊ9åwg“O£–k„Êž_{�’êÐœçã]¼Ží0ÜÍn¹ f¥}��Üq¯£hYI¹Y”Õ¤›…ÿˆ›àŒÁ�‹&%NÊI@g6aw�$·„"”l;cô›T�¤�ê§ùG»nf�”�…8WŒÊhi™Ô�Á	…�_טc�‘†:"�ÿÿÿÿÿÿÿÿÿÿ�%@�aLightColor;

static float _fOrthoYScale = 1.0f;
static float _fBackClipPlaneZ = 2500.0f;

static int _nUntuggedDepthBiasLevel;
static int _nTuggedDepthBiasLevel;
static BOOL _bZtugOn;

static u32 _nAmbientCol;
static RGBf_t _AlphaLightColor;
static u32 _nAlphaLightState;
Mesh3dAmbient_t _Ambient;	/* ambient light*/
static float _fWhiteSat;			/* white saturation level (0=normal, 1=fully white)*/
static u32 _dwWhiteSat;
static float _fR, _fG, _fB, _fA;	/* temporary variables used for lighting*/
static float _fRGBA[4];
static Vec3_t _Vtx3d, _VtxUnitNorm, _VtxToCam;
static float _Vtx[6];
static float _fInvMagVtxToCam;
static BOOL _bMustCalcInvMagVtxToCam;

static u32 _nFindMtlById_ID;
static u32 _nFindMtlById_GrpIndex;
static u32 _nFindMtlById_TlIndex;
static Mesh3d_t *_pFindMtlById_Mesh;

static float _fOrthoRedBias;
static float _fOrthoGreenBias;
static float _fOrthoBlueBias;
static float _fOrthoOpaqueness;
static float _fOrthoWhiteSat;
static u32	_dwOrthoWhiteSat;
static BOOL _bOrthoUseScreenCoverageDraw;
static GrColor_t _OrthoConstColor;

static float _fGlobalAmbientInten = 1.0f;

static u32 _nNextPrintedMsgFrameCounter;
static MidwayLight_t *_apLightList[MESH3D_MAX_ACTIVE_LIGHTS];
static MidwayLight_t **_ppLightList;
static u32 _nNumLights;
static u32 _nLightListStartIndex;
static u32 _nIncludedPositionalLights;
static u32 _nIncludedDirectionalLights;

MidwayLight_t *_apPosGrpLight[MESH3D_MAX_ACTIVE_LIGHTS];
MidwayLight_t *_apDirGrpLight[MESH3D_MAX_ACTIVE_LIGHTS];
MidwayLight_t *_apSpotGrpLight[MESH3D_MAX_ACTIVE_LIGHTS];
MidwayLight_t *_apFlashGrpLight[MESH3D_MAX_ACTIVE_LIGHTS];
u32 _nNumGrpLights;
u32 _nNumPosGrpLights;
u32 _nNumDirGrpLights;
u32 _nNumSpotGrpLights;
u32 _nNumFlashGrpLights;
BOOL _bWorldMesh;			/* mesh vertices are in world-space*/
BOOL _bDirLighting;


static BOOL _bReflectSurface;
static float _fReflectSurfaceHeight_WorldSpace;
static Vec3_t _PointOnReflectSurface_Camspace;
static Vec3_t _ReflectSurfaceUnitNorm_Camspace;
static f�+`Ô��������„DÌ/�p�Çòؐt…!s&¢M>bmF�G§(ƒZH%+ŸÑ`�è
�Î�-b±q•¨€ÇmÇ¥hv3ñª�ÏçP2Ž
h��ȺqkWï#.W4ü¸ ��yk>�C*}¹o�:qœÞ’Ø â'��…Q��Cfw�‚)áPusJòý�eùutÒ��t„�遼Ø?§(Tc•‚�©ôo8«�$.SÙ½~+'‡Dv�Q·,�N�WzmB�’�ÝÄx&Âœ�ðUä+�ÚäéSÒ�[ìónÒ6Â1�Á”ÿìdûãç?Xëq»Äî-Œ÷Þqåòe“&Fð Ç£«î§ž�#T�½�zØGc�j4¨f¿�Á��¼�z�Ìë!h‰ËzÖõ�_^}"�ÿÿÿÿÿÿÿÿÿÿ�%A�loat _fNegDistAboveReflectSurface_Camspace;
static float _fReflectSurfaceAnimateCounter;

static float _fZBufferOffset;

#if MESH3D_BOUNDING_VIEW_ENABLED
static Mesh3dTriDef_t *_pHighlightedTri;	/* NULL=none*/
static int _nTriSphereCrossesPlanesMaskTmp;
static int _nTriSphereCrossesPlanesMask;
static BOOL _bViewOrthoBoundEnabled;
static BOOL _bViewBoundEnabled;
static BOOL _bViewMeshSphere;
static BOOL _bViewMeshVolume;
static BOOL _bViewGroupSphere;
static BOOL _bViewGroupVolume;
static BOOL _bViewTriSphere;
static int _nSelectedTriNum;
static int _nSelectedMatNum;
static int _nSelectedGrpNum;
#endif

static Mesh3d_t _SensorMesh;
static Mesh3dGrpDef_t _SensorGrp;

static u32 _LightingModel = LIGHTING_MODEL_LITE;

static Vec3_t _avModelViewNorm[4];	/* viewport normals in model space:*/
									/*   [0]=left, [1]=right, [2]=bottom, [3]=top*/

static Mesh3dVtxCache_t clippedvtx[40], *grvp[40];

extern float dcCullTest(float *pCamPos, float *pPos, float *pNorm);
extern void dcTransformVertices(Mesh3dVtxDef_t *pVtx, int NumVerts, Mesh3dVtxCache_t *pDest);
extern void dcTransformVerticesA(Mesh3dVtxDef_t *pVtx, int NumVerts, Mesh3dVtxCache_t *pDest);
extern void dcComputeDirLight(MidwayLight_t **pLightList, int NumLights, float *pNormal, float Rgb[3] );
extern void dcComputeSpotLight(MidwayLight_t **pLightList, int NumLights, float *pNormal, float Rgb[3] );
extern void dcComputeVtxLighting( Mesh3dGrpDef_t *pGrp, u32 *pArgb, Mesh3dVtxDef_t *pVtx, Mesh3dVlDef_t *pVl, Mesh3dVnDef_t *pVn );
extern void dcComputeMotifLighting( Mesh3dGrpDef_t *pGrp, u32 *pArgb, Mesh3dVtxDef_t *pVtx, Mesh3dVlDef_t *pVl );
extern void dcOutputTri(Mesh3dVtxCache_t*, Mesh3dVtxCache_t*, Mesh3dVtxCache_t*);
extern void dcLightTri( Mesh3d_t *pMesh, Mesh3dGrpDef_t * pGrp, Mesh3dVtxCache_t *apVtxCache[3], Mesh3dTriVtx_t *pTriVtx);

extern Mesh3dVtxCache_t _dcVertexBuffer[8192];


/*==================================================================================*/
/* Prototypes:*/

static BOOL _SetOrth#P�R��������ÿ�‡Y»ÁnáTïSPsïqÔ�@”„Ò“£_
�íb�PœCè¾+û�4�ñ�<º©²ù«�ë
©¢šT؆î�å¥N1~úû¼ «}'(Íú¼BÊþb�%ÉÁ”k1B’!¡ûXÚXç��mÄhÆLe„ŠïÏÿß[:nÌ�~3ÑU É�¹.�uÿÜa�å›Þ†Ÿ�¦x¼è¼iÝñ®OÌÔ�M�ªþ¦V¬ba^ÿ±Ü�ßÓ<$(¶z,nåOÌ�%ºSonp*“bI31ŠFQt|
*|¬N7 �"@WFo�e‡H¨���£Ö	?–Šu�Õ ì…Û�ê�”Ž³ˆæôC�2ö®§qÅç˜�þïÅ�%§¿'»ŒÆ(¢�o�{Šc�WtÎE�þ�ÿÿÿÿÿÿÿÿÿÿ�%B�oMaterial( int *pnTmuIndex, u32 nMtlFlags );
static void _SetMaterial( BOOL bLightAlphaTexels );

#if MESH3D_TRI_HIGHLIGHT_CODE
static void _ClipTriToFrustumAndDraw( u32 nTriNum, Mesh3dVtxCache_t **ppVtxCache, int nTriCrossesPlanesMask );
#else
static void _ClipTriToFrustumAndDraw( Mesh3dVtxCache_t **ppVtxCache, int nTriCrossesPlanesMask );
#endif

//static void _ComputeVtxLighting( Mesh3dGrpDef_t *pGrp, GrVertex *pGrVertex, Mesh3dVtxDef_t *pVtx, Mesh3dVlDef_t *pVl, Mesh3dVnDef_t *pVn );
//static void _ComputeFlashLight( void );
static void _ComputeOmniLight( void );
static void _ComputeDirLight( void );
static void _ComputeSpotLight( void );
static void _ComputeFlashLight_NoNormal( void );
static void _ComputeOmniLight_NoNormal( void );
static void _ComputeDirLight_NoNormal( void );
static void _ComputeSpotLight_NoNormal( void );

static void _DrawOrthoSphere( Vec3_t *pCenter, float fRadius, u32 nColorRGB555, float fViewportX, float fViewportY, int nRoll, float fScale );
static void _DrawProjectedSphere( Vec3_t *pCenter, float fRadius, u32 nColorRGB555 );


#if MESH3D_BOUNDING_VIEW_ENABLED
static void _UpdateViewBoundVars( void );
#endif

#if MESH3D_TRI_HIGHLIGHT_CODE
static void _DrawConvexPolyWireframe( int nNumVerts, Mesh3dVtxCache_t *apVtxCache[] );
#endif

static void _IntersectPosLightListWithBound( Mesh3d_t *pMesh, Mesh3dBound_t *pBound, BOOL bTestingGroupBound );

static void _ComputeReflectParameters( void );
static void _WabbleScreenPoint( float *pfScreenX, float *pfScreenY, float fCamspaceX, float fCamspaceY, float fCamspaceZ );

#if MESH3D_TRI_HIGHLIGHT_CODE
static void _DisplayFaceNormal( Mesh3dVtxCache_t **ppVtxCache, Vec3_t *pFaceUnitNorm );
static void _DisplayVtxNormal( Mesh3dVtxCache_t *pVtxCache, Mesh3dVnDef_t *pVtxNorm );
static void _DrawNormal( Vec3_t *pHead, Vec3_t *pTail, int nRed, int nGreen, int nBlue );
#endif

/*==================================================================================*/
/* Public Functions:*/

/* mesh3d_SystemInit:™š�š��������û®k·¸Ò¯•¯–³”�ŠbO�ôõ�‡.õCÐ�O›�¥ëéf¿U¼ï˜óSQ)á�ˆ{ÎO)fuIßá�2 –Àӏ‹¬s`G;M2P€5æÉÝB·ˆ�æ.ßo�º³M«�¯ë‹÷¤œ»žì'î)xDÜân¼mƒJÏ5+øN”â�õ>áð¯þ@>/þ�–M¬d�9�>‰–�/5ױ󞄘Z$BR�:�Ï�¼½�¦ÕiHÍIÇwcïÆÎ0náêÂêÄL$��¿3©�RÍç�¡)ÔÚ�xRL5
!ïž�L�_åq&�-è6VÂ!§�1�Õ¨‡Ä±¥‹WÀgúÄ}�ÔU÷Ãd9è¶
ø�Gÿ'8ÿDpÉÏp‡çyé‰��“ЄºÚ3��ÿÿÿÿÿÿÿÿÿÿ�%C�*/
/* Initializes the mesh3d system and sets certain global parameters*/
/* to default values.*/
BOOL mesh3d_ModuleInit( void ) {
	u32 nVtxCacheBytes, nVlCacheBytes;
#if SYS_WINDEV_DEBUG
	u32 i;
#endif

	mesh3d_EnableCache( TRUE );
	Mesh3d_nMaxVtxCacheIndex = 0;
	Mesh3d_nMaxVlCacheIndex = 0;

	nVtxCacheBytes = MESH3D_MAX_CACHED_VTX * sizeof(Mesh3dVtxCache_t);
	nVlCacheBytes = MESH3D_MAX_CACHED_VL * sizeof(Mesh3dVlCache_t);

//	Mesh3d_pVtxCache = (Mesh3dVtxCache_t *)SYSMEM_ALLOC( nVtxCacheBytes );
	Mesh3d_pVlCache = (Mesh3dVlCache_t *)SYSMEM_ALLOC( nVlCacheBytes );
	xprintf( "Allocated %i bytes for mesh3d caches.\n", nVtxCacheBytes+nVlCacheBytes );

	mesh3d_ResetCache();

	_pFindMtlById_Mesh = NULL;
	_bReflectSurface = FALSE;

	_nNumLights = 0;
	_nLightListStartIndex = 0;
	_ppLightList = _apLightList;
	_nNumPosGrpLights = 0;
	_nNumDirGrpLights = 0;
	_nNumSpotGrpLights = 0;
	_nNumFlashGrpLights = 0;
	_nNumGrpLights = 0;

	mesh3d_SetMaterialFilterMode( 0 );
	mesh3d_SetWhiteSat( 0.0f );

	mesh3d_SetAmbientLight( 1.0f, 1.0f, 1.0f, 1.0f );
	mesh3d_SetAmbientEffects( 1.0f );

	/* Normal alpha light color is white...*/
	_nAlphaLightState = 0;
	mesh3d_SetAlphaLightColor( 1.0f, 1.0f, 1.0f, 1.0f );

	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	mesh3d_EnableOrthoScreenCoverageDrawState( FALSE );


	/* Init sensor stuff...*/
	xclib_MemSet( &_SensorMesh, 0, sizeof(Mesh3d_t) );
	xclib_MemSet( &_SensorGrp, 0, sizeof(Mesh3dGrpDef_t) );
	_SensorMesh.nGrpCount = 1;
	_SensorMesh.pGrp = &_SensorGrp;
	_SensorMesh.Bound.fBoundRadius = 1.0f;
	_SensorGrp.Bound.fBoundRadius = 1.0f;

	_nNextPrintedMsgFrameCounter = 0;

	return TRUE;
}


/* Sets the mesh reflection-wabble mode and reflection plane world height.*/
/* Returns the prior state of the enable flag.*/
BOOL mesh3d_SetReflectMode( BOOL bEnable, float fWorldReflectPlaneHeight ) {
	BOOL bOldMode;

	bOldMode = _bReflectSurface;
	_bReflectSurface = bEnable;
	_fReflectSurfaceHeight_WorldSpace = fWorldReflecœÎÙ%��������ûQdìb_x��ç�¹ïÃ�0SÇ‚ƒy”ææ-£##.�k«Ly]
£¾Íôѯ	G°w¤¼æ�Ös:Hø#iÖªø�¬��YñåhvEOwé«¢ŒŽ„�.Û(×
xVAOf��ºGÀÔêgV�Ë¯ç Š×¤�ï5\OyrøûZ~�%ý·ÿצ£�yÆ#Ô Ï[Õ+t-ž±QoÐÝøX•‹�/1›ˆkd69ô�1‘„›Gqñ?¹�.óìÝq�	Oô�`°�ÁãØf[Ceà|l~Uà¢5Ev�ÞP­%âÇ\ÖùèÙcÕ¨�÷¯½¯iÜžÁ׸»q€�Ù‡œ½[{^ÂûSèIÊ�°O—ºÿUV†L:ÿŽ‹u®ã"�YÜ�æ’øœ\�ÿÿÿÿÿÿÿÿÿÿ�%D�tPlaneHeight;

	return bOldMode;
}

/* Returns the current state of the reflection-wabble enable flag.*/
/* If pfWorldReflectPlaneHeight is not NULL, it is filled with the*/
/* current reflection plane world height.*/
BOOL mesh3d_GetReflectMode( float *pfWorldReflectPlaneHeight ) {
	if( pfWorldReflectPlaneHeight ) {
		*pfWorldReflectPlaneHeight = _fReflectSurfaceHeight_WorldSpace;
	}

	return _bReflectSurface;
}

/* Fills pAmbientLightState with the current ambient light state.*/
/* Fields within the structure should not be modified.*/
/* This function also saves the state of the ambient effects.*/
void mesh3d_GetAmbientLightState( Mesh3dAmbient_t *pAmbientLightState ) {
	*pAmbientLightState = _Ambient;
}

/* Restores the ambient light state to the state contained in pAmbientLightState.*/
/* pAmbientLightState must have been obtained using mesh3d_GetAmbientLightState().*/
/* This function also restores the state of the ambient effects.*/
void mesh3d_SetAmbientLightState( Mesh3dAmbient_t *pAmbientLightState ) {
	_Ambient = *pAmbientLightState;
}

/* fRed, fGreen, and fBlue are from 0.0f to 1.0f and indicate the ambient light color.*/
/* fIntensity is from 0.0f to 1.0f and indicates the intensity of the specified*/
/* color.*/
void mesh3d_SetAmbientLight( float fRed, float fGreen, float fBlue, float fIntensity ) {
//	XASSERT_UNIT_FLOAT( fRed );
//	XASSERT_UNIT_FLOAT( fGreen );
//	XASSERT_UNIT_FLOAT( fBlue );

	// Override 
	if(_LightingModel == LIGHTING_MODEL_LITE){
		fRed = _fGlobalAmbientInten;
		fGreen = _fGlobalAmbientInten;
		fBlue= _fGlobalAmbientInten;
	}
	_Ambient.Color.rgb[2] = fRed;
	_Ambient.Color.rgb[1] = fGreen;
	_Ambient.Color.rgb[0] = fBlue;
	_Ambient.fIntensity = fIntensity;
	_Ambient.ScaledColor.rgb[2] = fRed * fIntensity;
	_Ambient.ScaledColor.rgb[1] = fGreen * fIntensity;
	_Ambient.ScaledColor.rgb[0] = fBlue * fIntensity;
	_nAmbientCol = dcRGB(	(u32)(_Ambient.ScaledColor.rgb[0] * 255.0f),
							(u32)(_Ambient.ScaledColor.rgb[1] * 255.0f),
				Ÿl­v��������&IR�	?�dŸÔÍ£Õ*º¾�8Ë^
l.�ÍŒ"jÕô†¥É¯†�f»~åÅ�Ot¼	B‹û5AµÿÔ"¬·ºZ´B³Œ‹Ìº©�†Ð0êÚ|4pÃ!�) Ö”%¦\�}-QHMÍÖ¿éï�¿‚�Kº�dQ�.$¯µ�løëÁÞاú=FÝ3ü°~�!…omÂçg Ø´Ð/Áþ•YÚ�¥¼ÍÞñã4ƒÍ�æÄ™­‚qé�l;Æ ‡A!Î’²�ÁÀá*Т��^ÀÇ…� Ž��5gÞŽé0ÌÞp��ê�"±17œ'Èp·"ƧÊ}
ŠŸ;Q�G,
®(ƒ�º™«:9�B4Þ/�¢Éø$Z4Uþä–@�
ôæª���<éWV'üp?ÑñJ�ÿÿÿÿÿÿÿÿÿÿ�%E�			(u32)(_Ambient.ScaledColor.rgb[2] * 255.0f)
						);
}

/* Fills *pfRed, *pfGreen, *pfBlue, and *pfIntensity with the current values*/
/* set by the most recent call to mesh3d_SetAmbientLight().*/
/* All values have the range 0.0f to 1.0f.*/
void mesh3d_GetAmbientLight( float *pfRed, float *pfGreen, float *pfBlue, float *pfIntensity ) {
	*pfRed = _Ambient.Color.rgb[2];
	*pfGreen = _Ambient.Color.rgb[1];
	*pfBlue = _Ambient.Color.rgb[0];
	*pfIntensity = _Ambient.fIntensity;
}

/* Fills *pfRed, *pfGreen, and *pfBlue with the current values set by the*/
/* most recent call to mesh3d_SetAmbientLight(). The values are pre-scaled*/
/* by the intensity value most recently passed to mesh3d_SetAmbientLight().*/
/* All values have the range 0.0f to 1.0f.*/
void mesh3d_GetAmbientScaledLight( float *pfRed, float *pfGreen, float *pfBlue ) {
	*pfRed = _Ambient.ScaledColor.rgb[2];
	*pfGreen = _Ambient.ScaledColor.rgb[1];
	*pfBlue = _Ambient.ScaledColor.rgb[0];
}

/* fOpaqueness is a value from 0.0f (transparent) to 1.0f (opaque).*/
void mesh3d_SetAmbientEffects( float fOpaqueness ) {
	XASSERT_UNIT_FLOAT( fOpaqueness );

	_Ambient.fOpaqueness = fOpaqueness;
	_Ambient.nScaledOpaqueness = (u32)(fOpaqueness * 255.0f);
}

/* Returns the current white saturation level (0=none, 1=fully white).*/
float mesh3d_GetWhiteSat( void ) {
	return _fWhiteSat;
}

/* Sets the current white saturation level (0=none, 1=fully white).*/
void mesh3d_SetWhiteSat( float fWhiteSat ) {
	XASSERT_UNIT_FLOAT( fWhiteSat );

	_fWhiteSat = fWhiteSat;
	_dwWhiteSat = dcRGB( (u32)(_fWhiteSat * 255.0f), 
						 (u32)(_fWhiteSat * 255.0f),
						 (u32)(_fWhiteSat * 255.0f) );
}

/* Returns the current material filter mode. See MESH3D_MTL_FILTER for info.*/
/* Note that more than one bit may be set.*/
int mesh3d_GetMaterialFilterMode( void ) {
	return _nMaterialFilter;
}

/* Sets the current material filter mode. See MESH3D_MTL_FILTER for info.*/
/* Note that more than one bit may be set.*/
void mesh3d_SetMate�žï4��������’Ó%¼(d�¨Ö��²C£"&²	?�~”*à„€²�� åï�1^›ÄšOp+Ê�†5r~…îÓ¸ò%Ñè/[¹£Š�y©}·I¤®:¹��8èr�|´5œë”§bÅ:Ó?vxúÊXhå?·J�¬E0��¹&¨Ÿé”{�#¹ÜëX	m¥œæ^Z(Ñ%®�cvø…«Ùÿ]¥…MpþÊ×^ ÷#ºíjÌË.Ñy�Œ��E6‰0ÏÛâö¢ôÄ��üpôñ¦�ý©0#YaW´”}î­3ېh.xç6�öýmtU|êîKàL1øÇÀ�žŠ£··6v¶EÜi]žçòê³�”�|�ssçÌÕj'óïüô9�…T:\¬š²N²ñø×�”–Xª.�ÿÿÿÿÿÿÿÿÿÿ�%F�rialFilterMode( int nMaterialFilter ) {
	XASSERT( (nMaterialFilter & ~(MESH3D_MTL_FILTER_OUT_MAIN|MESH3D_MTL_FILTER_OUT_COLLIDE)) == 0 );
	_nMaterialFilter = nMaterialFilter;
}

/* Sets the color used to light alpha lights.*/
/* All parameters have the range of 0.0f to 1.0f.*/
/* Returns the previous state which can be used by mesh3d_SetAlphaLightState()*/
/* to restore the state to its previous condition.*/
u32 mesh3d_SetAlphaLightColor( float fRed, float fGreen, float fBlue, float fIntensity ) {
	u32 nPriorState;

	XASSERT_UNIT_FLOAT( fRed );
	XASSERT_UNIT_FLOAT( fGreen );
	XASSERT_UNIT_FLOAT( fBlue );
	XASSERT_UNIT_FLOAT( fIntensity );

	nPriorState = _nAlphaLightState;

	fIntensity *= 255.0f;

	_AlphaLightColor.rgb[2] = fRed * fIntensity;
	_AlphaLightColor.rgb[1] = fGreen * fIntensity;
	_AlphaLightColor.rgb[0] = fBlue * fIntensity;

	_nAlphaLightState = ((u32)_AlphaLightColor.rgb[2]<<16)
					| ((u32)_AlphaLightColor.rgb[1]<<8)
					| ((u32)_AlphaLightColor.rgb[0]);

	return nPriorState;
}

/* Returns the current alpha light state. The returned value can be*/
/* passed to mesh3d_SetAlphaLightState() to restore the alpha light state.*/
u32 mesh3d_GetAlphaLightState( void ) {
	return _nAlphaLightState;
}

/* Restores the alpha light state. The return value is the prior state.*/
u32 mesh3d_SetAlphaLightState( u32 nAlphaLightState ) {
	u32 nPreviousState;

	XASSERT( !(nAlphaLightState & 0xff000000) );

	nPreviousState = _nAlphaLightState;

	if( nAlphaLightState != _nAlphaLightState ) {
		_AlphaLightColor.rgb[2] = (float)(nAlphaLightState>>16);
		_AlphaLightColor.rgb[1] = (float)( (nAlphaLightState>>8) & 0xff );
		_AlphaLightColor.rgb[0] = (float)( nAlphaLightState & 0xff);

		_nAlphaLightState = nAlphaLightState;
	}

	return nPreviousState;
}

/* Clears the active light list.*/
/* Invalidates all Light and Dark Frames.*/
/* If you simply want to temporarily disable all current lights*/
/* on the light stack while drawing your object, use*/
/* mesh3d_Cleh‹}F��������=ßÕ�ˆµõî·od#�d,g?ŸÚAì–N4�7F@�[³$�;•,Óú�JbúŒ�{{uú2p)ôÀ7‚[�HAæÍ˶�:§uò
ûãՏ�¦�œ\În�A,Åæùc͆‹Ý·<�v"]��,ŒŸr™ƒK�_iMS?`ìÃR%väQ‹Òo�[›Ð�†Z��…Nof¦µd°	#
<˜ËÛï^,ï�ën葚Ω¢'èL´Jbv?ìÒ�U"»���Ãc�¼LõcX–ûÑó`ª¼‚W¯�oؤ¼Á”à1[Ú#ˆëÊˉ�l´À%dp�z¦b©¼Ùà+HÁ‚ëîN�i Æ�Êh:ý©Z���WHh
��7•^ÃÐTͺƒ7Ï뙐^�ÅÏ�ÿÿÿÿÿÿÿÿÿÿ�%G�arLightFrame() instead.*/
void mesh3d_ClearLightList( void ) {
	_nNumLights = 0;
	_nLightListStartIndex = 0;
	_ppLightList = _apLightList;
}

/* Starts a lighting frame. The value returned can be passed to*/
/* mesh3d_ReleaseLightFrame() to restore the lighting stack state.*/
/* All lights currently in the mesh3d light buffer remain in effect*/
/* and will light objects drawn with mesh3d_Draw() or associated*/
/* functions. To clear the current frame to black, use*/
/* mesh3d_ClearLightFrame().*/
u32 mesh3d_StartLightFrame( void ) {
	return (_nNumLights | (_nLightListStartIndex<<16) );
}

/* Disables all lights in the current light frame.*/
/* Should be called only when a call to mesh3d_StartLightFrame()*/
/* has previously been made.*/
void mesh3d_ClearLightFrame( void ) {
	_nLightListStartIndex = _nNumLights;
	_ppLightList = &_apLightList[_nLightListStartIndex];
	_nNumLights = 0;
}

/* Restores the lighting stack to its state at the time nLightFrame*/
/* was sampled.*/
void mesh3d_ReleaseLightFrame( u32 nLightFrame ) {
	_nNumLights = nLightFrame & 0xffff;
	_nLightListStartIndex = nLightFrame>>16;
	_ppLightList = &_apLightList[_nLightListStartIndex];
}

/* Adds a light to the active light list.*/
/* If the light already exists in the list, simply returns (TRUE).*/
/* Returns TRUE if successful.*/
/* Returns FALSE if the light list is full.*/
BOOL mesh3d_AddLight( MidwayLight_t *pLight ) {
	u32 nNewFlags;
	u32 i;

	for( i=0; i<_nNumLights; i++ ) {
		if( _ppLightList[i] == pLight ) {
			/* Light already exists in list. Simply exit...*/
			return TRUE;
		}
	}

	switch( pLight->nType ) {
	case LIGHT_TYPE_OMNI:
		nNewFlags = LIGHT_FLAG_HASPOS;
		break;
	case LIGHT_TYPE_DIR:
	case LIGHT_TYPE_FLASH:
		nNewFlags = LIGHT_FLAG_HASDIR;
		break;
	case LIGHT_TYPE_SPOT:
		nNewFlags = LIGHT_FLAG_HASPOS|LIGHT_FLAG_HASDIR;
		break;
	default:
		XASSERT_NOW;	/* Invalid light nType field*/
	}

	if( _nNumLights < MESH3D_MAX_ACTIVE_LIGHTS ) {
		_ppLightList[_nNumLights+Ê£0@��������àQ�²Áä‘…Ž¦b��Ïü—‰}]s�ø)Måó0ž]�NÐ`hÀ4 †MCñ�ô“®Ä�”îñµË��>*ñÈÜØ�|^"kšÔ0�ÿs$D¹Š�p+0ށdl	�˜½”’Ÿ†èKõEAßÜɻ͑
��B?&ß·]¬)O�«@fÕE�®�`Á�©ñÏîÎWÝ›šÒë\}U~—íµ?����¤�,“Œè|Ê­=Q''ÓÌKc‚t¤W]é#Ín�	À’ÉL©w�¸¹Õ0ûCè¡¥4”´õ¾ø#ð¸ã�ŽÜ¢åš*ÎBýfZÑÅ�¬jVQÊ0�1Sl},…©X²�.ž�ÚKã‡�c7ñ�L‘X®[™ç=ó à'Í�ÈÐ�ÿÿÿÿÿÿÿÿÿÿ�%H�+] = pLight;
		pLight->nFlags &= ~(LIGHT_FLAG_HASPOS|LIGHT_FLAG_HASDIR);
		pLight->nFlags |= nNewFlags;
		return TRUE;
	} else {
		if( Gameloop_nFrameCounter > _nNextPrintedMsgFrameCounter ) {
			xprintferr( "WARNING: More than %d dynamic lights\nlighting an object.\n", MESH3D_MAX_ACTIVE_LIGHTS );
			_nNextPrintedMsgFrameCounter = Gameloop_nFrameCounter+30;
		}
		return FALSE;
	}
}



static void _ComputeOmniLight( void ) {
	register float fLightDist2,x,y,z,fDot;
	register MidwayLight_t *pLight;
	register s32 i;

	x = _Vtx[3];
	y = _Vtx[4];
	z = _Vtx[5];
	for(i = _nNumPosGrpLights-1; i >= 0; --i) {
		pLight = _apPosGrpLight[i];
		{
			register fLx,fLy,fLz;
			/* Calculate light vector from vertex to light (toward light)...*/
			
			fLx = pLight->ModSpacePos.p[0] - x;
			fLy = pLight->ModSpacePos.p[1] - y;
			fLz = pLight->ModSpacePos.p[2] - z;
			fLightDist2 = fLx*fLx + fLy*fLy + fLz*fLz;
			if( fLightDist2 > pLight->fModSpaceRadius2 ) 
				continue;
			fDot = _Vtx[0]*fLx + _Vtx[1]*fLy + _Vtx[2]*fLz;
			if( fDot < 0 ) 
				continue;
		}
		{
			float fInvLightDist,fRadialAtten,fIntensity;

			/* Vertex is within light's range... */
			fInvLightDist = fsrra(fLightDist2);
			fRadialAtten = (pLight->fModSpaceRadius2 - pLight->fRadialAttenuation*fLightDist2)
									* pLight->fModSpaceInvRadius2;
			if( !(pLight->bNoIncidenceAtten|_bMaterialNoIncidenceAtten) ) {
				fIntensity = fRadialAtten * fDot * fInvLightDist;
			} 
			else {
				fIntensity = fRadialAtten;
			}
			_fRGBA[0] += pLight->ScaledColor.rgb[2] * fIntensity;
			_fRGBA[1] += pLight->ScaledColor.rgb[1] * fIntensity;
			_fRGBA[2] += pLight->ScaledColor.rgb[0] * fIntensity;
		}
	}
}

static void _ComputeDirLight( void ) {
	register float fDot,x,y,z;
	register MidwayLight_t *pLight;
	register s32 i;

	x = _Vtx[0];
	y = _Vtx[1];
	z = _Vtx[2];
	for(i = _nNumDirGrpLights-1; i >=0; --i) {

		pLight = _apDirGrpLight[i];

		/* Get light vector from vertex to light (toward light)... */

		{
	å.eÐ��������¯f�Œé¸ƒ�<JÑh�6É�ŸñÁ‡P�Æi�çr^¯±&BŸ²ôj�!wð¥�MfÌGT�éòÚ®ºß6²´C�}PIkÙ�hÚ^_�Ûú®Þäo:²¢‰vƒWmg,"oð„ë�'fˆ�M"ý^…ÛÐà-�Ë�{Ã��‘ÿ�TÕ­—TGb/ÿêkÓli›Ton¶ù•Âœ©Uà«94N/FV�+£h>!­±ÒDñX²å–€-âJ^L�r’óá†Hu­«yVQ%�ÒÚÌÎqã*Çø —�÷pŽëœ<öŽÆ�óæ0ó��ÐØ6Ó=ô¬}û58ª/€h¿õæÅöäYöÃé±	Ö®~‰8?�bKFŸ›h �à�b–g@PËÍZLaû�¼S×�ÿÿÿÿÿÿÿÿÿÿ�%I�		register float fLx,fLy,fLz;
	
			fLx = pLight->ModSpaceUnitDir.p[0];
			fLy = pLight->ModSpaceUnitDir.p[1];
			fLz = pLight->ModSpaceUnitDir.p[2];
			fDot = x * fLx + y * fLy + z * fLz;
			if(fDot <= 0 ) 
				continue;
		}
		{
			register float r,g,b;

			r = pLight->ScaledColor.rgb[2];
			g = pLight->ScaledColor.rgb[1];
			b = pLight->ScaledColor.rgb[0];

			if( !(pLight->bNoIncidenceAtten|_bMaterialNoIncidenceAtten) ) {
				_fRGBA[0] += r * fDot;
				_fRGBA[1] += g * fDot;
				_fRGBA[2] += b * fDot;
			} 
			else {
				_fRGBA[0] += r;
				_fRGBA[1] += g;
				_fRGBA[2] += b;
			}
		}
	}
}

static void _ComputeSpotLight( void ) {
	float fIntensity, fDot, fDot2, fLightDist2, fInvLightDist;
	float fSpotAtten, fLx, fLy, fLz, fRx, fRy, fRz;
	float fRadialAtten, fDx, fDy, fDz, fT1, fT2, fT3, fT4;
	MidwayLight_t *pLight;
	u32 i;

	for( i=0; i<_nNumSpotGrpLights; i++ ) {
		pLight = _apSpotGrpLight[i];

		/* Calculate light vector from vertex to light (toward light)... */
		fLx = pLight->ModSpacePos.p[0] - _Vtx[3];
		fLy = pLight->ModSpacePos.p[1] - _Vtx[4];
		fLz = pLight->ModSpacePos.p[2] - _Vtx[5];

		fLightDist2 = fLx*fLx + fLy*fLy + fLz*fLz;
		if( fLightDist2 > pLight->fModSpaceRadius2 ) continue;

		/* Vertex is within light's range... */
		fDot = _Vtx[0]*fLx + _Vtx[1]*fLy + _Vtx[2]*fLz;
		if( fDot <= 0.00001f ) continue;

		/* Calculate attenuation based on spotlight direction... */
		fDx = pLight->ModSpaceUnitDir.p[0];
		fDy = pLight->ModSpaceUnitDir.p[1];
		fDz = pLight->ModSpaceUnitDir.p[2];
		fDot2 = fDx*fLx + fDy*fLy + fDz*fLz;
		if( fDot2 <= 0.00001f ) continue;

		fInvLightDist = 1.0f / xmath_sqrt( fLightDist2 );

		fDot2 *= fInvLightDist;
		switch( pLight->nSpotFocusCode ) {
		case SPOTLIGHT_FOCUS_WIDEST:
			fT1 = fDot2*fDot2*fDot2;
			break;
		case SPOTLIGHT_FOCUS_WIDER:
			fT2 = fDot2*fDot2*fDot2;
			fT1 = fT2*fT2;
			break;
		case SPOTLIGHT_FOCUS_WIDE:
			fT2 = fDot2*fDot2*fDot2;
			fT1 = fT2*fT2*fT2;
			break;
		case SPOTLIGHT_

wpr_select.c

Found at 1xF15AAD0:

/*////////////////////////////////////////////////////////////////////////////////////*/
/* wpr_select.c - */
/**/
/* Author: Michael Starich   */
/*////////////////////////////////////////////////////////////////////////////////////*/
/* THIS CODE IS PROPRIETARY PROPERTY OF MIDWAY HOME ENTERTAINMENT.*/
/* Copyright (c) 1998*/
/**/
/* The contents of this file may not be disclosed to third*/
/* parties, copied or duplicated in any form, in whole or in part,*/
/* without the prior written permission of Midway Home Entertainment.*/
/*////////////////////////////////////////////////////////////////////////////////////*/
/* Modification History:*/
/**/
/* Date     Who         Description*/
/* -------- ----------  --------------------------------------------------------------*/
/* 03/30/98 Starich     Created.*/
/*////////////////////////////////////////////////////////////////////////////////////*/
#include "gendefs.h"
#include "wpr_select.h"
#include "wpr_memmgr.h"
#include "wpr_defs.h"
#include "gutil.h"
#include "text.h"
#include "controls.h"
#include "tracks.h"
#include "boats.h"
#include "glcount.h"
#include "xmath.h"
#include "obsys.h"
#include "xfm.h"
#include "terrain.h"
#include "waterspray.h"
#include "player.h"
#include "paths.h"
#include "mesh3d.h"
#include "particle.h"
#include "material.h"
#include "worldob.h"
#include "sky.h"
#include "audio.h"
#include "soundcall.h"
#include "fx.h"
#include "fx_splash.h"
#include "fx_particles.h"
#include "gameloop.h"
#include "bonuskeys.h"
#include "statemgr.h"

#if TARGET==ULTRA64	/* Extra includes */
#include "u64draw.h"
#include "u64control.h"
#endif	/*ULTRA64*/

/*====================*/
/* private definitions*/

#define _SELECT_FILE_LOGGING_ON		0


#define _FIRE_VOLUME					200
#define _BLING_SELECT_SOUND_VOLUME		255

#define _OPTION_SLOTS					6
#define _DEFAULT_OPTION_SLOT			2


//#define _TRACK_SLOTS					10
#define _TRACK_SLOTS					12
#define _DEFAULT_TRACK_SLOT				3
#define _NUM_FIRE_FRAMES				10
#define _MAX_SELECTIONS_PER_OBJECT		2

#define _BOAT_SLOTS						13	/* NUMBER OF SELECTABLE BOATS AT ANY ONE TIME*/
#define _NUM_SELECTABLE_BOATS			_BOAT_SLOTS	/* how many boats are there to select from (some are secrets)*/
#define _DEFAULT_BOAT_SLOT				4
#define _DEFAULT_BOAT_DIFF_SLOT			1
#define _MAX_SCREEN_AREA_SUM			(512.0f * 400.0f * 10.0f)
#if TARGET==ULTRA64	/*Reduce waterspray polygon limie for select screen*/
#define _MAX_NUM_WATERSPRAY_PARTICLES	50
#else	/*ULTRA64*/
#define _MAX_NUM_WATERSPRAY_PARTICLES	500
#endif	/*ULTRA64*/
/* screen placement (ortho space, center of screen origin)*/
#define _TRACK_SCREEN_X					0.0f
#define _TRACK_SCREEN_Y					-20.0f
#define _TRACK_FRAME_SHADOW_X			( _TRACK_SCREEN_X + 1.0f )
#define _TRACK_FRAME_SHADOW_Y			( _TRACK_SCREEN_Y - 2.0f )
#define _TRACK_OVAL_SHADOW_X			5.0f		
#define _TRACK_OVAL_SHADOW_Y			-4.0f	
#define _CHOOSE_TRACK_Y					172.0f
#define _CHOOSE_TRACK1_X				-60.0f
#define _CHOOSE_TRACK2_X				76.0f
#define _TRACK_COLUMN_1					-185.0f	/* left most col*/
#define _TRACK_COLUMN_2					-185.0f	/* 2nd from left*/
#define _TRACK_COLUMN_3					-63.0f	/* 3rd from left*/
#define _TRACK_COLUMN_4					63.0f	/* 4th from left*/
#define _TRACK_COLUMN_5					180.0f	/* 5th from the left*/
#define _TRACK_COLUMN_6					180.0f	/* right most col*/
#define _TRACK_ROW_1					130.0f	/* top row */
#define _TRACK_ROW_2					98.0f	/* 4th from bottom row*/
#define _TRACK_ROW_3					5.0f	/* 3rd from bottom row*/
#define _TRACK_ROW_4					-49.0f	/* 2nd from bottom row*/
#define _TRACK_ROW_5					-124.0f	/* bottom row*/
#define _TRACK_ROW_6					-155.0f	/* bottom bottom row*/

#define _CHOOSE_BOAT_Y					172.0f
#define _CHOOSE_BOAT1_X					-52.0f
#define _CHOOSE_BOAT2_X					72.0f
#define _BOAT_FRAME_X					4.0f
#define _BOAT_FRAME_Y					-39.0f
#define _BOAT_SHADOW_X					0.0f
#define _BOAT_SHADOW_Y					-6.0f
#define _BOAT_NAME_X					0.0f
#define _BOAT_NAME_Y					-102.0f

#define _BOAT_COLUMN_1					-201.0f	/* left most col*/
#define _BOAT_COLUMN_2					-117.0f	/* 2nd from left*/
#define _BOAT_COLUMN_3					-4.0f	/* 3rd from left*/
#define _BOAT_COLUMN_4					118.0f	/* 4th from left*/
#define _BOAT_COLUMN_5					201.0f	/* 5th from left*/

#define _BOAT_ROW_1						-120.0f	/* bottom row*/
#define _BOAT_ROW_2						-37.0f	/* 2nd from bottom row*/
#define _BOAT_ROW_3						34.0f	/* 3rd from bottom row*/
#define _BOAT_ROW_4						123.0f	/* top row */


#define _TEXT_OPTION_X					0
#define _TEXT_OPTION_Y					162.0f

#define _ICON_BUTT_X					200.0f		
#define _ICON_BUTT_Y					162.0f		
#define _ICON_ANALOG_X					-200.0f		
#define _ICON_ANALOG_Y					162.0f		
#define _ICON_GAMEBAR_X					-4.0f		
#define _ICON_GAMEBAR_Y					102.0f					
#define _ICON_CONFIGBAR_X				-199.0f		
#define _ICON_CONFIGBAR_Y				-43.0f					
#define _ICON_OPTIONBAR_X				201.0f		
#define _ICON_OPTIONBAR_Y				-43.0f					
#define _ICON_CONFIGCTRL_X				-189.0f
#define _ICON_CONFIGCTRL_Y				10.0f
#define _ICON_VMS_X						-189.0f
#define _ICON_VMS_Y						-80.0f
#define _ICON_SOUNDVOL_X				191.0f			
#define _ICON_SOUNDVOL_Y				10.0f		
#define _ICON_HIGHSCORES_X				191.0f			
#define _ICON_HIGHSCORES_Y				-80.0f		
#define _ICON_ONEPLAYER_X				-120.0f			
#define _ICON_ONEPLAYER_Y				122.0f		
#define _ICON_TWOPLAYER_X				100.0f			
#define _ICON_TWOPLAYER_Y				132.0f		

typedef struct
{
	BOOL8 bEnabled;
	BOOL8 bCurrent;
	u8 nNumSelections;
	u8 nCurrentSelection;
	s16 anTrackNum[_MAX_SELECTIONS_PER_OBJECT];
	u16 nDifficultyBar;
	u16 nArrayIndex;
	u32 anSelectionSound[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apScreenShot[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apSelectedIcon[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apUnSelectedIcon[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apTitle[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *pScreenShotFrameShadow;
	Mesh3d_t *pIconShadow;
	f32 fMinSteeringRange;
	f32 fMaxSteeringRange;
	f32 fX;
	f32 fY;
	u16 bBonusTrack;		
} TrackSelectionObject_t;

typedef struct
{
	BOOL8 bEnabled;
	BOOL8 bCurrent;
	u8 nNumSelections;
	u8 nCurrentSelection;
	s16 anBoatNum[_MAX_SELECTIONS_PER_OBJECT];
	u16 nDifficultyBar;
	u16 nArrayIndex;
	Player_t *apPlayer[_MAX_SELECTIONS_PER_OBJECT];
	WorldOb_t *apWorldOb[_MAX_SELECTIONS_PER_OBJECT];
	Motion_t *apMotion[_MAX_SELECTIONS_PER_OBJECT];
	u32 anSelectionSound[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apBoatIcon[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apBoatShadow[_MAX_SELECTIONS_PER_OBJECT];
	Mesh3d_t *apTitle[_MAX_SELECTIONS_PER_OBJECT];	
	f32 fMinSteeringRange;
	f32 fMaxSteeringRange;
	f32 fX;
	f32 fY;
} BoatSelectObject_t;


typedef struct
{
	BOOL bEnabled;
	BOOL bCurrent;
	u32 nNumSelections;
	u32 nCurrentSelection;
	u32 nArrayIndex;
	Mesh3d_t *pIcon;
	f32 fMinSteeringRange;
	f32 fMaxSteeringRange;
	f32 fX;
	f32 fY;
} OptionSelectObject_t;



typedef enum
{
	_CODES_NO_AI			= 0x1,
	_CODES_NO_CATCHUP		= 0x2,
	_CODES_ADVANCED_BOATS	= 0x4,
	_CODES_SECRET_TRACKS	= 0x8,
	_CODES_SECRET_BOATS		= 0x10,
			
	_CODES_NONE = 0
} SpecialCodes_t;

/*=================*/
/* public variables*/

/*==================*/
/* private variables*/

static BOOL _aTrackDiffBarEnabled[5]={
	FALSE, 
	FALSE, 
	TRUE, 
	FALSE, 
	FALSE, 
};
const static Vec2_t _aTrackDiffBar[5] = {
	-185.0f,	-158.0f,/* BONUS1*/
	-186.0f,	-19.0f,	/* YELLOW*/
	0.0f,		0.0f,	/* BLUE (not used, see _aTrackBlueDiffBar)*/
	178.0f,		-21.0f,	/* RED*/
	180.0f,		-158.0f,/* BONUS2*/
};
const static Vec2_t _aTrackBlueDiffBar[3] = {
	-75.0f,	103.0f,	/* LEFT*/
	72.0f,	103.0f,	/* RIGHT*/
	0.0f,	78.0f,	/* EASY*/
};
const static Vec2_t _aBoatDiffBar[3] = {
	-199.0f,	-43.0f,	/* YELLOW*/
	-4.0f,		102.0f,	/* BLUE*/
	201.0f,		-43.0f,	/* RED*/
};

static BOOL _aBoatDiffBarsEnabled[3]={
	FALSE, 
	TRUE, 
	FALSE	
};

const static Vec2_t _afBoatYCamLookup[_NUM_SELECTABLE_BOATS] = {
	18.0f, 6.0f, /* BOATS_TYPE_BANSHEE*/
	18.0f, 3.0f, /* BOATS_TYPE_TIDAL_BLADE*/
	18.0f, 4.0f, /* BOATS_TYPE_RAD_HAZARD*/
	18.0f, 6.0f, /* BOATS_TYPE_MISS_BEHAVE*/
	16.0f, 5.0f, /* BOATS_TYPE_DAMN_THE_TORPEDOES*/
	18.0f, 2.0f, /* BOATS_TYPE_CUT_THROAT*/
	18.0f, 4.0f, /* BOATS_TYPE_RAZORBACK*/
	18.0f, 5.0f, /* BOATS_TYPE_THRESHER*/
	18.0f, 6.0f, /* BOATS_TYPE_MIDWAY*/
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	18.0f, 6.0f, /* BOATS_TYPE_SEADOG*/
	26.0f, 7.0f, /* BOATS_TYPE_COP*/
	28.0f, 13.0f,/* BOATS_TYPE_HOVERCRAFT*/
	26.0f, 4.0f, /* BOATS_TYPE_TINY		*/
#endif	/*ULTRA64*/
};

const static Vec2_t _afBoatZoomCamLookup[_NUM_SELECTABLE_BOATS] = {
	7.0, 28.0f, /* BOATS_TYPE_BANSHEE*/
	5.0, 35.0f, /* BOATS_TYPE_TIDAL_BLADE*/
	7.0, 28.0f, /* BOATS_TYPE_RAD_HAZARD*/
	5.0, 28.0f, /* BOATS_TYPE_MISS_BEHAVE*/
	7.0, 33.0f, /* BOATS_TYPE_DAMN_THE_TORPEDOES*/
	5.0, 28.0f, /* BOATS_TYPE_CUT_THROAT*/
	3.0, 26.0f, /* BOATS_TYPE_RAZORBACK*/
	4.0, 32.0f, /* BOATS_TYPE_THRESHER*/
	7.0, 32.0f, /* BOATS_TYPE_MIDWAY*/
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	7.0, 26.0f, /* BOATS_TYPE_SEADOG*/
	7.0, 50.0f, /* BOATS_TYPE_COP*/
	9.0, 41.0f, /* BOATS_TYPE_HOVERCRAFT*/
	5.0, 65.0f, /* BOATS_TYPE_TINY		*/
#endif	/*ULTRA64*/
};

#if TARGET==ULTRA64	/* Scale boat icons offsets */
#define	BSELOX(var)	(((var)*0.2)/2.0)
#define	BSELOY(var)	(((var)*0.2)/2.0)

const static f32 _afBoatScaleOffsetX[] = {
	-BSELOX(98),	/* BOATS_TYPE_THRESHER */
	-BSELOX(83),	/* BOATS_TYPE_TIDAL_BLADE */
	-BSELOX(79),	/* BOATS_TYPE_BANSHEE */
	-BSELOX(81),	/* BOATS_TYPE_DAMN_THE_TORPEDOES */
	-BSELOX(39),	/* BOATS_TYPE_MIDWAY */
	-BSELOX(80),	/* BOATS_TYPE_MISS_BEHAVE */
	-BSELOX(81),	/* BOATS_TYPE_CUT_THROAT */
	-BSELOX(79),	/* BOATS_TYPE_RAD_HAZARD */
	-BSELOX(82),	/* BOATS_TYPE_RAZORBACK	 */
};
const static f32 _afBoatScaleOffsetY[] = {
	-BSELOY(47),	/* BOATS_TYPE_THRESHER */
	-BSELOY(37),	/* BOATS_TYPE_TIDAL_BLADE */
	-BSELOY(32),	/* BOATS_TYPE_BANSHEE */
	-BSELOY(26),	/* BOATS_TYPE_DAMN_THE_TORPEDOES */
	-BSELOY(33),	/* BOATS_TYPE_MIDWAY */
	-BSELOY(34),	/* BOATS_TYPE_MISS_BEHAVE */
	-BSELOY(30),	/* BOATS_TYPE_CUT_THROAT */
	-BSELOY(34),	/* BOATS_TYPE_RAD_HAZARD */
	-BSELOY(49),	/* BOATS_TYPE_RAZORBACK	 */
};
#endif	/*ULTRA64*/

/* MISC VARS USED FOR ALL MODES*/
static WprSelectStage_t _StageNum;				/* what selection mode are we in*/
static BOOL				_bAllowSelectionChanges;/* should we allow the current slot to be changed*/
static BOOL				_bTexturesLoaded;		/* were we able to load all needed artwork, if not use old wrapper text system*/
static f32				_fScreenFadeIntensity;
static u32				_nDelayVoice;			/* are we waiting to play a voice selection*/
static u32				_nDelayedVoiceSelection;/* what sample are we waiting to play*/
static f32				_fFlameScale;			/* what is the current flame scale;*/
static BOOL				_bNoAiCodeEntered;		/* has the no ai code been satisfied*/
static u32				_nNoAiCodeState;		/* what state is the no ai code in*/
static BOOL				_bNoCatchUpCodeEntered;	/* has the no catchup code been satisfied*/
static u32				_nNoCatchUpCodeState;	/* what state is the no catchup code in*/
static BOOL				_bAdvancedBoatsCodeEntered; /* has the code or requirement been met to select advanced boats*/
static u32				_nTrackCodeCount;
static u32				_nTrackCodeState;
static u32				_nBoatCodeCount;
static u32				_nBoatCodeState;

static u32				_nCurrentBar = 1;

/* TRACK SELECTION VARS*/
static TrackSelectionObject_t *_pCurrentSelectedTrack;
static TrackSelectionObject_t _aTrackSelections[_TRACK_SLOTS];

/* BOAT SELECTION VARS*/

static BoatSelectObject_t *_pCurrentSelectedBoat;
static BoatSelectObject_t _aBoatSelections[_BOAT_SLOTS];

/* OPTION SELECTION VARS */

static OptionSelectObject_t *_pCurrentSelectedOption;
static OptionSelectObject_t _aOptionSelections[_OPTION_SLOTS];


static u32				_nBoatSlot;				/* which boat slot is currently selected (index into our table for actual boat)*/
static u32				_nBoatDiff;				/* what difficulty slot is the currently selected boat (index into our table)*/
static Player_t			_aPlayer[_NUM_SELECTABLE_BOATS];	
static WorldOb_t		_aWorldOb[_NUM_SELECTABLE_BOATS];	
static Motion_t			_aMotion[_NUM_SELECTABLE_BOATS];	
static Cam_t			_Camera;						
static u32				_nCamAngle;					
static Vec3_t			_CamPos;				
static Vec3_t			_CamLook;					
static PathLoopInstance_t _aLoopPath[_NUM_SELECTABLE_BOATS];
static Vec2_t			_aPathPos[_NUM_SELECTABLE_BOATS];	
static u32				_naPathIndex[_NUM_SELECTABLE_BOATS];
static u32				_nCounter;
static BOOL				_bSpecialFlashOn;
static f32				_afBoatsTopEnd[_NUM_SELECTABLE_BOATS];
/* MESHES FOR BOTH MODES*/
static Mesh3d_t *_pTrackBG;
static Mesh3d_t *_pBoatBG;
static Mesh3d_t *_pText_ChooseA;
static Mesh3d_t *_pText_Track;
static Mesh3d_t *_pText_Boat;
static Mesh3d_t *_pText_Numbers[10];
static Mesh3d_t *_pText_Select;
static Mesh3d_t *_pText_Accept;
static Mesh3d_t *_pText_Difficulty[TRACKS_DIFFICULTY_COUNT];
static Mesh3d_t *_pIcon_Wheel;
static Mesh3d_t *_pIcon_Wheel_Shadow;
static Mesh3d_t *_pIcon_Throttle;
static Mesh3d_t *_pIcon_Arrow;
static Mesh3d_t	*_pOffFrame[4];
static Mesh3d_t *_pOnFrame[4];
static Mesh3d_t *_pTrackFrameShadow;
static Mesh3d_t *_pTrackDiffBars[5];
static Mesh3d_t *_pTrackScreens[TRACKS_COUNT];
static Mesh3d_t *_pText_TrackNames[TRACKS_COUNT];
static Mesh3d_t *_pTrackShadows;
static Mesh3d_t *_pTrackTextEasy;
static Mesh3d_t *_pLeftBlueBar;
static Mesh3d_t *_pLock;
static Mesh3d_t *_pHardTrackText;
static Mesh3d_t *_pBoatPics[_NUM_SELECTABLE_BOATS];
static Mesh3d_t *_pBoatShadows[_NUM_SELECTABLE_BOATS];
static Mesh3d_t *_pBoatDiffBars[3];
static Mesh3d_t *_pText_BoatNames[_NUM_SELECTABLE_BOATS];
static Mesh3d_t *_pBoatFrame;
static Mesh3d_t *_pBoatFrameShadow;
/*static Mesh3d_t *_pComingSoon;*/
static Mesh3d_t *_pFlame;
static TexDef_t *_pFireCell[_NUM_FIRE_FRAMES];
static Mesh3d_t *_pNoAiIcon;
static Mesh3d_t *_pNoCatchUpIcon;


static Mesh3d_t *_pBoatBG;
static Mesh3d_t *_pIcon_Analog;
static Mesh3d_t *_pIcon_Button;
static Mesh3d_t *_pIcon_Boats;
static Mesh3d_t *_pIcon_Vms;		
static Mesh3d_t *_pIcon_Volume;		
static Mesh3d_t *_pIcon_SplitScreen;
static Mesh3d_t *_pIcon_PuruPuru;
static Mesh3d_t *_pIcon_ConfigBar;	
static Mesh3d_t *_pIcon_GameBar;	
static Mesh3d_t *_pIcon_ConfigCtrl;
static Mesh3d_t *_pIcon_OptionBar;	
static Mesh3d_t *_pIcon_HighScores;	
static Mesh3d_t *_pIcon_OnePlayer;
static Mesh3d_t *_pIcon_TwoPlayer;
static Mesh3d_t *_pText_Option;
static Mesh3d_t *_pText_ConfigCtrl;
static Mesh3d_t *_pText_OnePlayer;
static Mesh3d_t *_pText_TwoPlayer;
static Mesh3d_t *_pText_ChooseTrack;
static Mesh3d_t *_pText_ConfigRumble;
static Mesh3d_t *_pText_LoadSave;
static Mesh3d_t *_pText_MusicSfx;
static Mesh3d_t *_pText_SplitScreen;
static Mesh3d_t *_pText_HighScores;
static Mesh3d_t *_pText_ConfigRumble;
static Mesh3d_t *_pText_Option1;
static Mesh3d_t *_pText_SelectText;
static Mesh3d_t *_pText_AcceptText;

static Mesh3d_t *_LeftGreenBar;
static Mesh3d_t *_MiddleGreenBar;
static Mesh3d_t *_RightGreenBar;
static Mesh3d_t *_RedLockIcon;
static Mesh3d_t *_BlueLockIcon;
static Mesh3d_t *_YellowLockIcon;
static Mesh3d_t *_GreenLockIcon;


static ObsysLoadDef_t aOptionsLoadTable[] = {

// Background and frame
	(void *)&_pBoatFrame,			"GWWFRAMBSH1",
	(void *)&_pBoatFrameShadow,		"GWWFRAMSHH2",	
	(void *)&_pBoatBG,				"GWWBOASBGH0",
// Icons and text
	(void *)&_pIcon_Analog,			"GWWANALICH1",	
	(void *)&_pIcon_Button,			"GWWABUTICH0",	
	(void *)&_pIcon_Boats,			"GWWTWOPICH1",	
	(void *)&_pIcon_Vms,			"GWWVMSSICH1",	
	(void *)&_pIcon_Volume,			"GWWVOLUICH1",	
	(void *)&_pIcon_SplitScreen,	"GWWSPLIICH1",	
	(void *)&_pIcon_PuruPuru,		"GWWPURUICH0",	
	(void *)&_pIcon_ConfigBar,		"GWWPBARINH1",	
	(void *)&_pIcon_GameBar,		"GWWPBARBEH1",	
	(void *)&_pIcon_OptionBar,		"GWWPBARADH1",	
	(void *)&_pIcon_ConfigCtrl,		"GWWJOYPICH1",
	(void *)&_pIcon_HighScores,		"GWWCHAMICH1",
	(void *)&_pIcon_OnePlayer,		"GWWDAMNICH1",
	(void *)&_pIcon_TwoPlayer,		"GWWDAMIICH2",
	(void *)&_pText_Option,			"GWWHYDR__H1",	
	(void *)&_pText_Option1,		"GWWTHUN__H1",	
	(void *)&_pText_ConfigCtrl,		"GWWTEXA__H1",	
	(void *)&_pText_OnePlayer,		"GWWTEXB__H1",	
	(void *)&_pText_TwoPlayer,		"GWWTEXC__H1",	
	(void *)&_pText_ChooseTrack,	"GWWTEXD__H1",	
	(void *)&_pText_ConfigRumble,	"GWWTEXE__H1",	
	(void *)&_pText_LoadSave,		"GWWTEXF__H1",	
	(void *)&_pText_MusicSfx,		"GWWTEXG__H1",	
	(void *)&_pText_SplitScreen,	"GWWTEXH__H1",	
	(void *)&_pText_HighScores,		"GWWTEXI__H1",	
	(void *)&_pText_ConfigRumble,	"GWWTEXJ__H1",	
	(void *)&_pText_SelectText,		"GWWSELE__H1",	
	(void *)&_pText_AcceptText,		"GWWACCE__H1",	
	NULL,		NULL
};

static ObsysLoadDef_t aBoatSelectLoadTable[] = {
	/* BACKGROUNDS*/
	(void *)&_pBoatBG,				"GWWBOASBGH0",
	/* MISC*/
#if TARGET!=ULTRA64	/* No track select shadows */
	(void *)&_pText_ChooseA,		"GWWCHOO__H1",	
	(void *)&_pText_Boat,			"GWWBOAT__H1",
#endif	/*ULTRA64*/
	(void *)&_pText_Numbers[0],		"GWWTIME__H0",	/* 0*/
	(void *)&_pText_Numbers[1],		"GWWTIME__H1",	/* 1*/
	(void *)&_pText_Numbers[2],		"GWWTIME__H2",	/* 2*/
	(void *)&_pText_Numbers[3],		"GWWTIME__H3",	/* 3*/
	(void *)&_pText_Numbers[4],		"GWWTIME__H4",	/* 4*/
	(void *)&_pText_Numbers[5],		"GWWTIME__H5",	/* 5*/
	(void *)&_pText_Numbers[6],		"GWWTIME__H6",	/* 6*/
	(void *)&_pText_Numbers[7],		"GWWTIME__H7",	/* 7*/
	(void *)&_pText_Numbers[8],		"GWWTIME__H8",	/* 8*/
	(void *)&_pText_Numbers[9],		"GWWTIME__H9",	/* 9*/
	(void *)&_pText_SelectText,		"GWWSELE__H1",
	(void *)&_pText_AcceptText,		"GWWACCE__H1",
	(void *)&_pText_Difficulty[0],	"GWWNOVI__H1", /* NOVICE*/
	(void *)&_pText_Difficulty[1],	"GWWBEGI__H1", /* EASY*/
	(void *)&_pText_Difficulty[2],	"GWWINTE__H1", /* MEDIUM*/
	(void *)&_pText_Difficulty[3],	"GWWADVA__H1", /* HARD*/
	(void *)&_pText_Difficulty[4],	"GWWEXPE__H1", /* EXPERT*/
	(void *)&_pIcon_Wheel,			"GWWWHEEICH1",
	(void *)&_pIcon_Wheel_Shadow,	"GWWWHEESHH1",
	(void *)&_pIcon_Throttle,		"GWWTHOTICH0",
	(void *)&_pIcon_Arrow,			"GWWARRO__H1",

/*	(void *)&_pComingSoon,			"GWWTEXT_XHX",	// coming soon*/
	(void *)&_pFlame,				"GWWSELEFLH0",	/* Flame*/
	(void *)&_pFireCell[0],			"T_FFIRE_A20",
	(void *)&_pFireCell[1],			"T_FFIRE_A21",
	(void *)&_pFireCell[2],			"T_FFIRE_A22",
	(void *)&_pFireCell[3],			"T_FFIRE_A23",
	(void *)&_pFireCell[4],			"T_FFIRE_A24",
	(void *)&_pFireCell[5],			"T_FFIRE_A25",
	(void *)&_pFireCell[6],			"T_FFIRE_A26",
	(void *)&_pFireCell[7],			"T_FFIRE_A27",
	(void *)&_pFireCell[8],			"T_FFIRE_A28",
	(void *)&_pFireCell[9],			"T_FFIRE_A29",

	(void *)&_pNoAiIcon,			"GWWICONAIH1",	/* no ai icon*/
	(void *)&_pNoCatchUpIcon,		"GWWICONNCH1",	/* no catchup code icon*/
	
	/* BOAT SELECT	*/
		/* BOAT ICONS*/
	(void *)&_pBoatPics[BOATS_TYPE_BANSHEE],				"GWWBANSICH1",
	(void *)&_pBoatPics[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDAICH1",
	(void *)&_pBoatPics[BOATS_TYPE_RAD_HAZARD],				"GWWRADHICH1",
	(void *)&_pBoatPics[BOATS_TYPE_MISS_BEHAVE],			"GWWMISSICH1",	
	(void *)&_pBoatPics[BOATS_TYPE_DAMN_THE_TORPEDOES],		"GWWDAMNICH1",
	(void *)&_pBoatPics[BOATS_TYPE_CUT_THROAT],				"GWWCUTTICH1",
	(void *)&_pBoatPics[BOATS_TYPE_RAZORBACK],				"GWWRAZRICH1",
	(void *)&_pBoatPics[BOATS_TYPE_THRESHER],				"GWWTHREICH0",
	(void *)&_pBoatPics[BOATS_TYPE_MIDWAY],					"GWWMIDWICH0",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pBoatPics[BOATS_TYPE_SEADOG],					"GWWSEADICH1",
	(void *)&_pBoatPics[BOATS_TYPE_COP],					"GWWCOPBICH1",
	(void *)&_pBoatPics[BOATS_TYPE_HOVERCRAFT],				"GWWHOVRICH1",
	(void *)&_pBoatPics[BOATS_TYPE_TINY],					"GWWTINYICH1",	
#endif	/*ULTRA64*/
		/* BOAT SHADOWS*/
#if TARGET!=ULTRA64	/* No boat shadows and easy/medium/hard icons */
	(void *)&_pBoatShadows[BOATS_TYPE_BANSHEE],				"GWWBANSSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDASHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_RAD_HAZARD],			"GWWRADHSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_MISS_BEHAVE],			"GWWMISSSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_DAMN_THE_TORPEDOES],	"GWWDAMNSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_CUT_THROAT],			"GWWCUTTSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_RAZORBACK],			"GWWRAZRSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_THRESHER],			"GWWTHRESHH0",
	(void *)&_pBoatShadows[BOATS_TYPE_MIDWAY],				"GWWMIDWSHH0",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pBoatShadows[BOATS_TYPE_SEADOG],				"GWWSEADSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_COP],					"GWWCOPBSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_HOVERCRAFT],			"GWWHOVRSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_TINY],				"GWWTINYSHH1",	
#endif	/*ULTRA64*/
		/* COLORED DIFFICULTY BARS*/
	(void *)&_pBoatDiffBars[0],								"GWWPLATINH1",	/* YELLOW	*/
	(void *)&_pBoatDiffBars[1],								"GWWPLATBEH1",	/* BLUE	*/
	(void *)&_pBoatDiffBars[2],								"GWWPLATADH1",	/* RED	*/
#endif	/*ULTRA64*/
		/* BOAT NAMES*/
	(void *)&_pText_BoatNames[BOATS_TYPE_BANSHEE],				"GWWBANS__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDA__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_RAD_HAZARD],			"GWWRADH__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_MISS_BEHAVE],			"GWWMISS__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_DAMN_THE_TORPEDOES],	"GWWDAMN__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_CUT_THROAT],			"GWWCUTT__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_RAZORBACK],			"GWWRAZO__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_THRESHER],				"GWWTHSH__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_MIDWAY],				"GWWMIDW__H1",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pText_BoatNames[BOATS_TYPE_SEADOG],				"GWWSEAD__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_COP],					"GWWCOPB__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_HOVERCRAFT],			"GWWHOVR__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_TINY],					"GWWTINY__H1",	
#endif	/*ULTRA64*/
		/* BOAT FRAME	*/
	(void *)&_pBoatFrame,			"GWWFRAMBSH1",
		/* BOAT FRAME SHADOW*/
#if TARGET!=ULTRA64	/* No boat frame shadow */
	(void *)&_pBoatFrameShadow,		"GWWFRAMSHH2",	
#endif	/*ULTRA64*/
	(void *)&_pIcon_Analog,			"GWWANALICH1",	
	(void *)&_pIcon_Button,			"GWWABUTICH0",	
	NULL,							NULL,

};

static ObsysLoadDef_t aTrackSelectLoadTable[] = {
	/* BACKGROUNDS*/
	(void *)&_pTrackBG,				"GWWTRASBGH1",
	/* MISC*/
	(void *)&_pText_ChooseA,		"GWWCHOO__H1",	
	(void *)&_pText_Track,			"GWWTRAC__H1",
	(void *)&_pText_Numbers[0],		"GWWTIME__H0",	/* 0*/
	(void *)&_pText_Numbers[1],		"GWWTIME__H1",	/* 1*/
	(void *)&_pText_Numbers[2],		"GWWTIME__H2",	/* 2*/
	(void *)&_pText_Numbers[3],		"GWWTIME__H3",	/* 3*/
	(void *)&_pText_Numbers[4],		"GWWTIME__H4",	/* 4*/
	(void *)&_pText_Numbers[5],		"GWWTIME__H5",	/* 5*/
	(void *)&_pText_Numbers[6],		"GWWTIME__H6",	/* 6*/
	(void *)&_pText_Numbers[7],		"GWWTIME__H7",	/* 7*/
	(void *)&_pText_Numbers[8],		"GWWTIME__H8",	/* 8*/
	(void *)&_pText_Numbers[9],		"GWWTIME__H9",	/* 9*/
	(void *)&_pText_SelectText,		"GWWSELE__H1",
	(void *)&_pText_AcceptText,		"GWWACCE__H1",
	(void *)&_pText_Difficulty[0],	"GWWNOVI__H1", /* NOVICE*/
	(void *)&_pText_Difficulty[1],	"GWWBEGI__H1", /* EASY*/
	(void *)&_pText_Difficulty[2],	"GWWINTE__H1", /* MEDIUM*/
	(void *)&_pText_Difficulty[3],	"GWWADVA__H1", /* HARD*/
	(void *)&_pText_Difficulty[4],	"GWWEXPE__H1", /* EXPERT*/
	(void *)&_pIcon_Wheel,			"GWWWHEEICH1",
	(void *)&_pIcon_Wheel_Shadow,	"GWWWHEESHH1",
	(void *)&_pIcon_Throttle,		"GWWTHOTICH0",
	(void *)&_pIcon_Arrow,			"GWWARRO__H1",
	(void *)&_pFlame,				"GWWSELEFLH0",	/* Flame*/
	(void *)&_pFireCell[0],			"T_FFIRE_A20",
	(void *)&_pFireCell[1],			"T_FFIRE_A21",
	(void *)&_pFireCell[2],			"T_FFIRE_A22",
	(void *)&_pFireCell[3],			"T_FFIRE_A23",
	(void *)&_pFireCell[4],			"T_FFIRE_A24",
	(void *)&_pFireCell[5],			"T_FFIRE_A25",
	(void *)&_pFireCell[6],			"T_FFIRE_A26",
	(void *)&_pFireCell[7],			"T_FFIRE_A27",
	(void *)&_pFireCell[8],			"T_FFIRE_A28",
	(void *)&_pFireCell[9],			"T_FFIRE_A29",
	/* TRACK SELECT*/
		/* COLORED OVALS OFF*/
	(void *)&_pOffFrame[0],							"GWWICO_YLH1",	/* YELLOW	*/
	(void *)&_pOffFrame[1],							"GWWICO_BUH1",	/* BLUE	*/
	(void *)&_pOffFrame[2],							"GWWICO_RDH1",	/* RED*/
	(void *)&_pOffFrame[3],							"GWWICO_GRH1",	/* BONUS*/
		/* COLORED OVALS ON	*/
	(void *)&_pOnFrame[0],							"GWWICO_YLH2",	/* YELLOW*/
	(void *)&_pOnFrame[1],							"GWWICO_BUH2",	/* BLUE	*/
	(void *)&_pOnFrame[2],							"GWWICO_RDH2",	/* RED*/
	(void *)&_pOnFrame[3],							"GWWICO_GRH2",	/* BONUS*/
		/* FRAME SHADOW*/
	(void *)&_pTrackFrameShadow,					"GWWFRAMSHH1",
		/* COLORED DIFFICULTY BARS*/
	(void *)&_pTrackDiffBars[0],					"GWWBONUPTH1",	/* BONUS1	*/
	(void *)&_pTrackDiffBars[1],					"GWWPLATINH0",	/* YELLOW	*/
	(void *)&_pTrackDiffBars[2],					"GWWBEGIPTHL",	/* BLUE	*/
	(void *)&_pTrackDiffBars[3],					"GWWPLATADH0",	/* RED*/
	(void *)&_pTrackDiffBars[4],					"GWWBONUPTH2",	/* BONUS2*/
		/* SCREEN SHOTS*/
	(void *)&_pTrackScreens[TRACKS_CHINA],			"GWWTRS_CHH0",
	(void *)&_pTrackScreens[TRACKS_SHIPGRAVEYARD],	"GWWTRS_SGH0",
	(void *)&_pTrackScreens[TRACKS_LAKEPOWELL],		"GWWTRS_PWH0",
	(void *)&_pTrackScreens[TRACKS_GREECE],			"GWWTRS_GRH0",
	(void *)&_pTrackScreens[TRACKS_AMAZON],			"GWWTRS_SPH0",
	(void *)&_pTrackScreens[TRACKS_ARTIC],			"GWWTRS_ACH0",
	(void *)&_pTrackScreens[TRACKS_VENICE],			"GWWTRS_VCH0",
	(void *)&_pTrackScreens[TRACKS_NY],				"GWWTRS_NYH0",
	(void *)&_pTrackScreens[TRACKS_NILE],			"GWWTRS_NRH0",
	(void *)&_pTrackScreens[TRACKS_LOOP1],			"GWWTRS_LOH1",
	(void *)&_pTrackScreens[TRACKS_LOOP2],			"GWWTRS_LOH2",
	(void *)&_pTrackScreens[TRACKS_LOOP3],			"GWWTRS_LOH3",
	(void *)&_pTrackScreens[TRACKS_CAVERN],			"GWWTRS_LOH3",
		/* TRACK NAMES*/
	(void *)&_pText_TrackNames[TRACKS_CHINA],			"GWWCHIN__H1",
	(void *)&_pText_TrackNames[TRACKS_SHIPGRAVEYARD],	"GWWGRAV__H1",
	(void *)&_pText_TrackNames[TRACKS_LAKEPOWELL],		"GWWPOWE__H1",
	(void *)&_pText_TrackNames[TRACKS_GREECE],			"GWWGREE__H1",
	(void *)&_pText_TrackNames[TRACKS_AMAZON],			"GWWAMAZ__H1",
	(void *)&_pText_TrackNames[TRACKS_ARTIC],			"GWWARCT__H1",
	(void *)&_pText_TrackNames[TRACKS_VENICE],			"GWWVENI__H1",
	(void *)&_pText_TrackNames[TRACKS_NY],				"GWWNEWY__H1",
	(void *)&_pText_TrackNames[TRACKS_NILE],			"GWWNILE__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP1],			"GWWLOOP__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP2],			"GWWLOOP__H2",
	(void *)&_pText_TrackNames[TRACKS_LOOP3],			"GWWLOOP__H3",
	(void *)&_pText_TrackNames[TRACKS_LOOP3],			"GWWCAST__H1",
	(void *)&_pText_TrackNames[TRACKS_CAVERN],			"GWWCAVE__H1",

		/* TRACK OVAL SHADOWS*/
	(void *)&_pTrackShadows,							"GWWHYDRSHH1",
		/* THE WORD EASY*/
	(void *)&_pTrackTextEasy,							"GWWEASY__H1",
		/* THE RIGHT SIDE OF THE BLUE BAR*/
	(void *)&_pLeftBlueBar,								"GWWBEGIPTHR",
		/* THE PADLOCK*/
	(void *)&_pLock,									"GWWLOCKICH0",	/* BONUS LOCKED ICON*/
		/* the "hard track" plate overlay, used for putting the flame under the plate*/
	(void *)&_pHardTrackText,							"GWWPLATADHA",
	// Dreamcast icons
	(void *)&_pIcon_Analog,								"GWWANALICH1",	
	(void *)&_pIcon_Button,								"GWWABUTICH0",	
	// New Bar
	(void *)&_LeftGreenBar,								"GWWBONUPTHL",
	(void *)&_MiddleGreenBar,							"GWWBONU__H1",
	(void *)&_RightGreenBar,							"GWWBONUPTHR",
	// New oval icons
	(void *)&_RedLockIcon,								"GWWICO_RDH3",
	(void *)&_BlueLockIcon,								"GWWICO_BUH3",
	(void *)&_YellowLockIcon,							"GWWICO_YLH3",
	(void *)&_GreenLockIcon,							"GWWICO_GRH3",
	NULL,							NULL,
};

#if 0
static ObsysLoadDef_t aLoadTable[] = {
	/* BACKGROUNDS*/
	(void *)&_pTrackBG,				"GWWTRASBGH1",
	/* MISC*/
	(void *)&_pText_ChooseA,		"GWWCHOO__H1",	
	(void *)&_pText_Track,			"GWWTRAC__H1",
	(void *)&_pText_Numbers[0],		"GWWTIME__H0",	/* 0*/
	(void *)&_pText_Numbers[1],		"GWWTIME__H1",	/* 1*/
	(void *)&_pText_Numbers[2],		"GWWTIME__H2",	/* 2*/
	(void *)&_pText_Numbers[3],		"GWWTIME__H3",	/* 3*/
	(void *)&_pText_Numbers[4],		"GWWTIME__H4",	/* 4*/
	(void *)&_pText_Numbers[5],		"GWWTIME__H5",	/* 5*/
	(void *)&_pText_Numbers[6],		"GWWTIME__H6",	/* 6*/
	(void *)&_pText_Numbers[7],		"GWWTIME__H7",	/* 7*/
	(void *)&_pText_Numbers[8],		"GWWTIME__H8",	/* 8*/
	(void *)&_pText_Numbers[9],		"GWWTIME__H9",	/* 9*/
	(void *)&_pText_Select,			"GWWSELE__H1",
	(void *)&_pText_Accept,			"GWWACCE__H1",
	(void *)&_pText_Difficulty[0],	"GWWNOVI__H1", /* NOVICE*/
	(void *)&_pText_Difficulty[1],	"GWWBEGI__H1", /* EASY*/
	(void *)&_pText_Difficulty[2],	"GWWINTE__H1", /* MEDIUM*/
	(void *)&_pText_Difficulty[3],	"GWWADVA__H1", /* HARD*/
	(void *)&_pText_Difficulty[4],	"GWWEXPE__H1", /* EXPERT*/
	(void *)&_pIcon_Wheel,			"GWWWHEEICH1",
	(void *)&_pIcon_Wheel_Shadow,	"GWWWHEESHH1",
	(void *)&_pIcon_Throttle,		"GWWTHOTICH0",
	(void *)&_pIcon_Arrow,			"GWWARRO__H1",
	(void *)&_pFlame,				"GWWSELEFLH0",	/* Flame*/
	(void *)&_pFireCell[0],			"T_FFIRE_A20",
	(void *)&_pFireCell[1],			"T_FFIRE_A21",
	(void *)&_pFireCell[2],			"T_FFIRE_A22",
	(void *)&_pFireCell[3],			"T_FFIRE_A23",
	(void *)&_pFireCell[4],			"T_FFIRE_A24",
	(void *)&_pFireCell[5],			"T_FFIRE_A25",
	(void *)&_pFireCell[6],			"T_FFIRE_A26",
	(void *)&_pFireCell[7],			"T_FFIRE_A27",
	(void *)&_pFireCell[8],			"T_FFIRE_A28",
	(void *)&_pFireCell[9],			"T_FFIRE_A29",


	/* TRACK SELECT*/
		/* COLORED OVALS OFF*/
	(void *)&_pOffFrame[0],							"GWWICO_YLH1",	/* YELLOW	*/
	(void *)&_pOffFrame[1],							"GWWICO_BUH1",	/* BLUE	*/
	(void *)&_pOffFrame[2],							"GWWICO_RDH1",	/* RED*/
	(void *)&_pOffFrame[3],							"GWWICO_GRH1",	/* BONUS*/
		/* COLORED OVALS ON	*/
	(void *)&_pOnFrame[0],							"GWWICO_YLH2",	/* YELLOW*/
	(void *)&_pOnFrame[1],							"GWWICO_BUH2",	/* BLUE	*/
	(void *)&_pOnFrame[2],							"GWWICO_RDH2",	/* RED*/
	(void *)&_pOnFrame[3],							"GWWICO_GRH2",	/* BONUS*/
		/* FRAME SHADOW*/
	(void *)&_pTrackFrameShadow,					"GWWFRAMSHH1",
		/* COLORED DIFFICULTY BARS*/
	(void *)&_pTrackDiffBars[0],					"GWWBONUPTH1",	/* BONUS1	*/
	(void *)&_pTrackDiffBars[1],					"GWWPLATINH0",	/* YELLOW	*/
	(void *)&_pTrackDiffBars[2],					"GWWBEGIPTHL",	/* BLUE	*/
	(void *)&_pTrackDiffBars[3],					"GWWPLATADH0",	/* RED*/
	(void *)&_pTrackDiffBars[4],					"GWWBONUPTH2",	/* BONUS2*/
		/* SCREEN SHOTS*/
	(void *)&_pTrackScreens[TRACKS_CHINA],			"GWWTRS_CHH0",
	(void *)&_pTrackScreens[TRACKS_SHIPGRAVEYARD],	"GWWTRS_SGH0",
	(void *)&_pTrackScreens[TRACKS_LAKEPOWELL],		"GWWTRS_PWH0",
	(void *)&_pTrackScreens[TRACKS_GREECE],			"GWWTRS_GRH0",
	(void *)&_pTrackScreens[TRACKS_AMAZON],			"GWWTRS_SPH0",
	(void *)&_pTrackScreens[TRACKS_ARTIC],			"GWWTRS_ACH0",
	(void *)&_pTrackScreens[TRACKS_VENICE],			"GWWTRS_VCH0",
	(void *)&_pTrackScreens[TRACKS_NY],				"GWWTRS_NYH0",
	(void *)&_pTrackScreens[TRACKS_NILE],			"GWWTRS_NRH0",
	(void *)&_pTrackScreens[TRACKS_LOOP1],			"GWWTRS_LOH1",
	(void *)&_pTrackScreens[TRACKS_LOOP2],			"GWWTRS_LOH2",
	(void *)&_pTrackScreens[TRACKS_LOOP3],			"GWWTRS_LOH3",
		/* TRACK NAMES*/
	(void *)&_pText_TrackNames[TRACKS_CHINA],			"GWWCHIN__H1",
	(void *)&_pText_TrackNames[TRACKS_SHIPGRAVEYARD],	"GWWGRAV__H1",
	(void *)&_pText_TrackNames[TRACKS_LAKEPOWELL],		"GWWPOWE__H1",
	(void *)&_pText_TrackNames[TRACKS_GREECE],			"GWWGREE__H1",
	(void *)&_pText_TrackNames[TRACKS_AMAZON],			"GWWAMAZ__H1",
	(void *)&_pText_TrackNames[TRACKS_ARTIC],			"GWWARCT__H1",
	(void *)&_pText_TrackNames[TRACKS_VENICE],			"GWWVENI__H1",
	(void *)&_pText_TrackNames[TRACKS_NY],				"GWWNEWY__H1",
	(void *)&_pText_TrackNames[TRACKS_NILE],			"GWWNILE__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP1],			"GWWLOOP__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP2],			"GWWLOOP__H2",
	(void *)&_pText_TrackNames[TRACKS_LOOP3],			"GWWLOOP__H3",
		/* TRACK OVAL SHADOWS*/
	(void *)&_pTrackShadows,							"GWWHYDRSHH1",
		/* THE WORD EASY*/
	(void *)&_pTrackTextEasy,							"GWWEASY__H1",
		/* THE RIGHT SIDE OF THE BLUE BAR*/
	(void *)&_pLeftBlueBar,								"GWWBEGIPTHR",
		/* THE PADLOCK*/
	(void *)&_pLock,									"GWWLOCKICH0",	/* BONUS LOCKED ICON*/
		/* the "hard track" plate overlay, used for putting the flame under the plate*/
	(void *)&_pHardTrackText,							"GWWPLATADHA",
	// Dreamcast icons
	(void *)&_pIcon_Analog,								"GWWANALICH1",	
	(void *)&_pIcon_Button,								"GWWABUTICH0",	
	NULL,							NULL,
};
#endif

#if 0
static ObsysLoadDef_t aLoadTable[] = {
	/* BACKGROUNDS*/
	(void *)&_pTrackBG,				"GWWTRASBGH1",
	(void *)&_pBoatBG,				"GWWBOASBGH0",
	/* MISC*/
#if TARGET!=ULTRA64	/* No track select shadows */
	(void *)&_pText_ChooseA,		"GWWCHOO__H1",	
	(void *)&_pText_Track,			"GWWTRAC__H1",
	(void *)&_pText_Boat,			"GWWBOAT__H1",
#endif	/*ULTRA64*/
	(void *)&_pText_Numbers[0],		"GWWTIME__H0",	/* 0*/
	(void *)&_pText_Numbers[1],		"GWWTIME__H1",	/* 1*/
	(void *)&_pText_Numbers[2],		"GWWTIME__H2",	/* 2*/
	(void *)&_pText_Numbers[3],		"GWWTIME__H3",	/* 3*/
	(void *)&_pText_Numbers[4],		"GWWTIME__H4",	/* 4*/
	(void *)&_pText_Numbers[5],		"GWWTIME__H5",	/* 5*/
	(void *)&_pText_Numbers[6],		"GWWTIME__H6",	/* 6*/
	(void *)&_pText_Numbers[7],		"GWWTIME__H7",	/* 7*/
	(void *)&_pText_Numbers[8],		"GWWTIME__H8",	/* 8*/
	(void *)&_pText_Numbers[9],		"GWWTIME__H9",	/* 9*/
	(void *)&_pText_Select,			"GWWSELE__H1",
	(void *)&_pText_Accept,			"GWWACCE__H1",
	(void *)&_pText_Difficulty[0],	"GWWNOVI__H1", /* NOVICE*/
	(void *)&_pText_Difficulty[1],	"GWWBEGI__H1", /* EASY*/
	(void *)&_pText_Difficulty[2],	"GWWINTE__H1", /* MEDIUM*/
	(void *)&_pText_Difficulty[3],	"GWWADVA__H1", /* HARD*/
	(void *)&_pText_Difficulty[4],	"GWWEXPE__H1", /* EXPERT*/
	(void *)&_pIcon_Wheel,			"GWWWHEEICH1",
	(void *)&_pIcon_Wheel_Shadow,	"GWWWHEESHH1",
	(void *)&_pIcon_Throttle,		"GWWTHOTICH0",
	(void *)&_pIcon_Arrow,			"GWWARRO__H1",

/*	(void *)&_pComingSoon,			"GWWTEXT_XHX",	// coming soon*/
	(void *)&_pFlame,				"GWWSELEFLH0",	/* Flame*/
	(void *)&_pFireCell[0],			"T_FFIRE_A20",
	(void *)&_pFireCell[1],			"T_FFIRE_A21",
	(void *)&_pFireCell[2],			"T_FFIRE_A22",
	(void *)&_pFireCell[3],			"T_FFIRE_A23",
	(void *)&_pFireCell[4],			"T_FFIRE_A24",
	(void *)&_pFireCell[5],			"T_FFIRE_A25",
	(void *)&_pFireCell[6],			"T_FFIRE_A26",
	(void *)&_pFireCell[7],			"T_FFIRE_A27",
	(void *)&_pFireCell[8],			"T_FFIRE_A28",
	(void *)&_pFireCell[9],			"T_FFIRE_A29",

	(void *)&_pNoAiIcon,			"GWWICONAIH1",	/* no ai icon*/
	(void *)&_pNoCatchUpIcon,		"GWWICONNCH1",	/* no catchup code icon*/
	
	/* TRACK SELECT*/
		/* COLORED OVALS OFF*/
	(void *)&_pOffFrame[0],							"GWWICO_YLH1",	/* YELLOW	*/
	(void *)&_pOffFrame[1],							"GWWICO_BUH1",	/* BLUE	*/
	(void *)&_pOffFrame[2],							"GWWICO_RDH1",	/* RED*/
	(void *)&_pOffFrame[3],							"GWWICO_GRH1",	/* BONUS*/
		/* COLORED OVALS ON	*/
	(void *)&_pOnFrame[0],							"GWWICO_YLH2",	/* YELLOW*/
	(void *)&_pOnFrame[1],							"GWWICO_BUH2",	/* BLUE	*/
	(void *)&_pOnFrame[2],							"GWWICO_RDH2",	/* RED*/
	(void *)&_pOnFrame[3],							"GWWICO_GRH2",	/* BONUS*/
		/* FRAME SHADOW*/
#if TARGET!=ULTRA64	/* No track select shadows */
	(void *)&_pTrackFrameShadow,					"GWWFRAMSHH1",
		/* COLORED DIFFICULTY BARS*/
	(void *)&_pTrackDiffBars[0],					"GWWBONUPTH1",	/* BONUS1	*/
	(void *)&_pTrackDiffBars[1],					"GWWPLATINH0",	/* YELLOW	*/
	(void *)&_pTrackDiffBars[2],					"GWWBEGIPTHL",	/* BLUE	*/
	(void *)&_pTrackDiffBars[3],					"GWWPLATADH0",	/* RED*/
	(void *)&_pTrackDiffBars[4],					"GWWBONUPTH2",	/* BONUS2*/
#endif	/*ULTRA64*/
		/* SCREEN SHOTS*/
	(void *)&_pTrackScreens[TRACKS_CHINA],			"GWWTRS_CHH0",
	(void *)&_pTrackScreens[TRACKS_SHIPGRAVEYARD],	"GWWTRS_SGH0",
	(void *)&_pTrackScreens[TRACKS_LAKEPOWELL],		"GWWTRS_PWH0",
	(void *)&_pTrackScreens[TRACKS_GREECE],			"GWWTRS_GRH0",
	(void *)&_pTrackScreens[TRACKS_AMAZON],			"GWWTRS_SPH0",
	(void *)&_pTrackScreens[TRACKS_ARTIC],			"GWWTRS_ACH0",
	(void *)&_pTrackScreens[TRACKS_VENICE],			"GWWTRS_VCH0",
	(void *)&_pTrackScreens[TRACKS_NY],				"GWWTRS_NYH0",
	(void *)&_pTrackScreens[TRACKS_NILE],			"GWWTRS_NRH0",
	(void *)&_pTrackScreens[TRACKS_LOOP1],			"GWWTRS_LOH1",
	(void *)&_pTrackScreens[TRACKS_LOOP2],			"GWWTRS_LOH2",
	(void *)&_pTrackScreens[TRACKS_LOOP3],			"GWWTRS_LOH3",
		/* TRACK NAMES*/
	(void *)&_pText_TrackNames[TRACKS_CHINA],			"GWWCHIN__H1",
	(void *)&_pText_TrackNames[TRACKS_SHIPGRAVEYARD],	"GWWGRAV__H1",
	(void *)&_pText_TrackNames[TRACKS_LAKEPOWELL],		"GWWPOWE__H1",
	(void *)&_pText_TrackNames[TRACKS_GREECE],			"GWWGREE__H1",
	(void *)&_pText_TrackNames[TRACKS_AMAZON],			"GWWAMAZ__H1",
	(void *)&_pText_TrackNames[TRACKS_ARTIC],			"GWWARCT__H1",
	(void *)&_pText_TrackNames[TRACKS_VENICE],			"GWWVENI__H1",
	(void *)&_pText_TrackNames[TRACKS_NY],				"GWWNEWY__H1",
	(void *)&_pText_TrackNames[TRACKS_NILE],			"GWWNILE__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP1],			"GWWLOOP__H1",
	(void *)&_pText_TrackNames[TRACKS_LOOP2],			"GWWLOOP__H2",
	(void *)&_pText_TrackNames[TRACKS_LOOP3],			"GWWLOOP__H3",
		/* TRACK OVAL SHADOWS*/
#if TARGET!=ULTRA64	/* No track select shadows */
	(void *)&_pTrackShadows,							"GWWHYDRSHH1",
#endif	/*ULTRA64*/
		/* THE WORD EASY*/
	(void *)&_pTrackTextEasy,							"GWWEASY__H1",
		/* THE RIGHT SIDE OF THE BLUE BAR*/
	(void *)&_pLeftBlueBar,								"GWWBEGIPTHR",
		/* THE PADLOCK*/
	(void *)&_pLock,									"GWWLOCKICH0",	/* BONUS LOCKED ICON*/
		/* the "hard track" plate overlay, used for putting the flame under the plate*/
	(void *)&_pHardTrackText,							"GWWPLATADHA",
	
	/* BOAT SELECT	*/
		/* BOAT ICONS*/
	(void *)&_pBoatPics[BOATS_TYPE_BANSHEE],				"GWWBANSICH1",
	(void *)&_pBoatPics[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDAICH1",
	(void *)&_pBoatPics[BOATS_TYPE_RAD_HAZARD],				"GWWRADHICH1",
	(void *)&_pBoatPics[BOATS_TYPE_MISS_BEHAVE],			"GWWMISSICH1",	
	(void *)&_pBoatPics[BOATS_TYPE_DAMN_THE_TORPEDOES],		"GWWDAMNICH1",
	(void *)&_pBoatPics[BOATS_TYPE_CUT_THROAT],				"GWWCUTTICH1",
	(void *)&_pBoatPics[BOATS_TYPE_RAZORBACK],				"GWWRAZRICH1",
	(void *)&_pBoatPics[BOATS_TYPE_THRESHER],				"GWWTHREICH0",
	(void *)&_pBoatPics[BOATS_TYPE_MIDWAY],					"GWWMIDWICH0",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pBoatPics[BOATS_TYPE_SEADOG],					"GWWSEADICH1",
	(void *)&_pBoatPics[BOATS_TYPE_COP],					"GWWCOPBICH1",
	(void *)&_pBoatPics[BOATS_TYPE_HOVERCRAFT],				"GWWHOVRICH1",
	(void *)&_pBoatPics[BOATS_TYPE_TINY],					"GWWTINYICH1",	
#endif	/*ULTRA64*/
		/* BOAT SHADOWS*/
#if TARGET!=ULTRA64	/* No boat shadows and easy/medium/hard icons */
	(void *)&_pBoatShadows[BOATS_TYPE_BANSHEE],				"GWWBANSSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDASHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_RAD_HAZARD],			"GWWRADHSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_MISS_BEHAVE],			"GWWMISSSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_DAMN_THE_TORPEDOES],	"GWWDAMNSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_CUT_THROAT],			"GWWCUTTSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_RAZORBACK],			"GWWRAZRSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_THRESHER],			"GWWTHRESHH0",
	(void *)&_pBoatShadows[BOATS_TYPE_MIDWAY],				"GWWMIDWSHH0",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pBoatShadows[BOATS_TYPE_SEADOG],				"GWWSEADSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_COP],					"GWWCOPBSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_HOVERCRAFT],			"GWWHOVRSHH1",
	(void *)&_pBoatShadows[BOATS_TYPE_TINY],				"GWWTINYSHH1",	
#endif	/*ULTRA64*/
		/* COLORED DIFFICULTY BARS*/
	(void *)&_pBoatDiffBars[0],								"GWWPLATINH1",	/* YELLOW	*/
	(void *)&_pBoatDiffBars[1],								"GWWPLATBEH1",	/* BLUE	*/
	(void *)&_pBoatDiffBars[2],								"GWWPLATADH1",	/* RED	*/
#endif	/*ULTRA64*/
		/* BOAT NAMES*/
	(void *)&_pText_BoatNames[BOATS_TYPE_BANSHEE],				"GWWBANS__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_TIDAL_BLADE],			"GWWTIDA__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_RAD_HAZARD],			"GWWRADH__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_MISS_BEHAVE],			"GWWMISS__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_DAMN_THE_TORPEDOES],	"GWWDAMN__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_CUT_THROAT],			"GWWCUTT__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_RAZORBACK],			"GWWRAZO__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_THRESHER],				"GWWTHSH__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_MIDWAY],				"GWWMIDW__H1",
#if TARGET!=ULTRA64	/*Don't allow secret boats*/
	(void *)&_pText_BoatNames[BOATS_TYPE_SEADOG],				"GWWSEAD__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_COP],					"GWWCOPB__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_HOVERCRAFT],			"GWWHOVR__H1",
	(void *)&_pText_BoatNames[BOATS_TYPE_TINY],					"GWWTINY__H1",	
#endif	/*ULTRA64*/
		/* BOAT FRAME	*/
	(void *)&_pBoatFrame,			"GWWFRAMBSH1",
		/* BOAT FRAME SHADOW*/
#if TARGET!=ULTRA64	/* No boat frame shadow */
	(void *)&_pBoatFrameShadow,		"GWWFRAMSHH2",	
#endif	/*ULTRA64*/

	NULL,							NULL,
};
#endif

/*===================*/
/* private prototypes*/

static void _DrawTrackSelect( BOOL bPreSelection, u32 nTime );
static void _DrawBoatSelect( BOOL bPreSelection, u32 nTime );
static void _UpdateCamera( Player_t *pPlayer, u32 nBoatNum );
static f32 _InitBoats( u32 nBoatType, u32 nLod, Player_t *pPlayer, WorldOb_t *pWorldOb, Motion_t *pMotion );
static void _MoveAllBoats( BOOL bBoatSelect );
static void _DrawIconsAndTime( u32 nTime, BOOL bDrawIcons );
static void _HandleSpecialCodes( u32 nWhatCode );
static void _DrawATrackSelectionObject( TrackSelectionObject_t *pOb, BOOL bPreSelection );
static void _SetupTrackSelectVars( BOOL bBonus1Enable, BOOL bBonus2Enable );
static void _SetupBoatSelectVars( BOOL bEnableAdvancedBoats );
static Player_t *_GetCurrentBoatSelectPlayerPtr( void );
static void _DrawOptionsSelect();
static void _DrawABoatSelectionObject( BoatSelectObject_t *pOb, BOOL bPreSelection, float fScale );

/*=================*/
/* public functions*/

BOOL wpr_select_ModuleInit( void ) {
	u32 i;

	/* very few things need to be reset here, init does it all*/
	_bTexturesLoaded = FALSE;
	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		player_SetAPlayerToDefault( &_aPlayer[i] );
		worldob_Init( &_aWorldOb[i] );
		motion_StopMotion( &_aMotion[i] );
		vec2_Zero( &_aPathPos[i] );
		_naPathIndex[i] = 0;
		_afBoatsTopEnd[i] = 0.0f; 
	}
	vec3_Zero( &_CamPos );
	vec3_Zero( &_CamLook );
	_nCamAngle = 0;

	return TRUE;
}


static void _SetupOptionSelectVars() 
{
	OptionSelectObject_t *pObj;

	_pCurrentSelectedOption = &_aOptionSelections[_DEFAULT_OPTION_SLOT];
	_pCurrentSelectedOption->nArrayIndex = 3;
	/* Vms */
	pObj = &_aOptionSelections[0];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_Vms;
	pObj->fX = _ICON_VMS_X;
	pObj->fY = _ICON_VMS_Y;
	pObj->nArrayIndex = 0;
	/* Controller */
	pObj = &_aOptionSelections[1];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_ConfigCtrl;
	pObj->fX = _ICON_CONFIGCTRL_X;
	pObj->fY = _ICON_CONFIGCTRL_Y;
	pObj->nArrayIndex = 1;
	/* One Player */
	pObj = &_aOptionSelections[2];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = TRUE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_OnePlayer;
	pObj->fX = _ICON_ONEPLAYER_X;
	pObj->fY = _ICON_ONEPLAYER_Y;
	pObj->nArrayIndex = 2;
	/* Two Player */
	pObj = &_aOptionSelections[3];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_TwoPlayer;
	pObj->fX = _ICON_TWOPLAYER_X;
	pObj->fY = _ICON_TWOPLAYER_Y;
	pObj->nArrayIndex = 3;
	/* Volume */
	pObj = &_aOptionSelections[4];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_Volume;
	pObj->fX = _ICON_SOUNDVOL_X;
	pObj->fY = _ICON_SOUNDVOL_Y;
	pObj->nArrayIndex = 4;
	/* High scores */
	pObj = &_aOptionSelections[5];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->pIcon = _pIcon_HighScores;
	pObj->fX = _ICON_HIGHSCORES_X;
	pObj->fY = _ICON_HIGHSCORES_Y;
	pObj->nArrayIndex = 5;
}

void _DrawAnalogAndButton()
{
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	mesh3d_DrawOrtho( _pIcon_Analog, _ICON_ANALOG_X, _ICON_ANALOG_Y, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pText_SelectText, _ICON_ANALOG_X, _ICON_ANALOG_Y - 20, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pIcon_Button, _ICON_BUTT_X, _ICON_BUTT_Y, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pText_AcceptText, _ICON_BUTT_X, _ICON_BUTT_Y - 20, WPR_DEFS_LAYER1_Z, 0, 1.0f );
}

static void _DrawOptionsSelect( BOOL bPreSelection, u32 nTime )
{
	OptionSelectObject_t *pObj;
	int i;

	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	mesh3d_DrawOrtho( _pBoatBG, 0.0f, 0.0f, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pBoatFrameShadow, (_BOAT_FRAME_X - 4.0f), _BOAT_FRAME_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pBoatFrame, _BOAT_FRAME_X, _BOAT_FRAME_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
	mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
	// Draw bars etc
	if(_nCurrentBar == 1)
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	else
		mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
	mesh3d_DrawOrtho( _pIcon_GameBar, _ICON_GAMEBAR_X, _ICON_GAMEBAR_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
	if(_nCurrentBar == 0)
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	else
		mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
	mesh3d_DrawOrtho( _pIcon_ConfigBar, _ICON_CONFIGBAR_X, _ICON_CONFIGBAR_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
	if(_nCurrentBar == 2)
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	else
		mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
	mesh3d_DrawOrtho( _pIcon_OptionBar, _ICON_OPTIONBAR_X, _ICON_OPTIONBAR_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	// print title
	mesh3d_DrawOrtho( _pText_Option, -90, _TEXT_OPTION_Y+5, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pText_Option1, 60, _TEXT_OPTION_Y+5, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	_DrawAnalogAndButton();
//	mesh3d_DrawOrtho( _pIcon_OnePlayer, _ICON_ONEPLAYER_X, _ICON_ONEPLAYER_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_OnePlayer, _ICON_TWOPLAYER_X, _ICON_TWOPLAYER_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
	// Draw selectable icons

	for(i = 0; i < _OPTION_SLOTS; i++){
		pObj = &_aOptionSelections[i];
		if(pObj->bCurrent){
			if( bPreSelection ) {
				/* a selection has not been made yet*/
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
				if( _bSpecialFlashOn ) {
					mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.15f );
				} else {
					mesh3d_SetOrthoEffects( 0.45f, 0.45f, 0.45f, 1.0f, 0.0f );
					mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.05f );	
				}
			} 
			else {
				/* a selection has been made*/
				if( (Gameloop_nFrameCounter & 0x2)  ) {
					mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.9f );
					mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.15f );
				}
				else{
					mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
					mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.05f );
				}
//			if( _bSpecialFlashOn && pObj->bCurrent) {
//				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.9f );
//				mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.15f );
//			} 
//			else {
//				mesh3d_SetOrthoEffects( 0.45f, 0.45f, 0.45f, 1.0f, 0.0f );
//				mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.05f );	
//			}
			}
		}	
		else{
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( pObj->pIcon, pObj->fX, pObj->fY, WPR_DEFS_LAYER5_Z, 0, 1.00f );	
		}
	}
//	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
//	mesh3d_DrawOrtho( _pIcon_ConfigCtrl, _ICON_CONFIGCTRL_X, _ICON_CONFIGCTRL_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_PuruPuru, _ICON_PURUPURU_X, _ICON_PURUPURU_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_Vms, _ICON_VMS_X, _ICON_VMS_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_Volume, _ICON_SOUNDVOL_X, _ICON_SOUNDVOL_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_SplitScreen, _ICON_SPLITSCREEN_X, _ICON_SPLITSCREEN_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
//	mesh3d_DrawOrtho( _pIcon_HighScores, _ICON_HIGHSCORES_X, _ICON_HIGHSCORES_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
}


void wpr_select_InitOptionsSelect()
{

	wpr_memmgr_FreeNonCommonStuff();

#if _SELECT_FILE_LOGGING_ON
	dcStartFileLogging("optisel.txt");
#else
	obsys_LoadR2Objects("optisel.r2");
#endif	

	/* load our textures*/
	if( obsys_LoadGroup( aOptionsLoadTable, FALSE ) != -1 ){ 
		/* all of the textures could not loaded*/
		_bTexturesLoaded = FALSE;
		return;
	}
	_SetupOptionSelectVars();
	_bTexturesLoaded = TRUE;

#if _SELECT_FILE_LOGGING_ON
	dcStopFileLogging();
#else
	dcEnableCDCaching(FALSE);
	r2file_OpenForRead("hydrodc.r2");
#endif

}

// Load up everthing for the track selection screen
void wpr_select_InitTrackSelect( BOOL bBonus1Enable, BOOL bBonus2Enable, BOOL bEnableAdvancedBoats ) 
{	
	TerrainInit_t Temp;
	u32 i;

	wpr_memmgr_FreeNonCommonStuff();

#if _SELECT_FILE_LOGGING_ON
	dcStartFileLogging("trcksel.txt");
#else
	obsys_LoadR2Objects("trcksel.r2");
#endif	
	/* LOAD AND ALLOCATE MEMORY FOR NEEDED OBJECTS*/
	/* clear all unneeded memory*/

	controls_SetSteeringFeedback( 0.0f );
	controls_TurnAllLightsOff();
	/*if( !audio_Status_IsGameIDPlaying( WPR_DEFS_SELECT_MUSIC ) ) {*/
	/*	audio_Trigger( WPR_DEFS_SELECT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );*/
	/*}*/
	/* till we have another tune we just play the attract tune if it is not playing*/
	if( !audio_Status_IsGameIDPlaying( WPR_DEFS_ATTRACT_MUSIC ) ) {
		audio_Trigger( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );
	} else {
		/* fade to our desired volume*/
		audio_GameIDFadeTo( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, 1.0f );
	}
	
	/* load our textures*/
	if( obsys_LoadGroup( aTrackSelectLoadTable, FALSE ) != -1 ){ 
		/* all of the textures could not loaded*/
		_bTexturesLoaded = FALSE;
		return;
	}
	_bTexturesLoaded = TRUE;
	gameloop_ResetCounter();
	/* reset various misc vars*/
	_nBoatSlot = _DEFAULT_BOAT_SLOT;
	_bAllowSelectionChanges = TRUE;
	_nBoatDiff = _DEFAULT_BOAT_DIFF_SLOT;
	_StageNum = WPR_SELECT_TRACK;
	_fScreenFadeIntensity = 0.0f;
	_nCounter = 0;
	_bSpecialFlashOn = TRUE;
	_nDelayVoice = 0;
	_nDelayedVoiceSelection = 0;
	_fFlameScale = 0.0f;
	_bNoAiCodeEntered = FALSE;
	_nNoAiCodeState = 0;
	_bNoCatchUpCodeEntered = FALSE;
	_nNoCatchUpCodeState = 0;
	_bAdvancedBoatsCodeEntered = bEnableAdvancedBoats;
	_nTrackCodeCount = 0;
	_nTrackCodeState = 0;
	_nBoatCodeCount = 0;
	_nBoatCodeState = 0;
		
	/* setup the track select table*/
	_SetupTrackSelectVars( bBonus1Enable, bBonus2Enable );
	audio_Trigger( WPR_DEFS_WATER_SLOSHING, WPR_DEFS_WATER_SLOSHING_VOLUME, AUDIO_PAN_CENTER, AUDIO_TYPE_AMBIENT, AUDIO_PRIORITY_AMBIENT );

#if _SELECT_FILE_LOGGING_ON
	dcStopFileLogging();
#else
	dcEnableCDCaching(FALSE);
	r2file_OpenForRead("hydrodc.r2");
#endif
}


void wpr_select_ReInitBoatSelect()
{
	_SetupBoatSelectVars(FALSE);
}

// Load up everthing for the boat selection screen
void wpr_select_InitBoatSelect( BOOL bBonus1Enable, BOOL bBonus2Enable, BOOL bEnableAdvancedBoats, BOOL bLoad ) {	
	TerrainInit_t Temp;
	u32 i;

	wpr_memmgr_FreeNonCommonStuff();

#if _SELECT_FILE_LOGGING_ON
	dcStartFileLogging("boatsel.txt");
#else
	if(bLoad)
		obsys_LoadR2Objects("boatsel.r2");
#endif	

//	dcStartFileLogging("attrsel.txt");
//	r2file_OpenForRead("attrsel.r2");
//	dcEnableCDCaching(TRUE);

	/* LOAD AND ALLOCATE MEMORY FOR NEEDED OBJECTS*/
	/* clear all unneeded memory*/

	controls_SetSteeringFeedback( 0.0f );
	controls_TurnAllLightsOff();
	/*if( !audio_Status_IsGameIDPlaying( WPR_DEFS_SELECT_MUSIC ) ) {*/
	/*	audio_Trigger( WPR_DEFS_SELECT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );*/
	/*}*/
	/* till we have another tune we just play the attract tune if it is not playing*/
	if( !audio_Status_IsGameIDPlaying( WPR_DEFS_ATTRACT_MUSIC ) ) {
		audio_Trigger( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );
	} else {
		/* fade to our desired volume*/
		audio_GameIDFadeTo( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, 1.0f );
	}
	/* load our textures*/
	if(bLoad){
		if( obsys_LoadGroup( aBoatSelectLoadTable, FALSE ) != -1 ) {
			/* all of the textures could not loaded*/
			_bTexturesLoaded = FALSE;
			return;
		} 
		else {
			world_SetWhiteSat( 0.0f );
			sky_SetWhiteSat( 0.0f );
			/* allow for _MAX_NUM_WATERSPRAY_PARTICLES waterspray particles*/
			waterspray_InitSystem( _MAX_NUM_WATERSPRAY_PARTICLES );
			/* reset any systems which are used during this module*/
			particle_ResetSystem();
			fx_ResetSystem();
			fx_splash_ResetSystem();
			fx_particles_ResetSystem();
			gameloop_ResetCounter();
			/* load boat select's world file*/
			water_EnableCalc( TRUE );
			water_EnableDraw( TRUE );
			tracks_LoadWaterTextures( WPR_DEFS_BOAT_WATER,FALSE );	/*PAB ULTRA64 Don't fade water */
			terrain_Load( "HWTBTS_TRH0", &Temp );
			if( !Temp.pWorld ) {
				_bTexturesLoaded = FALSE;
				return;
			}
			 else {
				/* make our boat select world the currently selected world*/
				terrain_Attach( &Temp );
				/* load up the boats to race around in boat select*/
				for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
					/* record the boats top end*/
				_afBoatsTopEnd[i] = _InitBoats( i, BOATS_LOD_HIGH, &_aPlayer[i], &_aWorldOb[i], &_aMotion[i] );	
				}			
			/* everything that we need loaded ok*/
			_bTexturesLoaded = TRUE;
			}
		}
	}
	/* INIT VARS*/
	/* camera stuff for boat select*/
	Gamecam_pSector = NULL;
	_nCamAngle = XMATH_225_BRADIANS;
	_CamPos.p[1] = 11.5f;
	_CamLook.p[1] = 12.0f;
	if( _bTexturesLoaded ) {
		_UpdateCamera( &_aPlayer[0], 0 );
	}
	/* init our loop path structs for boat select*/
	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		_aLoopPath[i].nTemplateIndex = 0;
		_aLoopPath[i].nTemplateStartOffset = 5;
		_aLoopPath[i].fXScale = 3500.0f;
		_aLoopPath[i].fYScale = 4800.0f;
		_aLoopPath[i].fXTranslate = 0.0f;
		_aLoopPath[i].fYTranslate = 2150.0f;
		_aLoopPath[i].nRotation = 0;
		paths_GetPathLoopStartPos( &_aPathPos[i], &_naPathIndex[i], &_aLoopPath[i] );
		paths_GetPathLoopNextPos( &_aPathPos[i], &_naPathIndex[i], _naPathIndex[i], &_aLoopPath[i] );
	}
	/* reset the screen coverage for waterspray etc.*/
	gutil_ScreenCoverage_ResetTotal();
	gutil_ScreenCoverage_SetLimit( _MAX_SCREEN_AREA_SUM );
	/* reset various misc vars*/
	_nBoatSlot = _DEFAULT_BOAT_SLOT;
	_bAllowSelectionChanges = TRUE;
	_nBoatDiff = _DEFAULT_BOAT_DIFF_SLOT;
	_StageNum = WPR_SELECT_TRACK;
	_fScreenFadeIntensity = 0.0f;
	_nCounter = 0;
	_bSpecialFlashOn = TRUE;
	_nDelayVoice = 0;
	_nDelayedVoiceSelection = 0;
	_fFlameScale = 0.0f;
	_bNoAiCodeEntered = FALSE;
	_nNoAiCodeState = 0;
	_bNoCatchUpCodeEntered = FALSE;
	_nNoCatchUpCodeState = 0;
	_bAdvancedBoatsCodeEntered = bEnableAdvancedBoats;
	_nTrackCodeCount = 0;
	_nTrackCodeState = 0;
	_nBoatCodeCount = 0;
	_nBoatCodeState = 0;
		
	/* setup the track select table*/
//	_SetupTrackSelectVars( bBonus1Enable, bBonus2Enable );
	/* setup the boat select table*/
	_SetupBoatSelectVars( bEnableAdvancedBoats );

	audio_Trigger( WPR_DEFS_WATER_SLOSHING, WPR_DEFS_WATER_SLOSHING_VOLUME, AUDIO_PAN_CENTER, AUDIO_TYPE_AMBIENT, AUDIO_PRIORITY_AMBIENT );

#if _SELECT_FILE_LOGGING_ON
	dcStopFileLogging();
#else
	if(bLoad){
		dcEnableCDCaching(FALSE);
		r2file_OpenForRead("hydrodc.r2");
	}
#endif

//	dcStopFileLogging();
//	dcEnableCDCaching(FALSE);
//	r2file_OpenForRead("hydrodc.r2");

}


/* Call when you would like to make wpr_select the active wrapper module*/
/* loads up all of the artwork needed for all stages of select mode.*/
/* If everything can't be loaded, all selection modes will be turned off and*/
/* will not do anything.*/
/* Also resets all variables to their default values.*/
#if 0
void wpr_select_Init( BOOL bBonus1Enable, BOOL bBonus2Enable, BOOL bEnableAdvancedBoats ) {	
	TerrainInit_t Temp;
	u32 i;

#if TARGET==DREAMCAST
//	dcStartFileLogging("attrsel.txt");
//	r2file_OpenForRead("attrsel.r2");
//	dcEnableCDCaching(TRUE);
#endif // DREAMCAST
	
#if TARGET==ULTRA64
	/* Set input style */
/*	N64ResetSteerChoice(ANALOGUESCALE_CHOOSETRACK,_TRACK_SLOTS);*/
#endif	/*ULTRA64*/

	/* LOAD AND ALLOCATE MEMORY FOR NEEDED OBJECTS*/
	/* clear all unneeded memory*/
	wpr_memmgr_FreeNonCommonStuff();

	controls_SetSteeringFeedback( 0.0f );
	controls_TurnAllLightsOff();
	/*if( !audio_Status_IsGameIDPlaying( WPR_DEFS_SELECT_MUSIC ) ) {*/
	/*	audio_Trigger( WPR_DEFS_SELECT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );*/
	/*}*/
	/* till we have another tune we just play the attract tune if it is not playing*/
	if( !audio_Status_IsGameIDPlaying( WPR_DEFS_ATTRACT_MUSIC ) ) {
		audio_Trigger( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, AUDIO_PAN_CABINET, AUDIO_TYPE_MUSIC, AUDIO_PRIORITY_MUSIC );
	} else {
		/* fade to our desired volume*/
		audio_GameIDFadeTo( WPR_DEFS_ATTRACT_MUSIC, WPR_DEFS_SELECT_MUSIC_VOLUME, 1.0f );
	}
	
	/* load our textures*/
	if( obsys_LoadGroup( aLoadTable, FALSE ) != -1 ) {
		/* all of the textures could not loaded*/
		_bTexturesLoaded = FALSE;
		return;
	} 
	else {
		world_SetWhiteSat( 0.0f );
		sky_SetWhiteSat( 0.0f );
		/* allow for _MAX_NUM_WATERSPRAY_PARTICLES waterspray particles*/
		waterspray_InitSystem( _MAX_NUM_WATERSPRAY_PARTICLES );
		/* reset any systems which are used during this module*/
		particle_ResetSystem();
		fx_ResetSystem();
		fx_splash_ResetSystem();
		fx_particles_ResetSystem();
		gameloop_ResetCounter();
		/* load boat select's world file*/
		water_EnableCalc( TRUE );
		water_EnableDraw( TRUE );
		tracks_LoadWaterTextures( WPR_DEFS_BOAT_WATER,FALSE );	/*PAB ULTRA64 Don't fade water */
		terrain_Load( "HWTBTS_TRH0", &Temp );
		if( !Temp.pWorld ) {
			_bTexturesLoaded = FALSE;
			return;
		} 
		else {
			/* make our boat select world the currently selected world*/
			terrain_Attach( &Temp );
			/* load up the boats to race around in boat select*/
			for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
				/* record the boats top end*/
#if TARGET==ULTRA64	/*Use player LOD for player select*/
				_afBoatsTopEnd[i] = _InitBoats( i, BOATS_LOD_PLAYER, &_aPlayer[i], &_aWorldOb[i], &_aMotion[i] );
#else /*ULTRA64*/
				_afBoatsTopEnd[i] = _InitBoats( i, BOATS_LOD_HIGH, &_aPlayer[i], &_aWorldOb[i], &_aMotion[i] );	
#endif /*ULTRA64*/
			}			
			/* everything that we need loaded ok*/
			_bTexturesLoaded = TRUE;
		}
	}
	/* INIT VARS*/
	/* camera stuff for boat select*/
	Gamecam_pSector = NULL;
	_nCamAngle = XMATH_225_BRADIANS;
	_CamPos.p[1] = 11.5f;
	_CamLook.p[1] = 12.0f;
	if( _bTexturesLoaded ) {
		_UpdateCamera( &_aPlayer[0], 0 );
	}
	/* init our loop path structs for boat select*/
	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		_aLoopPath[i].nTemplateIndex = 0;
		_aLoopPath[i].nTemplateStartOffset = 5;
		_aLoopPath[i].fXScale = 3500.0f;
		_aLoopPath[i].fYScale = 4800.0f;
		_aLoopPath[i].fXTranslate = 0.0f;
		_aLoopPath[i].fYTranslate = 2150.0f;
		_aLoopPath[i].nRotation = 0;
		paths_GetPathLoopStartPos( &_aPathPos[i], &_naPathIndex[i], &_aLoopPath[i] );
		paths_GetPathLoopNextPos( &_aPathPos[i], &_naPathIndex[i], _naPathIndex[i], &_aLoopPath[i] );
	}
	/* reset the screen coverage for waterspray etc.*/
	gutil_ScreenCoverage_ResetTotal();
	gutil_ScreenCoverage_SetLimit( _MAX_SCREEN_AREA_SUM );
	/* reset various misc vars*/
	_nBoatSlot = _DEFAULT_BOAT_SLOT;
	_bAllowSelectionChanges = TRUE;
	_nBoatDiff = _DEFAULT_BOAT_DIFF_SLOT;
	_StageNum = WPR_SELECT_TRACK;
	_fScreenFadeIntensity = 0.0f;
	_nCounter = 0;
	_bSpecialFlashOn = TRUE;
	_nDelayVoice = 0;
	_nDelayedVoiceSelection = 0;
	_fFlameScale = 0.0f;
	_bNoAiCodeEntered = FALSE;
	_nNoAiCodeState = 0;
	_bNoCatchUpCodeEntered = FALSE;
	_nNoCatchUpCodeState = 0;
	_bAdvancedBoatsCodeEntered = bEnableAdvancedBoats;
	_nTrackCodeCount = 0;
	_nTrackCodeState = 0;
	_nBoatCodeCount = 0;
	_nBoatCodeState = 0;
		
	/* setup the track select table*/
	_SetupTrackSelectVars( bBonus1Enable, bBonus2Enable );
	/* setup the boat select table*/
	_SetupBoatSelectVars( bEnableAdvancedBoats );

	audio_Trigger( WPR_DEFS_WATER_SLOSHING, WPR_DEFS_WATER_SLOSHING_VOLUME, AUDIO_PAN_CENTER, AUDIO_TYPE_AMBIENT, AUDIO_PRIORITY_AMBIENT );

#if TARGET==DREAMCAST
//	dcStopFileLogging();
//	dcEnableCDCaching(FALSE);
//	r2file_OpenForRead("hydrodc.r2");
#endif // DREAMCAST

}
#endif

/* do everything needed to properly shutdown the selection wrappers*/
void wpr_select_Close( void ) {
	u32 i;
	Player_t *pTemp;

	if( _bTexturesLoaded ) {
		/* Reset terrian for the next time and free all resources...*/
		for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
			pTemp = &_aPlayer[i];
			((PhysData_t *)pTemp->Phys.pPhysData)->fPowerTopMPH = _afBoatsTopEnd[i]; 
			phys_FreeBoat( &_aPlayer[i].Phys );
		}
		_bTexturesLoaded = FALSE;
	}
	controls_SetSteeringFeedback( 0.0f );
	water_EnableCalc( FALSE );
	water_EnableDraw( FALSE );

	/* stop most all of our audio calls, just to be safe*/
	audio_GameIDStop( WPR_DEFS_CURSOR_CHANGE );
	audio_GameIDStop( WPR_DEFS_WATER_SLOSHING );
	audio_GameIDStop( WPR_DEFS_ATTRACT_MUSIC );
	/*audio_GameIDStop( WPR_DEFS_SELECT_MUSIC );*/
	audio_GameIDStop( SOUNDCALL_BONUS_SOUND_2 );
	audio_GameIDStop( WPR_DEFS_CURSOR_CHANGE );
	audio_GameIDStop( SOUNDCALL_HARD_TRACK_SIREN );
	audio_GameIDStop( SOUNDCALL_HARD_TRACK_WARNING );
	audio_GameIDStop( SOUNDCALL_HARD_BOAT_SIREN );
	audio_GameIDStop( SOUNDCALL_HARD_BOAT_WARNING );
	audio_GameIDStop( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND );
	audio_GameIDStop( SOUNDCALL_WRAP_CHOOSE_DESTINATION );
}

BOOL wpr_select_LoadStage( WprSelectStage_t Stage ) {
	
	if( !_bTexturesLoaded ) {
		return FALSE;
	}
	switch( Stage )
	{
	case WPR_SELECT_TRACK:
		_pCurrentSelectedTrack = &_aTrackSelections[_DEFAULT_TRACK_SLOT];
		_pCurrentSelectedTrack->bCurrent = TRUE;
		controls_ResetLatches();
		break;
	case WPR_SELECT_TRACK_ANIM:
		_fScreenFadeIntensity = 0.0f;
		break;
	case WPR_SELECT_BOAT:
		_pCurrentSelectedBoat = &_aBoatSelections[_DEFAULT_BOAT_SLOT];
		_pCurrentSelectedBoat->bCurrent = TRUE;
		controls_ResetLatches();
		/* turn the default boat on*/
		player_DoNotDrawBoat( _GetCurrentBoatSelectPlayerPtr(), FALSE );
		break;
	case WPR_SELECT_BOAT_ANIM:
		break;
	case WPR_SELECT_OPTIONS:
	case WPR_SELECT_OPTIONS_ANIM:
		break;
	default:
		XASSERT_NOW;
		break;
	}

	return TRUE;
}

/* returns the current stage of the select module*/
WprSelectStage_t wpr_select_GetCurrentStage( void ) {
	if( !_bTexturesLoaded ) {
		return 0;
	}
	return _StageNum;
}

void wpr_select_SetCurrentStage( WprSelectStage_t StageNum ) {
	XASSERT( StageNum < WPR_SELECT_STAGE_COUNT );

	if( !_bTexturesLoaded ) {
		return;
	}
	_StageNum = StageNum;
	controls_SetSteeringFeedback( 0.0f );

	switch( StageNum ) 
	{
	case WPR_SELECT_TRACK:
		_fFlameScale = 0.0f;
		audio_Trigger( SOUNDCALL_WRAP_CHOOSE_DESTINATION,
					   WPR_DEFS_VOICE_SELECTION_VOL,
					   AUDIO_PAN_CABINET,
					   AUDIO_TYPE_SPEECH,
					   AUDIO_PRIORITY_SPEECH );
		break;
	case WPR_SELECT_BOAT:
		_fFlameScale = 0.0f;
		audio_Trigger( SOUNDCALL_WRAP_CHOOSE_BOAT,
					   WPR_DEFS_VOICE_SELECTION_VOL,
					   AUDIO_PAN_CABINET,
					   AUDIO_TYPE_SPEECH,
					   AUDIO_PRIORITY_SPEECH );
		break;
	case WPR_SELECT_TRACK_ANIM:
		audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_TRACK_SIREN, 0.60f );
		audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_TRACK_WARNING, 0.60f );
		break;
	case WPR_SELECT_BOAT_ANIM:
		audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_BOAT_SIREN, 0.60f );
		audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_BOAT_WARNING, 0.60f );		
		break;
	case WPR_SELECT_OPTIONS:
	case WPR_SELECT_OPTIONS_ANIM:
		break;
	default:
		break;
	}
}

/* depending on what stage we are in, has a selection been made*/
/* returns the track/boat num selected or -1 if no selection has*/
/* been made*/
s32 wpr_select_CheckForSelection( int Player ) {
	
	if( !_bTexturesLoaded ) {
		return -1;
	}
	if( controls_Click_Player( CONTROLS_THROTTLE_BUTTON, Player ) & CONTROLS_THROTTLE_BUTTON) {
		if( _StageNum == WPR_SELECT_TRACK ) {
			return _pCurrentSelectedTrack->anTrackNum[ _pCurrentSelectedTrack->nCurrentSelection ];
		} else if( _StageNum == WPR_SELECT_BOAT ) {
			return _pCurrentSelectedBoat->anBoatNum[ _pCurrentSelectedBoat->nCurrentSelection ];
		} else {
			return _pCurrentSelectedOption->nCurrentSelection;
		}
	}
	
	return -1;
}

/* returns the current selected item, use this for*/
/* timeup situation, where an actual selection might*/
/* not have been made yet*/
s32 wpr_select_GetCurrentSelection( void ) {
	
	if( !_bTexturesLoaded ) {
		return -1;
	}
	switch( _StageNum )
	{
	case WPR_SELECT_TRACK:
	case WPR_SELECT_TRACK_ANIM:
		return _pCurrentSelectedTrack->anTrackNum[ _pCurrentSelectedTrack->nCurrentSelection ];
		break;
	case WPR_SELECT_BOAT:
	case WPR_SELECT_BOAT_ANIM:
		return _pCurrentSelectedBoat->anBoatNum[ _pCurrentSelectedBoat->nCurrentSelection ];
		break;
	case WPR_SELECT_OPTIONS:
	case WPR_SELECT_OPTIONS_ANIM:
		return _pCurrentSelectedOption->nCurrentSelection;
		break;
	default:
		XASSERT_NOW;
		break;
	}

	return -1;
}

void wpr_select_SetSelection( u32 nSelection ) {
	u32 i;

	if( !_bTexturesLoaded ) {
		return;
	}
	switch( _StageNum )
	{
	case WPR_SELECT_TRACK_ANIM:
	case WPR_SELECT_TRACK:
		XASSERT( nSelection < TRACKS_COUNT );
		/* unmark the old selection as the current selection*/
		_pCurrentSelectedTrack->bCurrent = FALSE;
		/* find the new current track*/
		for( i=0; i < _TRACK_SLOTS; i++ ) {
				
			if( _aTrackSelections[i].anTrackNum[0] == (s32)nSelection ) {
				_pCurrentSelectedTrack = &_aTrackSelections[i];
				_pCurrentSelectedTrack->bEnabled = TRUE;
				_pCurrentSelectedTrack->bCurrent = TRUE;
				_pCurrentSelectedTrack->nCurrentSelection = 0;
				audio_Trigger( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND,
							   _BLING_SELECT_SOUND_VOLUME,
							   AUDIO_PAN_CENTER,
							   AUDIO_TYPE_WRAPPER1,
							   AUDIO_PRIORITY_WRAPPER1 );
				audio_GameIDFadeOutAndStop( SOUNDCALL_WRAP_CHOOSE_DESTINATION, 0.55f );
				_nDelayVoice = 1;
				_nDelayedVoiceSelection = _pCurrentSelectedTrack->anSelectionSound[0];
				break;
			} else if( _aTrackSelections[i].anTrackNum[1] == (s32)nSelection ) {
				_pCurrentSelectedTrack = &_aTrackSelections[i];
				_pCurrentSelectedTrack->bEnabled = TRUE;
				_pCurrentSelectedTrack->bCurrent = TRUE;
				_pCurrentSelectedTrack->nCurrentSelection = 1;
						
				audio_Trigger( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND,
							   _BLING_SELECT_SOUND_VOLUME,
							   AUDIO_PAN_CENTER,
							   AUDIO_TYPE_WRAPPER1,
							   AUDIO_PRIORITY_WRAPPER1 );
				audio_GameIDFadeOutAndStop( SOUNDCALL_WRAP_CHOOSE_DESTINATION, 0.55f );
				_nDelayVoice = 1;
				_nDelayedVoiceSelection = _pCurrentSelectedTrack->anSelectionSound[1];
				break;
			}
		}
		break;
	case WPR_SELECT_BOAT_ANIM:
	case WPR_SELECT_BOAT:
		XASSERT( nSelection < _NUM_SELECTABLE_BOATS );
		/* unmark the old selection as the current selection*/
		_pCurrentSelectedBoat->bCurrent = FALSE;
		/* find the new current track*/
		for( i=0; i < _BOAT_SLOTS; i++ ) {
				
			if( _aBoatSelections[i].anBoatNum[0] == (s32)nSelection ) {
				_pCurrentSelectedBoat = &_aBoatSelections[i];
				_pCurrentSelectedBoat->bEnabled = TRUE;
				_pCurrentSelectedBoat->bCurrent = TRUE;
				_pCurrentSelectedBoat->nCurrentSelection = 0;
				audio_Trigger( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND,
							   _BLING_SELECT_SOUND_VOLUME,
							   AUDIO_PAN_CENTER,
							   AUDIO_TYPE_WRAPPER1,
							   AUDIO_PRIORITY_WRAPPER1 );
				audio_GameIDFadeOutAndStop( SOUNDCALL_WRAP_CHOOSE_DESTINATION, 0.55f );
				_nDelayVoice = 1;
				_nDelayedVoiceSelection = _pCurrentSelectedBoat->anSelectionSound[0];
				break;
			} else if( _aBoatSelections[i].anBoatNum[1] == (s32)nSelection ) {
				_pCurrentSelectedBoat = &_aBoatSelections[i];
				_pCurrentSelectedBoat->bEnabled = TRUE;
				_pCurrentSelectedBoat->bCurrent = TRUE;
				_pCurrentSelectedBoat->nCurrentSelection = 1;
						
				audio_Trigger( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND,
							   _BLING_SELECT_SOUND_VOLUME,
							   AUDIO_PAN_CENTER,
							   AUDIO_TYPE_WRAPPER1,
							   AUDIO_PRIORITY_WRAPPER1 );
				audio_GameIDFadeOutAndStop( SOUNDCALL_WRAP_CHOOSE_DESTINATION, 0.55f );
				_nDelayVoice = 1;
				_nDelayedVoiceSelection = _pCurrentSelectedBoat->anSelectionSound[1];
				break;
			}
		}
		break;
	case WPR_SELECT_OPTIONS:
		audio_Trigger( SOUNDCALL_WRAP_CHOOSE_TRACK_SOUND,
					   _BLING_SELECT_SOUND_VOLUME,
					   AUDIO_PAN_CENTER,
					   AUDIO_TYPE_WRAPPER1,
					   AUDIO_PRIORITY_WRAPPER1 );
		if(_pCurrentSelectedOption->nArrayIndex == 2)
			bEUROCOM_SPLITSCREEN = FALSE;
		else if(_pCurrentSelectedOption->nArrayIndex == 3)
			bEUROCOM_SPLITSCREEN = TRUE;
		break;
	case WPR_SELECT_OPTIONS_ANIM:
		break;
	default:
		XASSERT_NOW;
		break;
	}
}

void wpr_select_EnableSelectionChanges( BOOL bEnable ) {
	_bAllowSelectionChanges = bEnable;
}

#define SELECTION_AUTOREPEAT_DELAY	3	// Time before allow auto-repeat
#define SELECTION_STEER_CHOICE		0.3	// Amount of steering to latch next option

void wpr_select_Work( f32 fPercentOfStageTime ) {
	f32 fSteering, fMin, fMax, fTemp;
	BOOL bSelectionChanged;
	s32 nLastDiff, nNewIndex, nLastIndex;
	ControlState_t *pControl;
	u32 nPlayers,i;
	static int SelectionCount;		

	Player_nHumanCount = bEUROCOM_SPLITSCREEN ? 2 : 1;
	if( !_bTexturesLoaded ) {
		return;
	}
	switch( _StageNum )
	{
	case WPR_SELECT_TRACK:
	case WPR_SELECT_TRACK_ANIM:
		_fScreenFadeIntensity = fPercentOfStageTime;
		/* if selection is enabled*/
		if( _bAllowSelectionChanges ) {
			/* check for selection changes every 2 frames, */
			if( Gameloop_bOddFrame ) {
				bSelectionChanged = FALSE;
				nLastDiff = _pCurrentSelectedTrack->nDifficultyBar;
				nLastIndex = _pCurrentSelectedTrack->nArrayIndex;
				for(i = 0; i < 2; i++){ 
					pControl = i ? &Controls_InputState1 : &Controls_InputState;
					fSteering = pControl->fWithDeadZone[CONTROLS_WHEEL];
					if (fSteering <= -SELECTION_STEER_CHOICE){
						if ( SelectionCount <= 0 ) {
							nNewIndex = nLastIndex - 1;
							if(nNewIndex < 0)
								nNewIndex = _TRACK_SLOTS-1;	
							_pCurrentSelectedTrack->bCurrent = FALSE;
				
							_pCurrentSelectedTrack = &_aTrackSelections[nNewIndex];	
							_pCurrentSelectedTrack->bCurrent = TRUE;
				
							bSelectionChanged = TRUE;
							SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
						}
						else
							SelectionCount--;
				
					} 
					if (fSteering >= SELECTION_STEER_CHOICE ){
						if ( SelectionCount<=0 ) {
							nNewIndex = nLastIndex + 1;
							if(nNewIndex == _TRACK_SLOTS)
								nNewIndex = 0;
							_pCurrentSelectedTrack->bCurrent = FALSE;
				
							_pCurrentSelectedTrack = &_aTrackSelections[nNewIndex];	
							_pCurrentSelectedTrack->bCurrent = TRUE;
				
							bSelectionChanged = TRUE;
							SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
						}
					 else
						SelectionCount--;
					}
				}
				fMin = _pCurrentSelectedTrack->fMinSteeringRange;
				fMax = _pCurrentSelectedTrack->fMaxSteeringRange;
				if( bSelectionChanged ) {
					/* make sure that our new selection is enabled*/
					if( !_pCurrentSelectedTrack->bEnabled ) {
						if( nNewIndex == 0 ) {
							nNewIndex++;
							fMin = _aTrackSelections[0].fMinSteeringRange;
							fMax = _aTrackSelections[1].fMaxSteeringRange;
						} else if( nNewIndex == (_TRACK_SLOTS-1) ) {
							nNewIndex--;
							fMin = _aTrackSelections[_TRACK_SLOTS-2].fMinSteeringRange;
							fMax = _aTrackSelections[_TRACK_SLOTS-1].fMaxSteeringRange;
						} else {
							nNewIndex = nLastIndex;
/*
							fTemp = ((_pCurrentSelectedTrack->fMaxSteeringRange + _pCurrentSelectedTrack->fMinSteeringRange)*0.5f);
							if( fSteering > fTemp ) {
								nNewIndex++;
								fMin = fTemp;
								fMax = _aTrackSelections[nNewIndex].fMaxSteeringRange;
							} else {
								nNewIndex--;
								fMin = _aTrackSelections[nNewIndex].fMaxSteeringRange;
								fMax = fTemp;
							}
*/
						}
						bSelectionChanged = ( nLastIndex != nNewIndex ) ? TRUE : FALSE;
						_pCurrentSelectedTrack->bCurrent = FALSE;

						_pCurrentSelectedTrack = &_aTrackSelections[nNewIndex];	
						_pCurrentSelectedTrack->bCurrent = TRUE;
					}
				}
				wpr_defs_SetForceFeedBack( fMin, fMax, fSteering, FALSE );

				if( bSelectionChanged ) {
					_nTrackCodeState = 0;
					_nTrackCodeCount = 0;
					_nCounter = 0;
					_bSpecialFlashOn = TRUE;
					audio_Trigger( WPR_DEFS_CURSOR_CHANGE, WPR_DEFS_SELECTION_VOLUME, 200, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				}
				/* see if we have changed difficulties*/
				if( nLastDiff != _pCurrentSelectedTrack->nDifficultyBar ) {
					if( _pCurrentSelectedTrack->nDifficultyBar == 3 ) {
						if( !audio_Status_IsGameIDPlaying( SOUNDCALL_HARD_TRACK_SIREN ) ) {
							audio_Trigger( SOUNDCALL_HARD_TRACK_SIREN, _FIRE_VOLUME, 50, AUDIO_TYPE_WRAPPER1, AUDIO_PRIORITY_WRAPPER1 );
						} else {
							audio_GameIDFadeTo( SOUNDCALL_HARD_TRACK_SIREN, _FIRE_VOLUME, 0.15f );
						}
						if( !audio_Status_IsGameIDPlaying( SOUNDCALL_HARD_TRACK_WARNING ) &&
							!audio_Status_IsGameIDPlaying( SOUNDCALL_WRAP_CHOOSE_DESTINATION) ) {
							audio_Trigger( SOUNDCALL_HARD_TRACK_WARNING, WPR_DEFS_SELECTION_VOLUME, 0, AUDIO_TYPE_WRAPPER1, AUDIO_PRIORITY_WRAPPER1 );
						}
					} else if( nLastDiff == 3 ) {
						audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_TRACK_SIREN, 0.40f );	
					}
				}
			}
			_HandleSpecialCodes( _CODES_SECRET_TRACKS );
		}
		/*/////////////////////////////////////////////////////////////////////////////////////////////////*/
		/* move all of the boats so that when we go into boat select our boats are not at the starting line*/
		/*/////////////////////////////////////////////////////////////////////////////////////////////////*/
		if( _bTexturesLoaded ) {
			_MoveAllBoats( FALSE );
		}
		break;
	case WPR_SELECT_BOAT:
	case WPR_SELECT_BOAT_ANIM:
		_fScreenFadeIntensity = fPercentOfStageTime;
		/* if selection is enabled*/
		if( _bAllowSelectionChanges ) {
			/* check for selection changes every 2 frames, */
			if( Gameloop_bOddFrame ) {
				/* turn off the old selected boat*/
				player_DoNotDrawBoat( _GetCurrentBoatSelectPlayerPtr(), TRUE );
				/* check our steering wheel so that we can select a new boat*/
				bSelectionChanged = FALSE;
				nLastDiff = _pCurrentSelectedBoat->nDifficultyBar;
				nLastIndex = _pCurrentSelectedBoat->nArrayIndex;
				pControl = nPlayerSelecting ? &Controls_InputState1 : &Controls_InputState;
				fSteering = pControl->fWithDeadZone[CONTROLS_WHEEL];
				if (fSteering<=-SELECTION_STEER_CHOICE) {
					if ( (nLastIndex>0) && (SelectionCount<=0) ) {
						nNewIndex = nLastIndex - 1;
						_pCurrentSelectedBoat->bCurrent = FALSE;
						_pCurrentSelectedBoat = &_aBoatSelections[nNewIndex];	
						_pCurrentSelectedBoat->bCurrent = TRUE;
						bSelectionChanged = TRUE;
						SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
					}
					else
						SelectionCount--;
				} 
				else if(fSteering>=SELECTION_STEER_CHOICE) {
					if ( (nLastIndex<(_BOAT_SLOTS-1)) && (SelectionCount<=0) ) {
						nNewIndex = nLastIndex + 1;
						_pCurrentSelectedBoat->bCurrent = FALSE;
						_pCurrentSelectedBoat = &_aBoatSelections[nNewIndex];	
						_pCurrentSelectedBoat->bCurrent = TRUE;
						bSelectionChanged = TRUE;
						SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
					}
					else
						SelectionCount--;
				}
				
#ifndef EUROCOM_SELECTALL
				if( !_bAdvancedBoatsCodeEntered && bSelectionChanged ) {
					/* selection of an advanced boat is not permited yet*/
					if(!_aBoatSelections[nNewIndex].bEnabled){
						_pCurrentSelectedBoat->bCurrent = FALSE;
						_pCurrentSelectedBoat = &_aBoatSelections[nLastIndex];	
						_pCurrentSelectedBoat->bCurrent = TRUE;
						bSelectionChanged = FALSE;
					}
/*
					if( nNewIndex >= 6 ) {
					
						_pCurrentSelectedBoat->bCurrent = FALSE;
						_pCurrentSelectedBoat = &_aBoatSelections[nLastIndex];	
						_pCurrentSelectedBoat->bCurrent = TRUE;
						bSelectionChanged = FALSE;
					}
*/
				}
#endif	/*EUROCOM_SELECTALL*/
				fMin = _pCurrentSelectedBoat->fMinSteeringRange;
				fMax = _pCurrentSelectedBoat->fMaxSteeringRange;
				wpr_defs_SetForceFeedBack( fMin, fMax, fSteering, FALSE );

				if( bSelectionChanged ) {
					_nBoatCodeState = 0;
					_nBoatCodeCount = 0;
					_nCounter = 0;
					_bSpecialFlashOn = TRUE;
					audio_Trigger( WPR_DEFS_CURSOR_CHANGE, WPR_DEFS_SELECTION_VOLUME, 200, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				}
				/* turn off the old selected boat*/
				player_DoNotDrawBoat( _GetCurrentBoatSelectPlayerPtr(), FALSE );
				
				/* see if we have changed difficulties*/
				if( nLastDiff != _pCurrentSelectedBoat->nDifficultyBar ) {
					if( _pCurrentSelectedBoat->nDifficultyBar == 2 ) {
						if( !audio_Status_IsGameIDPlaying( SOUNDCALL_HARD_BOAT_SIREN ) ) {
							audio_Trigger( SOUNDCALL_HARD_BOAT_SIREN, _FIRE_VOLUME, 50, AUDIO_TYPE_WRAPPER1, AUDIO_PRIORITY_WRAPPER1 );
						} else {
							audio_GameIDFadeTo( SOUNDCALL_HARD_BOAT_SIREN, _FIRE_VOLUME, 0.15f );
						}
						if( !audio_Status_IsGameIDPlaying( SOUNDCALL_HARD_BOAT_WARNING ) &&
							!audio_Status_IsGameIDPlaying( SOUNDCALL_WRAP_CHOOSE_DESTINATION) ) {
							audio_Trigger( SOUNDCALL_HARD_BOAT_WARNING, WPR_DEFS_SELECTION_VOLUME, 0, AUDIO_TYPE_WRAPPER1, AUDIO_PRIORITY_WRAPPER1 );
						}
					} else if( nLastDiff == 2 ) {
						audio_GameIDFadeOutAndStop( SOUNDCALL_HARD_BOAT_SIREN, 0.40f );	
					}
				}
			}
			_HandleSpecialCodes( _CODES_NO_AI | _CODES_NO_CATCHUP | _CODES_ADVANCED_BOATS | _CODES_SECRET_BOATS );
		}
		/* move all of the boats*/
		if( _bTexturesLoaded ) {
			_MoveAllBoats( TRUE );
		}
		break;
	case WPR_SELECT_OPTIONS:
	case WPR_SELECT_OPTIONS_ANIM:
		_fScreenFadeIntensity = fPercentOfStageTime;
		/* if selection is enabled*/
		if( _bAllowSelectionChanges ) {
			/* check for selection changes every 2 frames, */
			if( Gameloop_bOddFrame ) {
				bSelectionChanged = FALSE;
				nLastIndex = _pCurrentSelectedOption->nArrayIndex;

			// Pressing left/right?
				for(i = 0; i < Player_nHumanCount; i++){
					fSteering = Player_aData[i].Controls.fWithDeadZone[CONTROLS_WHEEL];
					if (fSteering<=-SELECTION_STEER_CHOICE) {
						if ( (nLastIndex>2) && (SelectionCount<=0) ) {
							nNewIndex = nLastIndex - 1;
							_pCurrentSelectedOption->bCurrent = FALSE;
				
							_pCurrentSelectedOption = &_aOptionSelections[nNewIndex];	
							_pCurrentSelectedOption->bCurrent = TRUE;
				
							bSelectionChanged = TRUE;
							SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
						}
						else
							SelectionCount--;
					} else if(fSteering>=SELECTION_STEER_CHOICE) {
						if ( (nLastIndex<3) && (SelectionCount<=0) ) {
							nNewIndex = nLastIndex + 1;
							_pCurrentSelectedOption->bCurrent = FALSE;
				
							_pCurrentSelectedOption = &_aOptionSelections[nNewIndex];	
							_pCurrentSelectedOption->bCurrent = TRUE;
				
							bSelectionChanged = TRUE;
							SelectionCount = SELECTION_AUTOREPEAT_DELAY;	// Count before allow next selection
						}
						else
							SelectionCount--;
					}
				}	
				fMin = _pCurrentSelectedOption->fMinSteeringRange;
				fMax = _pCurrentSelectedOption->fMaxSteeringRange;
				if( bSelectionChanged ) {
					/* make sure that our new selection is enabled*/
					if( !_pCurrentSelectedOption->bEnabled ) {
						if( nNewIndex == 0 ) {
							nNewIndex++;
							fMin = _aOptionSelections[0].fMinSteeringRange;
							fMax = _aOptionSelections[1].fMaxSteeringRange;
						} else if( nNewIndex == (_TRACK_SLOTS-1) ) {
							nNewIndex--;
							fMin = _aOptionSelections[_OPTION_SLOTS-2].fMinSteeringRange;
							fMax = _aOptionSelections[_OPTION_SLOTS-1].fMaxSteeringRange;
						} else {
							fTemp = ((_pCurrentSelectedOption->fMaxSteeringRange + _pCurrentSelectedOption->fMinSteeringRange)*0.5f);
							if( fSteering > fTemp ) {
								nNewIndex++;
								fMin = fTemp;
								fMax = _aOptionSelections[nNewIndex].fMaxSteeringRange;
							} else {
								nNewIndex--;
								fMin = _aOptionSelections[nNewIndex].fMaxSteeringRange;
								fMax = fTemp;
							}
						}
						bSelectionChanged = ( nLastIndex != nNewIndex ) ? TRUE : FALSE;
						_pCurrentSelectedOption->bCurrent = FALSE;

						_pCurrentSelectedOption = &_aTrackSelections[nNewIndex];	
						_pCurrentSelectedOption->bCurrent = TRUE;
					}
					if(nNewIndex < 2)
						_nCurrentBar = 0;
					else if(nNewIndex < 4)
						_nCurrentBar = 1;
					else
						_nCurrentBar = 2;
				}
				if( bSelectionChanged ) {
					_bSpecialFlashOn = TRUE;
					audio_Trigger( WPR_DEFS_CURSOR_CHANGE, WPR_DEFS_SELECTION_VOLUME, 200, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				}
				wpr_defs_SetForceFeedBack( fMin, fMax, fSteering, FALSE );
			}
			_HandleSpecialCodes( _CODES_SECRET_TRACKS );
		}
		/*/////////////////////////////////////////////////////////////////////////////////////////////////*/
		/* move all of the boats so that when we go into boat select our boats are not at the starting line*/
		/*/////////////////////////////////////////////////////////////////////////////////////////////////*/
		if( _bTexturesLoaded ) {
			_MoveAllBoats( FALSE );
		}
		break;


		break;
	default:
		XASSERT_NOW;
		break;
	}	
	/* take care of our special flash counter that changes everytime there is a selection change*/
	++_nCounter;
	if( (_nCounter & 0x3) == 0x3 ) {
		_bSpecialFlashOn = !_bSpecialFlashOn;
	}

	if( _nDelayVoice ) {
		_nDelayVoice++;
		if( _nDelayVoice == 9 ) {
			audio_Trigger( _nDelayedVoiceSelection,
						   WPR_DEFS_VOICE_SELECTION_VOL,
						   AUDIO_PAN_CABINET,
						   AUDIO_TYPE_WRAPPER1,
						   AUDIO_PRIORITY_WRAPPER1 );
			_nDelayVoice = 0;
			_nDelayedVoiceSelection = 0;
		}
	}

}

void wpr_select_Draw( f32 fTime ) {
	/* if the textures could not be loaded, use the old text based system*/
	if( !_bTexturesLoaded ) {
		/* clear the frame buffer*/
		gutil_ClearFrameBuffer3( 128, 64, 32 );	
		/* print an error mode*/
		text_SetFont( TEXT_FONT_LARGE );
		Text_fScale = 1.10f;
		text_PrintStr( 50.0f, 50.0f, "ERROR LOADING SELECTION TEXTURES\n" );
		return;
	} else {
		switch( _StageNum )
		{
		case WPR_SELECT_TRACK:
			_DrawTrackSelect( TRUE, (u32)fTime );
			break;
		case WPR_SELECT_TRACK_ANIM:
			_DrawTrackSelect( FALSE, 0 );
			break;
		case WPR_SELECT_BOAT:
			_DrawBoatSelect( TRUE, (u32)fTime );
			break;
		case WPR_SELECT_BOAT_ANIM:
			if(nPlayerSelecting == 0)
				_DrawBoatSelect( TRUE, 0 );	
			else
				_DrawBoatSelect( FALSE, 0 );	
			break;
		case WPR_SELECT_OPTIONS:
			_DrawOptionsSelect(TRUE, (u32)fTime);
			break;	
		case WPR_SELECT_OPTIONS_ANIM:
			_DrawOptionsSelect(FALSE, 0);
			break;
		default:
			XASSERT_NOW;
			break;
		}
	}
}

void wpr_select_SetNoAi( void ) {
	if( !_bTexturesLoaded ) {
		return;
	}
	if( !_bNoAiCodeEntered ) {
		_bNoAiCodeEntered = TRUE;
		_nNoAiCodeState = 0;
		audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
	}
}

BOOL wpr_select_GetNoAi( void ) {
	if( !_bTexturesLoaded ) {
		return FALSE;
	}
	return _bNoAiCodeEntered;
}

void wpr_select_SetNoCatchUp( void ) {
	if( !_bTexturesLoaded ) {
		return;
	}
	if( !_bNoCatchUpCodeEntered ) {
		_bNoCatchUpCodeEntered = TRUE;
		_nNoCatchUpCodeState = 0;
		audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
	}
}

BOOL wpr_select_GetNoCatchUp( void ) {
	if( !_bTexturesLoaded ) {
		return FALSE;
	}
	return _bNoCatchUpCodeEntered;
}

BOOL wpr_select_CanWeSelectAnAdvancedBoat( void ) {
	return _bAdvancedBoatsCodeEntered;
}

/*==================*/
/* private functions*/

static void _DrawTrackSelect( BOOL bPreSelection, u32 nTime ) {
	u32 i, nTemp, nPriorState;

	/* setup the ortho draw*/
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	
	/* draw the back ground image, don't compare these pixels, but enable the z buffer*/
	nPriorState = gutil_ZbufferSetState( GUTIL_ZBUFFER_STATE_WRITE_ONLY );
	mesh3d_DrawOrtho( _pTrackBG, 0.0f, 0.0f, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	gutil_ZbufferSetState( nPriorState );
	
	/* draw the icons and the time*/
//	_DrawIconsAndTime( nTime, bPreSelection );
	/* draw the heading at the top of the page*/
#if TARGET!=ULTRA64	/* No track select shadows */
	mesh3d_DrawOrtho( _pText_ChooseA, _CHOOSE_TRACK1_X, _CHOOSE_TRACK_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pText_Track, _CHOOSE_TRACK2_X, (_CHOOSE_TRACK_Y - 2.0f), WPR_DEFS_LAYER2_Z, 0, 1.0f );
#endif	/*ULTRA64*/
	
	/* draw colored bars*/
#if TARGET!=ULTRA64	/* No track select shadows */
	for( i=0; i < 6; i++ ) {
		// Don't draw bonus bars (not used any more)
		if(i == 0 || i == 4)
			continue;
		// Blue Bar
		if(i == 2){
			if( _pCurrentSelectedTrack->nDifficultyBar != 2 ) 
				mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
			else
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pTrackDiffBars[2], _aTrackBlueDiffBar[0].p[0], _aTrackBlueDiffBar[0].p[1], WPR_DEFS_LAYER2_Z, 0, 1.0f );
			mesh3d_DrawOrtho( _pLeftBlueBar, _aTrackBlueDiffBar[1].p[0], _aTrackBlueDiffBar[1].p[1], WPR_DEFS_LAYER2_Z, 0, 1.0f );
			mesh3d_DrawOrtho( _pTrackTextEasy, _aTrackBlueDiffBar[2].p[0], _aTrackBlueDiffBar[2].p[1], WPR_DEFS_LAYER2_Z, 0, 1.0f );
		}	
		// Bonus track bars
		else if(i == 5){
			if( _pCurrentSelectedTrack->nDifficultyBar != 5 )
				mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
			else
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho(_LeftGreenBar, -75, -145, WPR_DEFS_LAYER2_Z, 0, 1.0f);
			mesh3d_DrawOrtho(_RightGreenBar, 72, -145, WPR_DEFS_LAYER2_Z, 0, 1.0f);
			mesh3d_DrawOrtho(_MiddleGreenBar, 0, -115, WPR_DEFS_LAYER2_Z, 0, 1.0f);
		}	
		// Bar is not selected track bar
		else if( i != _pCurrentSelectedTrack->nDifficultyBar) {
			mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pTrackDiffBars[i], _aTrackDiffBar[i].p[0], _aTrackDiffBar[i].p[1], WPR_DEFS_LAYER2_Z, 0, 1.0f );
		}
		else{
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pTrackDiffBars[i], _aTrackDiffBar[i].p[0], _aTrackDiffBar[i].p[1], WPR_DEFS_LAYER2_Z, 0, 1.0f );
		}
	}


#endif	/*ULTRA64*/
	/* draw the selectable objects*/
	for( i=0; i < _TRACK_SLOTS; i++ ) {
		_DrawATrackSelectionObject( &_aTrackSelections[i], bPreSelection );
	}

	/* draw the flames if necessary*/
	if( _pCurrentSelectedTrack->nDifficultyBar == 3 ) {
		/* do we need to scale the flame up*/
		if( _fFlameScale < 1.0f ) {
			_fFlameScale += 0.15f;
			if( _fFlameScale > 1.0f ) {
				_fFlameScale = 1.0f;
			}
		} else {
			_fFlameScale = 1.0f + (xmath_RandomFloat() * 0.1f);
		}
	} else {
		/* do we need to scale the flame down*/
		if( _fFlameScale != 0.0f ) {
			_fFlameScale -= 0.15f;
			if( _fFlameScale <= 0.01f ) {
				_fFlameScale = 0.0f;
			}
		}
	}
	if( _fFlameScale != 0.0f ) {
		/* draw the flames on under the hard heading*/
		nTemp = Gameloop_nFrameCounter % _NUM_FIRE_FRAMES;
		for( i=0; i < 5; i++ ) {
			nTemp += 4;
			if( nTemp >= _NUM_FIRE_FRAMES ) {
				nTemp -= _NUM_FIRE_FRAMES;
			}
			_pFlame->pMtl->pTexDef = _pFireCell[nTemp];
#if TARGET==ULTRA64	/* Move flame up on track select */
			mesh3d_DrawOrtho( _pFlame, 140.0f + (i * 18.0f), 88.0f, WPR_DEFS_LAYER6_Z, 0, _fFlameScale );
#else	/*ULTRA64*/
			mesh3d_DrawOrtho( _pFlame, 140.0f + (i * 18.0f), 57.0f, WPR_DEFS_LAYER6_Z, 0, _fFlameScale );
#endif	/*ULTRA64*/
		}
	}

	/* draw hard track plate text over the flame*/
/*
	if(!_aTrackDiffBarEnabled[3]){
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, _TRACK_SELECT_GRAYED_ALPHA, 0.0f );
		mesh3d_DrawOrtho( _pHardTrackText, _aTrackDiffBar[3].p[0], _aTrackDiffBar[3].p[1], WPR_DEFS_LAYER7_Z, 0, 1.0f );
	}
	else{
		if( _pCurrentSelectedTrack->nDifficultyBar == 3 ) {
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pHardTrackText, _aTrackDiffBar[3].p[0], _aTrackDiffBar[3].p[1], WPR_DEFS_LAYER7_Z, 0, 1.0f );
		} else {
			mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pHardTrackText, _aTrackDiffBar[3].p[0], _aTrackDiffBar[3].p[1], WPR_DEFS_LAYER7_Z, 0, 1.0f );
		}
	}	
*/
	_DrawAnalogAndButton();
}

static void _DrawBoatSelect( BOOL bPreSelection, u32 nTime ) {
	u32 i, nTemp, nPriorState;

	/*////////////////////////*/
	/* draw the boat and water*/
	/*////////////////////////*/
	gutil_ScreenCoverage_ResetTotal();
	/* Set up lighting...*/
	mesh3d_ClearLightList();
	/* Set up the camera*/
#if TARGET==ULTRA64	/* N64 boat select uses different camera method! */
	xfm_InitCameraRot( &_Camera, _CamLook.p[0],_CamLook.p[1],_CamLook.p[2], _nCamAngle,XMATH_DEGREES_TO_BRADIANS(25.0),0);
	/* Set clipping region for water, to help speed; coords read from screen grab */
	gDPSetScissor(N64GfxDlPtr++, G_SC_NON_INTERLACE, 122, 90, 394, 186);
	ViewDist = -35;			/* Distance of camera from point*/
	NearPlaneClip = 15;
	FarPlaneClip = 100;		/* Bring far plane in to increase z-buffer accuracy and help speed*/
	SetN64CameraMatrix();
#else	/*ULTRA64*/
	xfm_InitCameraLookFromVec( &_Camera, &_CamPos, &_CamLook );
#endif	/*ULTRA64*/
	xfm_BuildCameraXfmAndInitStack( &_Camera );
	/* clear the z buffer and the screen*/
	gutil_ClearFrameBuffer3( 255, 255, 255 );
	/* draw the world*/
	world_DrawSectorViewDir( Gamecam_pSector, SECTOR_DIRECTION_FORWARD, FALSE );	/*PAB*/

#if TARGET==ULTRA64	/* N64 boat select uses different camera method! */
	/* Put clipping region back to normal ready for sprites */
	gDPSetScissor(N64GfxDlPtr++, G_SC_NON_INTERLACE, Screen_LeftRight_Clip, Screen_TopBottom_Clip,
	 Screen_Width-Screen_LeftRight_Clip, Screen_Height-Screen_TopBottom_Clip);
#endif	/*ULTRA64*/

	/* setup the ortho draw*/
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	
	/*//////////////////*/
	/* draw LAYER1 stuff*/
	/*//////////////////*/
	/* draw the back ground image, don't compare these pixels, but enable the z buffer*/
	nPriorState = gutil_ZbufferSetState( GUTIL_ZBUFFER_STATE_WRITE_ONLY );
	mesh3d_DrawOrtho( _pBoatBG, 0.0f, 0.0f, WPR_DEFS_LAYER1_Z, 0, 1.0f );
	gutil_ZbufferSetState( nPriorState );
	/*//////////////////*/
	/* draw LAYER2 stuff*/
	/*//////////////////*/
	/* draw the icons and the time*/
//	_DrawIconsAndTime( nTime, bPreSelection );

	/*//////////////////*/
	/* draw LAYER3 stuff*/
	/*//////////////////*/
	/* draw the heading at the top of the page*/
#if TARGET!=ULTRA64	/* No track select shadows */
	mesh3d_DrawOrtho( _pText_ChooseA, _CHOOSE_BOAT1_X, _CHOOSE_BOAT_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
	mesh3d_DrawOrtho( _pText_Boat, _CHOOSE_BOAT2_X, (_CHOOSE_BOAT_Y - 1.0f), WPR_DEFS_LAYER3_Z, 0, 1.0f );
#endif	/*ULTRA64*/

	/* draw colored bars*/
#if TARGET!=ULTRA64	/* No boat shadows */
	for( i=0; i < 3; i++ ) {
		if( i != _pCurrentSelectedBoat->nDifficultyBar ) {
			if(!_aBoatDiffBarsEnabled[i]) {
				/* ghosted hard bars*/
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 0.2779f, 0.0f );
				mesh3d_DrawOrtho( _pBoatDiffBars[i], _aBoatDiffBar[i].p[0], _aBoatDiffBar[i].p[1], WPR_DEFS_LAYER3_Z, 0, 1.0f );
			} else {
				/* darkened non selected bars*/
				mesh3d_SetOrthoEffects( 0.3f, 0.3f, 0.3f, 1.0f, 0.0f );
				mesh3d_DrawOrtho( _pBoatDiffBars[i], _aBoatDiffBar[i].p[0], _aBoatDiffBar[i].p[1], WPR_DEFS_LAYER3_Z, 0, 1.0f );
			}
		} else {
			/* current bar*/
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			mesh3d_DrawOrtho( _pBoatDiffBars[ _pCurrentSelectedBoat->nDifficultyBar ],
							  _aBoatDiffBar[ _pCurrentSelectedBoat->nDifficultyBar ].p[0],
							  _aBoatDiffBar[ _pCurrentSelectedBoat->nDifficultyBar ].p[1],
							  WPR_DEFS_LAYER3_Z, 0, 1.0f );
		}
	}
#endif	/*ULTRA64*/
	/* draw the frame for the boat window, changing the color based on the current diff bar and disabling the z buffer*/
	nPriorState = gutil_ZbufferSetState( GUTIL_ZBUFFER_STATE_WRITE_ONLY );
	mesh3d_SetOrthoEffects( 0.0f, 0.0f, 0.0f, 1.0f, 0.0f );
	/* draw the shadow first*/
#if TARGET!=ULTRA64	/* No boat select shadows */
	mesh3d_DrawOrtho( _pBoatFrameShadow, (_BOAT_FRAME_X - 4.0f), _BOAT_FRAME_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
#endif	/*ULTRA64*/
#if TARGET!=ULTRA64	/* Draw boat select frame in correct colour */
	switch( _pCurrentSelectedBoat->nDifficultyBar )
	{
	case 0:
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 0.0f, 1.0f, 0.0f );
		break;
	case 1:
		mesh3d_SetOrthoEffects( 0.0f, 0.0f, 1.0f, 1.0f, 0.0f );
		break;
	case 2:
		mesh3d_SetOrthoEffects( 1.0f, 0.0f, 0.0f, 1.0f, 0.0f );
		break;
	default:
		XASSERT_NOW;
		break;
	}
	mesh3d_DrawOrtho( _pBoatFrame, _BOAT_FRAME_X, _BOAT_FRAME_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
#else	/*ULTRA64*/
	/* Select correct palette for boat frame... Blue,Yellow or Red!*/
	mesh3d_DrawOrtho2( _pBoatFrame, _BOAT_FRAME_X, _BOAT_FRAME_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f , 0,0,_nBoatDiff, _pBoatFrame->nFlags);
#endif	/*ULTRA64*/
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	gutil_ZbufferSetState( nPriorState );

	/*////////////////////////////*/
	/* DRAW THE SELECTABLE OBJECTS*/
	/*////////////////////////////*/
	for( i=0; i < _BOAT_SLOTS; i++ ) {
		if(i > 8)
			_DrawABoatSelectionObject( &_aBoatSelections[i], bPreSelection, 1.0f );
		else
			_DrawABoatSelectionObject( &_aBoatSelections[i], bPreSelection, 1.0f );
	}
	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );

	/*//////////////////*/
	/* draw LAYER6 stuff*/
	/*//////////////////*/
	/* draw the flames on under the hard heading*/
	if( _pCurrentSelectedBoat->nDifficultyBar == 2 ) {
		/* do we need to scale the flame up*/
		if( _fFlameScale < 1.0f ) {
			_fFlameScale += 0.15f;
			if( _fFlameScale > 1.0f ) {
				_fFlameScale = 1.0f;
			}
		} else {
			_fFlameScale = 1.0f + (xmath_RandomFloat() * 0.1f);
		}
	} else {
		/* do we need to scale the flame down*/
		if( _fFlameScale != 0.0f ) {
			_fFlameScale -= 0.15f;
			if( _fFlameScale <= 0.01f ) {
				_fFlameScale = 0.0f;
			}
		}
	}
	if( _fFlameScale != 0.0f ) {
		nTemp = Gameloop_nFrameCounter % _NUM_FIRE_FRAMES;
		for( i=0; i < 4; i++ ) {
			nTemp += 4;
			if( nTemp >= _NUM_FIRE_FRAMES ) {
				nTemp -= _NUM_FIRE_FRAMES;
			}
			_pFlame->pMtl->pTexDef = _pFireCell[nTemp];
#if TARGET==ULTRA64	/* Move flame up on boat select */
			mesh3d_DrawOrtho( _pFlame, 170.0f + (i * 17.0f), 120.0f, WPR_DEFS_LAYER3_Z + 100.0f, 0, _fFlameScale );
#else	/*ULTRA64*/
			mesh3d_DrawOrtho( _pFlame, 178.0f + (i * 17.0f), 80.0f, WPR_DEFS_LAYER3_Z + 100.0f, 0, _fFlameScale );
#endif	/*ULTRA64*/
		}
	}
	if( _bNoAiCodeEntered ) {
		mesh3d_DrawOrtho( _pNoAiIcon, 143.0f, -175.0f, WPR_DEFS_LAYER6_Z, 0, 0.5f );
	}
	if( _bNoCatchUpCodeEntered ) {
		mesh3d_DrawOrtho( _pNoCatchUpIcon, 108.0f, -175.0f, WPR_DEFS_LAYER6_Z, 0, 0.5f );
	}

	_DrawAnalogAndButton();
	
	/* fade the screen if we have made a selection*/
	if( !bPreSelection ) {
		gutil_DrawBlackOrWhiteScreenFade( _fScreenFadeIntensity, FALSE );
	}
}

static void _UpdateCamera( Player_t *pPlayer, u32 nBoatNum ) {
	Vec2_t Temp;
	f32 fTemp;

	if( nBoatNum >= _NUM_SELECTABLE_BOATS ) {
		nBoatNum = 0;
	}

	_nCamAngle += 300;
	fTemp = xmath_sin( Gameloop_nFrameCounter << 8 );
	/* adjust the camera position and lookat point (y values)*/
	_CamPos.p[1] = _afBoatYCamLookup[nBoatNum].p[0] + fTemp * 3.5f;
	_CamLook.p[1] = _afBoatYCamLookup[nBoatNum].p[1] + fTemp * 1.5f;
	/* spin the camera around the boat*/
	vec2_Set( &Temp, pPlayer->pHullDir->p[0], pPlayer->pHullDir->p[2] ); 
	vec2_Unit( &Temp );
	/* adjust the camera's zoom (xz values)*/
	fTemp *= _afBoatZoomCamLookup[nBoatNum].p[0];
	fTemp += _afBoatZoomCamLookup[nBoatNum].p[1];
	vec2_Scale1( &Temp, fTemp );
	vec2_RotateBradians( &Temp, _nCamAngle );
	
	_CamPos.p[0] = Temp.p[0] + pPlayer->pWorldOb->Tws.CurrentWorldPos.p[0];
	_CamPos.p[2] = Temp.p[1] + pPlayer->pWorldOb->Tws.CurrentWorldPos.p[1];

	_CamLook.p[0] = pPlayer->pWorldOb->Tws.CurrentWorldPos.p[0];
	_CamLook.p[2] = pPlayer->pWorldOb->Tws.CurrentWorldPos.p[1];
	Gamecam_pSector = world_FindSectorContainingPoint( pPlayer->Phys.pBoatSector, _CamPos.p[0], _CamPos.p[2] );
}

/* do everything needed to get a particular boat into a boat select player struct, (will set the boat's don't draw flag)*/
/* returns the original topspeed of the boat*/
static f32 _InitBoats( u32 nBoatType, u32 nLod, Player_t *pPlayer, WorldOb_t *pWorldOb, Motion_t *pMotion ) {
	BOOL bReturn;
	f32 fTemp;

	XASSERT( nBoatType < BOATS_COUNT );

	player_SetAPlayerToDefault( pPlayer );
	pPlayer->Powerup.fBoosterTime = 0.0f;
	pPlayer->nBoatType = nBoatType;
	pPlayer->Controls.fNoDeadZone[CONTROLS_THROTTLE] = 1.0f;
	pPlayer->Controls.fWithDeadZone[CONTROLS_THROTTLE] = 1.0f;
	
	worldob_Init( pWorldOb );
	/* set the boat's worldob flags*/
	pWorldOb->nFlags |= ( WORLDOB_FLAG_TRIPWIRE |
						  WORLDOB_FLAG_OFFWORLDPERSIST | 
						  WORLDOB_FLAG_SPECIAL_PHYS );
	/* set the boat's worldob userdata to point to its player's struct (and vice versa)*/
	pWorldOb->pUserObject = pPlayer;
	pPlayer->pWorldOb = pWorldOb;
	/* setup the worldob work and draw functions*/
	pWorldOb->pWorkFcn = Boats_apWorkFunctions[nBoatType];
	pWorldOb->pDrawFcn = Boats_apDrawFunctions[nBoatType];
	/* place boats to their start position in the world*/
	terrain_SetBoatStartPositions( pPlayer, 0, FALSE ); 
	orient_BuildRotYXZ( &pWorldOb->Orient, pPlayer->Phys.nHeading, 0, 0 );
	/* set the boat's pHullDir pointer*/
	pPlayer->pHullDir = (Vec3_t *)&pWorldOb->Orient.Rot.m[2];
	/* load the boats parts and setup its animations*/
	(*Boats_apLoadFunctions[nBoatType])( nLod, 0, pPlayer, FALSE );
	/* init worldobs bound*/
	worldob_InitBoundsFromMesh( pWorldOb, pPlayer->pDasBoot );
	/* set our light sensor*/
	vec3_Set( &pWorldOb->SensorDir, 0.0f, 1.0f, -1.0f );
	/* add worldob to the system*/
	worldob_Add( pWorldOb, NULL );
	/* set and init the boat's motion struct*/
	pWorldOb->pMotion = pMotion;
	bReturn = phys_InitBoat( Boats_apszBoatPhysDataNames[nBoatType],
							 &pPlayer->Phys,
							 &pPlayer->pDasBoot->Bound,
							 pWorldOb,
							 TRUE,	/* Init shadow*/
							 TRUE,
							 PHYS_TYPE_SELECT_RACER );
	/* turn off boat sounds*/
	pPlayer->Phys.nControlFlags |= ( PHYS_CONTROLFLAG_SILENT |
									 PHYS_CONTROLFLAG_NO_BOOSTER |
									 PHYS_CONTROLFLAG_NO_HOVER |
									 PHYS_CONTROLFLAG_NO_STUNTS |
									 PHYS_CONTROLFLAG_NO_FLYSTEER );
	XASSERT( bReturn );
	
	fTemp = ((PhysData_t *)pPlayer->Phys.pPhysData)->fPowerTopMPH;
	/* force all boats to go 300 mph, except rad hazard*/
	if( nBoatType != BOATS_TYPE_RAD_HAZARD ) {
		((PhysData_t *)pPlayer->Phys.pPhysData)->fPowerTopMPH = 300.0f;
	} else {
		((PhysData_t *)pPlayer->Phys.pPhysData)->fPowerTopMPH = 200.0f;
	}

	player_DoNotDrawBoat( pPlayer, TRUE );

	return fTemp;
}

static void _MoveAllBoats( BOOL bBoatSelect ) {
	Vec2_t Temp;
	u32 i;
	f32 fSteering, fDistance;

	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		_aPlayer[i].Phys.fSteer = _aPlayer[i].Controls.fWithDeadZone[CONTROLS_WHEEL];
		_aPlayer[i].Phys.fSteerNoDeadZone = _aPlayer[i].Controls.fNoDeadZone[CONTROLS_WHEEL];	/* SER: Added 980923*/
		_aPlayer[i].Phys.fThrottle = _aPlayer[i].Controls.fWithDeadZone[CONTROLS_THROTTLE];
		_aPlayer[i].Phys.bHydroBoostersOn = FALSE;
	}

	phys_SimulateAll();

	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		_aPlayer[i].fSpeedMph = _aPlayer[i].Phys.fSpeedMPH;
		_aPlayer[i].fRPM = _aPlayer[i].Phys.fPropRPM * 10000.0f;
	}

	if( bBoatSelect ) {
if(bEUROCOM_WORLDOBWORKFUNCS){
		Gamecam_pSector = NULL;
}	/*EUROCOM_WORLDOBWORKFUNCS*/
		/* call the boat's work function*/
		worldob_CallAllWorkFcns( Gameloop_nDeltaFrames,Gameloop_n2xFrameCounter );
		/* update the camera*/
		_UpdateCamera( _GetCurrentBoatSelectPlayerPtr(), _pCurrentSelectedBoat->anBoatNum[ _pCurrentSelectedBoat->nCurrentSelection ] );
	}
	
	/* do the particles work*/
	particle_CallWorkFunctions();
	particle_CallCellBlocksWorkFunctions();
	waterspray_Work();
	
	worldob_TransformAllObjectLights();

	if( bBoatSelect ) {
		phys_Work();
	}

	/* steer the boats around the path*/
	for( i=0; i < _NUM_SELECTABLE_BOATS; i++ ) {
		Temp.p[0] = _aPlayer[i].pWorldOb->Orient.Pos.p[0] - _aPathPos[i].p[0];
		Temp.p[1] = _aPlayer[i].pWorldOb->Orient.Pos.p[2] - _aPathPos[i].p[1];
		fDistance = vec2_CalcMag( &Temp );
		if( fDistance <= 400.0f ) {
			paths_GetPathLoopNextPos( &_aPathPos[i], &_naPathIndex[i], _naPathIndex[i], &_aLoopPath[i] );
		}
		fSteering = player_SteerPlayerToPoint( &_aPlayer[i], &_aPathPos[i] );
		controls_ComputeAndSetSteerDeadZone( &_aPlayer[i].Controls, fSteering );
	}
}

static void _DrawIconsAndTime( u32 nTime, BOOL bDrawIcons ) {
	u32 nTemp;
	f32 fTemp;

	if( bDrawIcons ) {
		/* draw the icons in the cornors of the screen*/
		nTemp = (u32)( xmath_sin( Gameloop_nFrameCounter << 10 ) * 10000.0f );
		mesh3d_DrawOrtho( _pIcon_Wheel_Shadow, WPR_DEFS_ICON_WHEEL_SHADOW_X, WPR_DEFS_ICON_WHEEL_SHADOW_Y, WPR_DEFS_LAYER2_Z, nTemp, 1.0f );	
		mesh3d_DrawOrtho( _pIcon_Wheel, WPR_DEFS_ICON_WHEEL_X, WPR_DEFS_ICON_WHEEL_Y, WPR_DEFS_LAYER3_Z, nTemp, 1.0f );
				
		mesh3d_DrawOrtho( _pIcon_Throttle, WPR_DEFS_ICON_THROTTLE_X, WPR_DEFS_ICON_THROTTLE_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
		fTemp = 28.0f + (xmath_sin( Gameloop_nFrameCounter << 12 ) * 5.0f);
		mesh3d_DrawOrtho( _pIcon_Arrow, WPR_DEFS_ICON_THROTTLE_X - fTemp, WPR_DEFS_ICON_THROTTLE_ARROW_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
	
		mesh3d_DrawOrtho( _pText_Select, WPR_DEFS_ICON_SELECT_X, WPR_DEFS_ICON_SELECT_Y, WPR_DEFS_LAYER4_Z, 0, 1.0f );
		mesh3d_DrawOrtho( _pText_Accept, WPR_DEFS_ICON_ACCEPT_X, WPR_DEFS_ICON_ACCEPT_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );

		/* set our throttle button lights*/
		if( (Gameloop_nFrameCounter & 0x7) < 0x4 ) {
			controls_TurnLightsOn( CONTROLS_LIGHT_THROTTLE );
		} else {
			controls_TurnLightsOff( CONTROLS_LIGHT_THROTTLE );
		}
	} else {
		controls_TurnLightsOff( CONTROLS_LIGHT_THROTTLE );
	}
	/* draw the countdown timer*/
	if( nTime > 99 ) {
		nTime = 99;
	}
	nTemp = nTime/10;
	mesh3d_DrawOrtho( _pText_Numbers[nTemp], WPR_DEFS_TIME_DIGIT1_X, WPR_DEFS_TIME_DIGIT_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
	nTemp = nTime - (nTemp * 10);
	mesh3d_DrawOrtho( _pText_Numbers[nTemp], WPR_DEFS_TIME_DIGIT2_X, WPR_DEFS_TIME_DIGIT_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
}

/* call once per game frame*/
static void _HandleSpecialCodes( u32 nWhatCode ) {
	u32 nViewButtons;
	
	return;

	/* check our controls*/
	nViewButtons = controls_Click( CONTROLS_VIEW_BUTTONS ) & CONTROLS_VIEW_BUTTONS;

	/* CHECK FOR THE NO AI CODE*/
	if( nWhatCode & _CODES_NO_AI ) {
		/* CODE = view1 + view2 (while throttle at 0), then throttle less than -0.75 (while view1 + 2)*/
		if( !_bNoAiCodeEntered ) {
			/* make sure the throttle is set to the reverse half of its range*/
			if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] < 0.2f ) {
				if( _nNoAiCodeState == 0 ) {
					_nNoAiCodeState = 1;					
				}
			} else {
				_nNoAiCodeState = 0;
			}
			switch( _nNoAiCodeState )
			{
			case 0:
				/* do nothing*/
				break;
			case 1:
				/* look for view button 1 and 2 ( while throttle is around 0 )*/
#ifdef ARCADEPC
				if( Controls_InputState.nButtons == (CONTROLS_VIEW1_BUTTON | CONTROLS_VIEW2_BUTTON) ) {
#else
				if( Controls_InputState.nButtons == CONTROLS_START_BUTTON ) {
#endif
					if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] < 0.2f && 
						Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] > -0.5f ) {
						_nNoAiCodeState++;
					} else {
						/* the throttle was not in the correct position*/
						_nNoAiCodeState = 0;
					}
				} else {
					/* some other key was hit, reset*/
					_nNoAiCodeState = 0;
				}
				break;
			case 2:
				/* look for view button 1 and 2 ( while throttle is all the way back )*/
#ifdef ARCADEPC
				if( Controls_InputState.nButtons == (CONTROLS_VIEW1_BUTTON | CONTROLS_VIEW2_BUTTON) ) {
#else
				if( Controls_InputState.nButtons == CONTROLS_START_BUTTON ) {
#endif
					if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] <= -0.5f ) {	
						_nNoAiCodeState = 0;
						/* the code has been entered*/
						audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
						_bNoAiCodeEntered = TRUE;
					}
				} else {
					/* some other key was hit, reset*/
					_nNoAiCodeState = 0;
				}
				break;
			default:
				XASSERT_NOW;
				break;
			}
		}
	}

	/* CHECK FOR THE NO CATCHUP CODE*/
	if( nWhatCode & _CODES_NO_CATCHUP ) {
		/* CODE = view2 + view3 (while throttle at 0), then throttle set to -1 (while view2 + 3)*/
		if( !_bNoCatchUpCodeEntered ) {
			/* make sure the throttle is set to the reverse half of its range*/
			if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] < 0.2f ) {
				if( _nNoCatchUpCodeState == 0 ) {
					_nNoCatchUpCodeState = 1;					
				}
			} else {
				_nNoCatchUpCodeState = 0;
			}
			switch( _nNoCatchUpCodeState )
			{
			case 0:
				/* do nothing*/
				break;
			case 1:
				/* look for view button 2 and 3 ( while throttle is near 0 )*/
#ifdef ARCADEPC
				if( Controls_InputState.nButtons == (CONTROLS_VIEW2_BUTTON | CONTROLS_VIEW3_BUTTON) ) {
#else
				if( Controls_InputState.nButtons == CONTROLS_COIN ) {
#endif
					if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] < 0.2f && 
						Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] > -0.5f ) {
						_nNoCatchUpCodeState++;
					} else {
						/* the throttle was not in the correct position*/
						_nNoCatchUpCodeState = 0;
					}
				} else {
					/* some other key was hit, reset*/
					_nNoCatchUpCodeState = 0;
				}
				break;
			case 2:
				/* look for view button 2 and 3 ( while throttle is set to -1 )*/
#ifdef ARCADEPC
				if( Controls_InputState.nButtons == (CONTROLS_VIEW2_BUTTON | CONTROLS_VIEW3_BUTTON) ) {
#else
				if( Controls_InputState.nButtons == CONTROLS_COIN ) {
#endif
					if( Controls_InputState.fWithDeadZone[CONTROLS_THROTTLE] <= -0.5f ) {	
						_nNoCatchUpCodeState = 0;
						/* the code has been entered*/
						audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
						_bNoCatchUpCodeEntered = TRUE;
					}
				} else {
					/* some other key was hit, reset*/
					_nNoCatchUpCodeState = 0;
				}
				break;
			default:
				XASSERT_NOW;
				break;
			}
		}	
	}
	
	/* CHECK FOR THE ADVANCED BOAT CODE*/
	if( nWhatCode & _CODES_ADVANCED_BOATS ) {
		/* CODE = view1 or view2 or view3*/
		if( !_bAdvancedBoatsCodeEntered ) {
#ifdef ARCADEPC
			if( Controls_InputState.nButtons & CONTROLS_VIEW_BUTTONS ) {
				audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				_bAdvancedBoatsCodeEntered = TRUE;
				/* enable all of the advanced boats*/
				_aBoatSelections[6].bEnabled = TRUE;
				_aBoatSelections[7].bEnabled = TRUE;
				_aBoatSelections[8].bEnabled = TRUE;
			}
#else
			if( Controls_InputState.nButtons == CONTROLS_START_BUTTON ) {
				audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				_bAdvancedBoatsCodeEntered = TRUE;
				/* enable all of the advanced boats*/
				_aBoatSelections[6].bEnabled = TRUE;
				_aBoatSelections[7].bEnabled = TRUE;
				_aBoatSelections[8].bEnabled = TRUE;
			}
#endif
		}
	}

	/* CHECK FOR THE SECRET TRACK CODE*/
	if( nWhatCode & _CODES_SECRET_TRACKS ) {
		/* CODE = triple tap view1 button while on a track that has alternate selectable tracks*/
		if( _pCurrentSelectedTrack->nNumSelections > 1 ) {
#ifdef ARCADEPC
			if( nViewButtons == CONTROLS_VIEW1_BUTTON ) {
#else
			if( Controls_InputState.nButtons == CONTROLS_START_BUTTON && Gameloop_bOddFrame ) {
#endif
				++_nTrackCodeState;
				_nTrackCodeCount = 0;
				if( _nTrackCodeState == 3 ) {
					_nTrackCodeCount = 0;
					/* toggle between selectable tracks*/
					_pCurrentSelectedTrack->nCurrentSelection = ( _pCurrentSelectedTrack->nCurrentSelection == 0 ) ? 1 : 0;
					/* the code has been entered*/
					audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				}
			} else {
				++_nTrackCodeCount;
#ifdef ARCADEPC
				if( _nTrackCodeCount > 20 || nViewButtons ) {
#else
				if( _nTrackCodeCount > 20 || Controls_InputState.nButtons != CONTROLS_START_BUTTON ) {
#endif
					/* not fast enough for a triple tap*/
					_nTrackCodeState = 0;
					_nTrackCodeCount = 0;
				}
			}
		} else {
			_nTrackCodeState = 0;
			_nTrackCodeCount = 0;
		}
	}

	/* CHECK FOR THE SECRET BOAT CODE*/
	if( nWhatCode & _CODES_SECRET_BOATS ) {
		/* CODE = any view button while on a boat that has alternate selectable boat*/
		if( _pCurrentSelectedBoat->nNumSelections > 1 ) {
#ifdef ARCADEPC
			if( nViewButtons == CONTROLS_VIEW1_BUTTON ) {
#else
			if( Controls_InputState.nButtons == CONTROLS_START_BUTTON && Gameloop_bOddFrame ) {
#endif
				++_nBoatCodeState;
				_nBoatCodeCount = 0;
				if( _nBoatCodeState == 3 ) {
					_nBoatCodeCount = 0;
					/* toggle between selectable tracks*/
					player_DoNotDrawBoat( _GetCurrentBoatSelectPlayerPtr(), TRUE );
					_pCurrentSelectedBoat->nCurrentSelection = ( _pCurrentSelectedBoat->nCurrentSelection == 0 ) ? 1 : 0;
					player_DoNotDrawBoat( _GetCurrentBoatSelectPlayerPtr(), FALSE );				
					/* the code has been entered*/
					audio_Trigger( SOUNDCALL_BONUS_SOUND_2, 255, 0, AUDIO_TYPE_WRAPPER2, AUDIO_PRIORITY_WRAPPER2 );
				}
			} else {
				++_nBoatCodeCount;
#ifdef ARCADEPC
				if( _nBoatCodeCount > 20 || nViewButtons ) {
#else
				if( _nBoatCodeCount > 20 || Controls_InputState.nButtons != CONTROLS_START_BUTTON ) {
#endif
					/* not fast enough for a triple tap*/
					_nBoatCodeState = 0;
					_nBoatCodeCount = 0;
				}
			}
		} else {
			_nBoatCodeState = 0;
			_nBoatCodeCount = 0;
		}
	}
	
}

static void _DrawATrackSelectionObject( TrackSelectionObject_t *pOb, BOOL bPreSelection ) {
	u16 nIndex, nTemp;

	mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
	nIndex = 0;
	if( pOb->bCurrent ) {
		/* draw the shadow of the screen shot window*/
		mesh3d_SetOrthoYScale(0.8f);
#if TARGET!=ULTRA64
		mesh3d_SetOrthoEffects( 0.0f, 0.0f, 0.0f, 1.0f, 0.0f );
		mesh3d_DrawOrtho( pOb->pScreenShotFrameShadow, _TRACK_FRAME_SHADOW_X, _TRACK_FRAME_SHADOW_Y, WPR_DEFS_LAYER2_Z, 0, 1.0f );
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
#endif	/*ULTRA64*/

		/* draw the track screen shot*/
		mesh3d_DrawOrtho( pOb->apScreenShot[nIndex], _TRACK_SCREEN_X, _TRACK_SCREEN_Y, WPR_DEFS_LAYER3_Z, 0, 1.0f );
		mesh3d_SetOrthoYScale(1.0f);

		/* draw the difficulty on top of the screen shot*/
		if( Gameloop_nFrameCounter%23 < 13 ) {
			/* change the text based on the current diff bar*/
			nTemp = Tracks_Info[ pOb->anTrackNum[nIndex] ].nDifficulty;
			switch( nTemp )
			{
			case TRACKS_DIFFICULTY_NOVICE:
			case TRACKS_DIFFICULTY_EASY:
				mesh3d_SetOrthoEffects( 0.1f, 0.1f, 1.0f, 1.0f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], 1.0f, -10.0f, WPR_DEFS_LAYER4_Z, 0, 1.2f );
				break;
			case TRACKS_DIFFICULTY_MEDIUM:
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 0.0, 1.0f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], -2.5f, -10.0f, WPR_DEFS_LAYER4_Z, 0, 1.2f );
				break;
			case TRACKS_DIFFICULTY_HARD:
			case TRACKS_DIFFICULTY_EXPERT:
				mesh3d_SetOrthoEffects( 1.0f, 0.0f, 0.0f, 1.0f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], 1.0f, -10.0f, WPR_DEFS_LAYER4_Z, 0, 1.2f );
				break;
			default:
				XASSERT_NOW;
				break;
			}
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
		}

#if TARGET!=ULTRA64
		mesh3d_DrawOrtho( pOb->pIconShadow, pOb->fX + _TRACK_OVAL_SHADOW_X, pOb->fY + _TRACK_OVAL_SHADOW_Y, WPR_DEFS_LAYER4_Z, 0, 1.0f );
#endif	/*ULTRA64*/
		if( bPreSelection ) {
			if( _bSpecialFlashOn ) {
				mesh3d_DrawOrtho( pOb->apSelectedIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
			} else {
				mesh3d_DrawOrtho( pOb->apUnSelectedIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
			}
			mesh3d_DrawOrtho( pOb->apTitle[nIndex], pOb->fX - 1.0f, pOb->fY + 2.0f, WPR_DEFS_LAYER6_Z, 0, 1.0f );
		} else {
			/* a selection has been made*/
			if( (Gameloop_nFrameCounter & 0x2)  ) {
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.9f );
				mesh3d_DrawOrtho( pOb->apUnSelectedIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
				mesh3d_DrawOrtho( pOb->apTitle[nIndex], pOb->fX - 1.0f, pOb->fY + 2.0f, WPR_DEFS_LAYER6_Z, 0, 1.0f );
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
			} else {
				mesh3d_DrawOrtho( pOb->apSelectedIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
				mesh3d_DrawOrtho( pOb->apTitle[nIndex], pOb->fX - 1.0f, pOb->fY + 2.0f, WPR_DEFS_LAYER6_Z, 0, 1.0f );
			}
		}
	} else {
		mesh3d_DrawOrtho( pOb->pIconShadow, pOb->fX + _TRACK_OVAL_SHADOW_X, pOb->fY + _TRACK_OVAL_SHADOW_Y, WPR_DEFS_LAYER4_Z, 0, 1.0f );
		if( pOb->bEnabled ) {
				mesh3d_DrawOrtho( pOb->apUnSelectedIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
				mesh3d_DrawOrtho( pOb->apTitle[nIndex], pOb->fX - 1.0f, pOb->fY + 2.0f, WPR_DEFS_LAYER6_Z, 0, 1.0f );
		} 
		else {
				mesh3d_DrawOrtho( pOb->apUnSelectedIcon[1], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, 1.0f );
		}
	}
}



static void _SetupTrackSelectVars( BOOL bBonus1Enable, BOOL bBonus2Enable ) {
	TrackSelectionObject_t *pObj;

	_pCurrentSelectedTrack = &_aTrackSelections[_DEFAULT_TRACK_SLOT];

///////////////////////////////// MEDIUM TRACKS ///////////////////////////////////

	/* TRACKS_CHINA*/
	pObj = &_aTrackSelections[0];
	pObj->bEnabled = bMediumTracksUnlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_CHINA;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 1;
	pObj->nArrayIndex = 0;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_CHINA;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_CHINA];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[0];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[0];
	pObj->apUnSelectedIcon[1] =	_YellowLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_CHINA];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -0.85f;
	pObj->fMaxSteeringRange = -0.55f;
	pObj->fX = _TRACK_COLUMN_1;
	pObj->fY = _TRACK_ROW_4;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_LAKEPOWELL / TRACKS_LOOP2*/
	pObj = &_aTrackSelections[1];
	pObj->bEnabled = bMediumTracksUnlocked;
	pObj->bCurrent = FALSE;
#if TARGET!=ULTRA64	/*Don't allow secret tracks*/
	pObj->nNumSelections = 1;
#else	//ULTRA64
	pObj->nNumSelections = 1;
#endif	//ULTRA64
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_LAKEPOWELL;
	pObj->anTrackNum[1] = TRACKS_LOOP2;
	pObj->nDifficultyBar = 1;
	pObj->nArrayIndex = 1;
	
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_LAKE_POWELL;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_LAKEPOWELL];
	pObj->apSelectedIcon[0] = _pOnFrame[0];
	pObj->apUnSelectedIcon[0] = _pOffFrame[0];
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_LAKEPOWELL];
	
	pObj->anSelectionSound[1] = SOUNDCALL_WRAP_CHOOSE_LOOP2;
	pObj->apScreenShot[1] = _pTrackScreens[TRACKS_LOOP2];
	pObj->apSelectedIcon[1] = _pOnFrame[0];
	pObj->apUnSelectedIcon[1] =	_YellowLockIcon;		// (Locked out)
	pObj->apTitle[1] = _pText_TrackNames[TRACKS_LOOP2];
	
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -0.65f;
	pObj->fMaxSteeringRange = -0.35f;
	pObj->fX = _TRACK_COLUMN_1;
	pObj->fY = _TRACK_ROW_3;
	pObj->bBonusTrack = FALSE;

///////////////////////////////// EASY TRACKS ///////////////////////////////////

	/* TRACKS_LOOP1*/
	pObj = &_aTrackSelections[2];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_LOOP1;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 2;
	pObj->nArrayIndex = 2;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_LOOP1;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_LOOP1];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[1];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[1];
	pObj->apUnSelectedIcon[1] =	_BlueLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_LOOP1];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -0.45f;
	pObj->fMaxSteeringRange = -0.15f;
	pObj->fX = _TRACK_COLUMN_2;
	pObj->fY = _TRACK_ROW_2;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_AMAZON*/
	pObj = &_aTrackSelections[3];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = TRUE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_AMAZON;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 2;
	pObj->nArrayIndex = 3;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_SOUTH_PACIFIC;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_AMAZON];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[1];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[1];
	pObj->apUnSelectedIcon[1] =	_BlueLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_AMAZON];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -0.25f;
	pObj->fMaxSteeringRange = 0.05f;
	pObj->fX = _TRACK_COLUMN_3;
	pObj->fY = _TRACK_ROW_1;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_GREECE*/
	pObj = &_aTrackSelections[4];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_GREECE;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 2;
	pObj->nArrayIndex = 4;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_GREECE;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_GREECE];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[1];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[1];
	pObj->apUnSelectedIcon[1] =	_BlueLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_GREECE];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -0.05f;
	pObj->fMaxSteeringRange = 0.25f;
	pObj->fX = _TRACK_COLUMN_4;
	pObj->fY = _TRACK_ROW_1;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_ARTIC*/
	pObj = &_aTrackSelections[5];
	pObj->bEnabled = TRUE;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_ARTIC;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 2;
	pObj->nArrayIndex = 5;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_ARCTIC_CIRCLE;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_ARTIC];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[1];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[1];
	pObj->apUnSelectedIcon[1] =	_BlueLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_ARTIC];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.15f;
	pObj->fMaxSteeringRange = 0.45f;
	pObj->fX = _TRACK_COLUMN_5;
	pObj->fY = _TRACK_ROW_2;
	pObj->bBonusTrack = FALSE;

///////////////////////////////// HARD TRACKS ///////////////////////////////////

	/* TRACKS_SHIPGRAVEYARD*/
	pObj = &_aTrackSelections[6];
	pObj->bEnabled = bHardTracksUnlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_SHIPGRAVEYARD;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 3;
	pObj->nArrayIndex = 6;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_SHIP_GRAVEYARD;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_SHIPGRAVEYARD];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[2];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[2];
	pObj->apUnSelectedIcon[1] =	_RedLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_SHIPGRAVEYARD];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.35f;
	pObj->fMaxSteeringRange = 0.65f;
	pObj->fX = _TRACK_COLUMN_6;
	pObj->fY = _TRACK_ROW_3;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_VENICE*/
	pObj = &_aTrackSelections[7];
	pObj->bEnabled = bHardTracksUnlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_VENICE;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 3;
	pObj->nArrayIndex = 7;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_VENICE;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_VENICE];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[2];
	pObj->apUnSelectedIcon[0] = _pOffFrame[2];
	pObj->apUnSelectedIcon[1] =	_RedLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_VENICE];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.55f;
	pObj->fMaxSteeringRange = 0.85f;
	pObj->fX = _TRACK_COLUMN_6;
	pObj->fY = _TRACK_ROW_4;
	pObj->bBonusTrack = FALSE;

///////////////////////////////// BONUS TRACKS ///////////////////////////////////

	/* TRACKS_CAVERN (ACTUALLY LOOP3 FOR NOW) */
	pObj = &_aTrackSelections[11];
	pObj->bEnabled = bBonusTrack1Unlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_LOOP3;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 5;
	pObj->nArrayIndex = 11;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_LOOP2;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_LOOP3];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[2];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[2];
	pObj->apUnSelectedIcon[1] =	_GreenLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_LOOP3];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.75f;
	pObj->fMaxSteeringRange = 1.05f;
	pObj->fX = _TRACK_COLUMN_1;
	pObj->fY = _TRACK_ROW_5;
	pObj->bBonusTrack = FALSE;
	/* TRACKS_NILE (BONUS TRACK) */
	pObj = &_aTrackSelections[10];
	pObj->bEnabled = bBonusTrack2Unlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_NILE;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 5;
	pObj->nArrayIndex = 10;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_NILE_RIVER;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_NILE];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[3];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[3];
	pObj->apUnSelectedIcon[1] =	_GreenLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_NILE];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.75f;
	pObj->fMaxSteeringRange = 1.05f;
	pObj->fX = _TRACK_COLUMN_3;
	pObj->fY = _TRACK_ROW_6;
	pObj->bBonusTrack = TRUE;
	/* TRACKS_NY  */
	pObj = &_aTrackSelections[9];
	pObj->bEnabled = bBonusTrack3Unlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_NY;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 5;
	pObj->nArrayIndex = 9;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_NEW_YORK;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_NY];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[3];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[3];
	pObj->apUnSelectedIcon[1] =	_GreenLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_NY];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = -1.05f;
	pObj->fMaxSteeringRange = -0.75f;
	pObj->fX = _TRACK_COLUMN_4;
	pObj->fY = _TRACK_ROW_6;
	pObj->bBonusTrack = TRUE;
	/* TRACKS_PRACTICE */
	pObj = &_aTrackSelections[8];
	pObj->bEnabled = bBonusTrack4Unlocked;
	pObj->bCurrent = FALSE;
	pObj->nNumSelections = 1;
	pObj->nCurrentSelection = 0;
	pObj->anTrackNum[0] = TRACKS_LOOP2;
	pObj->anTrackNum[1] = -1;
	pObj->nDifficultyBar = 5;
	pObj->nArrayIndex = 8;
	pObj->anSelectionSound[0] = SOUNDCALL_WRAP_CHOOSE_LOOP2;
	pObj->anSelectionSound[1] = 0;
	pObj->apScreenShot[0] = _pTrackScreens[TRACKS_LOOP2];
	pObj->apScreenShot[1] = NULL;
	pObj->apSelectedIcon[0] = _pOnFrame[0];
	pObj->apSelectedIcon[1] = NULL;
	pObj->apUnSelectedIcon[0] = _pOffFrame[0];
	pObj->apUnSelectedIcon[1] =	_GreenLockIcon;		// (Locked out)
	pObj->apTitle[0] = _pText_TrackNames[TRACKS_LOOP2];
	pObj->apTitle[1] = NULL;
	pObj->pScreenShotFrameShadow = _pTrackFrameShadow;
	pObj->pIconShadow = _pTrackShadows;
	pObj->fMinSteeringRange = 0.75f;
	pObj->fMaxSteeringRange = 1.05f;
	pObj->fX = _TRACK_COLUMN_6;
	pObj->fY = _TRACK_ROW_5;
	pObj->bBonusTrack = FALSE;


	_aTrackDiffBarEnabled[1] = bMediumTracksUnlocked;
	_aTrackDiffBarEnabled[3] = bHardTracksUnlocked;
}
	
static void _SetupBoatSelectVars( BOOL bEnableAdvancedBoats ) {
	BoatSelectObject_t *pBoatObj;

	_pCurrentSelectedBoat = &_aBoatSelections[_DEFAULT_BOAT_SLOT];
	/* BOATS_TYPE_THRESHER \ BOATS_TYPE_COP*/
	pBoatObj = &_aBoatSelections[0];
	pBoatObj->bEnabled = bMediumTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_THRESHER;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 0;
	pBoatObj->nArrayIndex = 0;

	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_THRESHER];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_THRESHER];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_THRESHER];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_THRESHER;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_THRESHER];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_THRESHER];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_THRESHER];
	
//	pBoatObj->apPlayer[1] = &_aPlayer[BOATS_TYPE_COP];
//	pBoatObj->apWorldOb[1] = &_aWorldOb[BOATS_TYPE_COP];
//	pBoatObj->apMotion[1] = &_aMotion[BOATS_TYPE_COP];
//	pBoatObj->anSelectionSound[1] = SOUNDCALL_GCOM_CHOOSE_COP;
//	pBoatObj->apBoatIcon[1] = _pBoatPics[BOATS_TYPE_COP];
//	pBoatObj->apBoatShadow[1] = _pBoatShadows[BOATS_TYPE_COP];
//	pBoatObj->apTitle[1] = _pText_BoatNames[BOATS_TYPE_COP];

	pBoatObj->fMinSteeringRange = -1.05f;
	pBoatObj->fMaxSteeringRange = -0.727777778f;
	pBoatObj->fX = _BOAT_COLUMN_1;
	pBoatObj->fY = _BOAT_ROW_1;
	/* BOATS_TYPE_TIDAL_BLADE \ BOATS_TYPE_TINY*/
	pBoatObj = &_aBoatSelections[1];
	pBoatObj->bEnabled = bMediumTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_TIDAL_BLADE;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 0;
	pBoatObj->nArrayIndex = 1;

	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_TIDAL_BLADE];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_TIDAL_BLADE];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_TIDAL_BLADE];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_TIDAL_BLADE;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_TIDAL_BLADE];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_TIDAL_BLADE];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_TIDAL_BLADE];
	
//	pBoatObj->apPlayer[1] = &_aPlayer[BOATS_TYPE_TINY];
//	pBoatObj->apWorldOb[1] = &_aWorldOb[BOATS_TYPE_TINY];
//	pBoatObj->apMotion[1] = &_aMotion[BOATS_TYPE_TINY];
//	pBoatObj->anSelectionSound[1] = SOUNDCALL_GCOM_CHOOSE_TINY;
//	pBoatObj->apBoatIcon[1] = _pBoatPics[BOATS_TYPE_TINY];
//	pBoatObj->apBoatShadow[1] = _pBoatShadows[BOATS_TYPE_TINY];
//	pBoatObj->apTitle[1] = _pText_BoatNames[BOATS_TYPE_TINY];

	pBoatObj->fMinSteeringRange = -0.827777778f;
	pBoatObj->fMaxSteeringRange = -0.505555556f;
	pBoatObj->fX = _BOAT_COLUMN_1;
	pBoatObj->fY = _BOAT_ROW_2;
	/* BOATS_TYPE_BANSHEE*/
	pBoatObj = &_aBoatSelections[2];
	pBoatObj->bEnabled = bMediumTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_BANSHEE;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 0;
	pBoatObj->nArrayIndex = 2;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_BANSHEE];
	pBoatObj->apPlayer[1] = NULL;
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_BANSHEE];
	pBoatObj->apWorldOb[1] = NULL;
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_BANSHEE];
	pBoatObj->apMotion[1] = NULL;
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_BANSHEE;
	pBoatObj->anSelectionSound[1] = 0;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_BANSHEE];
	pBoatObj->apBoatIcon[1] = NULL;
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_BANSHEE];
	pBoatObj->apBoatShadow[1] = NULL;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_BANSHEE];
	pBoatObj->apTitle[1] = NULL;
	pBoatObj->fMinSteeringRange = -0.605555556f;
	pBoatObj->fMaxSteeringRange = -0.283333333f;
	pBoatObj->fX = _BOAT_COLUMN_1;
	pBoatObj->fY = _BOAT_ROW_3;
	/* BOATS_TYPE_DAMN_THE_TORPEDOES*/
	pBoatObj = &_aBoatSelections[3];
	pBoatObj->bEnabled = TRUE;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_DAMN_THE_TORPEDOES;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 1;
	pBoatObj->nArrayIndex = 3;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apPlayer[1] = NULL;
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apWorldOb[1] = NULL;
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apMotion[1] = NULL;
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_TORPEDO;
	pBoatObj->anSelectionSound[1] = 0;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apBoatIcon[1] = NULL;
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apBoatShadow[1] = NULL;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_DAMN_THE_TORPEDOES];
	pBoatObj->apTitle[1] = NULL;
	pBoatObj->fMinSteeringRange = -0.383333333f;
	pBoatObj->fMaxSteeringRange = -0.061111111f;
	pBoatObj->fX = _BOAT_COLUMN_2;
	pBoatObj->fY = _BOAT_ROW_4;
	/* BOATS_TYPE_MIDWAY*/
	pBoatObj = &_aBoatSelections[4];
	pBoatObj->bEnabled = TRUE;
	pBoatObj->bCurrent = TRUE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_MIDWAY;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 1;
	pBoatObj->nArrayIndex = 4;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_MIDWAY];
	pBoatObj->apPlayer[1] = NULL;
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_MIDWAY];
	pBoatObj->apWorldOb[1] = NULL;
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_MIDWAY];
	pBoatObj->apMotion[1] = NULL;
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_MIDWAY;
	pBoatObj->anSelectionSound[1] = 0;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_MIDWAY];
	pBoatObj->apBoatIcon[1] = NULL;
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_MIDWAY];
	pBoatObj->apBoatShadow[1] = NULL;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_MIDWAY];
	pBoatObj->apTitle[1] = NULL;
	pBoatObj->fMinSteeringRange = -0.161111111f;
	pBoatObj->fMaxSteeringRange = 0.161111111f;
	pBoatObj->fX = _BOAT_COLUMN_3;
	pBoatObj->fY = _BOAT_ROW_4;
	/* BOATS_TYPE_MISS_BEHAVE*/
	pBoatObj = &_aBoatSelections[5];
	pBoatObj->bEnabled = TRUE;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_MISS_BEHAVE;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 1;
	pBoatObj->nArrayIndex = 5;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apPlayer[1] = NULL;
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apWorldOb[1] = NULL;
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apMotion[1] = NULL;
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_MISS_BEHAVE;
	pBoatObj->anSelectionSound[1] = 0;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apBoatIcon[1] = NULL;
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apBoatShadow[1] = NULL;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_MISS_BEHAVE];
	pBoatObj->apTitle[1] = NULL;
	pBoatObj->fMinSteeringRange = 0.061111111f;
	pBoatObj->fMaxSteeringRange = 0.383333333f;
	pBoatObj->fX = _BOAT_COLUMN_4;
	pBoatObj->fY = _BOAT_ROW_4;
	/* BOATS_TYPE_CUT_THROAT*/
	pBoatObj = &_aBoatSelections[6];
	pBoatObj->bEnabled = bHardTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_CUT_THROAT;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 6;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apPlayer[1] = NULL;
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apWorldOb[1] = NULL;
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apMotion[1] = NULL;
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_CUT_THROAT;
	pBoatObj->anSelectionSound[1] = 0;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apBoatIcon[1] = NULL;
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apBoatShadow[1] = NULL;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_CUT_THROAT];
	pBoatObj->apTitle[1] = NULL;
	pBoatObj->fMinSteeringRange = 0.283333333f;
	pBoatObj->fMaxSteeringRange = 0.605555556f;
	pBoatObj->fX = _BOAT_COLUMN_5;
	pBoatObj->fY = _BOAT_ROW_3;
	/* BOATS_TYPE_RAD_HAZARD \ BOATS_TYPE_HOVERCRAFT*/
	pBoatObj = &_aBoatSelections[7];
	pBoatObj->bEnabled = bHardTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_RAD_HAZARD;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 7;

	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_RAD_HAZARD];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_RAD_HAZARD];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_RAD_HAZARD];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_RAD_HAZARD;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_RAD_HAZARD];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_RAD_HAZARD];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_RAD_HAZARD];

//	pBoatObj->apPlayer[1] = &_aPlayer[BOATS_TYPE_HOVERCRAFT];
//	pBoatObj->apWorldOb[1] = &_aWorldOb[BOATS_TYPE_HOVERCRAFT];
//	pBoatObj->apMotion[1] = &_aMotion[BOATS_TYPE_HOVERCRAFT];
//	pBoatObj->anSelectionSound[1] = SOUNDCALL_GCOM_CHOOSE_HOVERCRAFT;
//	pBoatObj->apBoatIcon[1] = _pBoatPics[BOATS_TYPE_HOVERCRAFT];
//	pBoatObj->apBoatShadow[1] = _pBoatShadows[BOATS_TYPE_HOVERCRAFT];
//	pBoatObj->apTitle[1] = _pText_BoatNames[BOATS_TYPE_HOVERCRAFT];	

	pBoatObj->fMinSteeringRange = 0.505555556f;
	pBoatObj->fMaxSteeringRange = 0.827777778f;
	pBoatObj->fX = _BOAT_COLUMN_5;
	pBoatObj->fY = _BOAT_ROW_2;
	/* BOATS_TYPE_RAZORBACK \ BOATS_TYPE_SEADOG*/
	pBoatObj = &_aBoatSelections[8];
	pBoatObj->bEnabled = bHardTracksUnlocked;
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_RAZORBACK;
	pBoatObj->anBoatNum[1] = -1;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 8;
	
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_RAZORBACK];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_RAZORBACK];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_RAZORBACK];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_RAZORBACK;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_RAZORBACK];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_RAZORBACK];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_RAZORBACK];

//	pBoatObj->apPlayer[1] = &_aPlayer[BOATS_TYPE_SEADOG];
//	pBoatObj->apWorldOb[1] = &_aWorldOb[BOATS_TYPE_SEADOG];
//	pBoatObj->apMotion[1] = &_aMotion[BOATS_TYPE_SEADOG];
//	pBoatObj->anSelectionSound[1] = SOUNDCALL_GCOM_CHOOSE_SEADOG;
//	pBoatObj->apBoatIcon[1] = _pBoatPics[BOATS_TYPE_SEADOG];
//	pBoatObj->apBoatShadow[1] = _pBoatShadows[BOATS_TYPE_SEADOG];
//	pBoatObj->apTitle[1] = _pText_BoatNames[BOATS_TYPE_SEADOG];

	pBoatObj->fX = _BOAT_COLUMN_5;
	pBoatObj->fY = _BOAT_ROW_1;	

	/* BOATS_TYPE_SEADOG */
	pBoatObj = &_aBoatSelections[9];
	pBoatObj->bEnabled = bonuskeys_GetBonus2State();
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_SEADOG;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 9;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_SEADOG];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_SEADOG];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_SEADOG];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_SEADOG;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_SEADOG];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_SEADOG];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_SEADOG];
	
	pBoatObj->fMinSteeringRange = 0.727777778f;
	pBoatObj->fMaxSteeringRange = 1.05f;
	pBoatObj->fX = 100.0f;
	pBoatObj->fY = _BOAT_ROW_1 - 30.0f;	

	/* BOATS_TYPE_HOVERCRAFT */
	pBoatObj = &_aBoatSelections[10];
	pBoatObj->bEnabled = bonuskeys_GetBonus2State();
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_HOVERCRAFT;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 10;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_HOVERCRAFT];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_HOVERCRAFT];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_HOVERCRAFT];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_HOVERCRAFT;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_HOVERCRAFT];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_HOVERCRAFT];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_HOVERCRAFT];	

	pBoatObj->fMinSteeringRange = 0.727777778f;
	pBoatObj->fMaxSteeringRange = 1.05f;
	pBoatObj->fX = 30.0f;
	pBoatObj->fY = _BOAT_ROW_1 - 30.0f;	

	/* BOATS_TYPE_COP */
	pBoatObj = &_aBoatSelections[11];
	pBoatObj->bEnabled = bonuskeys_GetBonus2State();
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_HOVERCRAFT;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 11;
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_COP];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_COP];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_COP];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_COP;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_COP];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_COP];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_COP];

	pBoatObj->fMinSteeringRange = 0.727777778f;
	pBoatObj->fMaxSteeringRange = 1.05f;
	pBoatObj->fX = -30.0f;
	pBoatObj->fY = _BOAT_ROW_1 - 30.0f;	

	/* BOATS_TYPE_TINY */
	pBoatObj = &_aBoatSelections[12];
	pBoatObj->bEnabled = bonuskeys_GetBonus2State();
	pBoatObj->bCurrent = FALSE;
	pBoatObj->nNumSelections = 1;
	pBoatObj->nCurrentSelection = 0;
	pBoatObj->anBoatNum[0] = BOATS_TYPE_COP;
	pBoatObj->nDifficultyBar = 2;
	pBoatObj->nArrayIndex = 12;
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_COP];
	pBoatObj->apPlayer[0] = &_aPlayer[BOATS_TYPE_TINY];
	pBoatObj->apWorldOb[0] = &_aWorldOb[BOATS_TYPE_TINY];
	pBoatObj->apMotion[0] = &_aMotion[BOATS_TYPE_TINY];
	pBoatObj->anSelectionSound[0] = SOUNDCALL_GCOM_CHOOSE_TINY;
	pBoatObj->apBoatIcon[0] = _pBoatPics[BOATS_TYPE_TINY];
	pBoatObj->apBoatShadow[0] = _pBoatShadows[BOATS_TYPE_TINY];
	pBoatObj->apTitle[0] = _pText_BoatNames[BOATS_TYPE_TINY];

	pBoatObj->fMinSteeringRange = 0.727777778f;
	pBoatObj->fMaxSteeringRange = 1.05f;
	pBoatObj->fX = -100.0f;
	pBoatObj->fY = _BOAT_ROW_1 - 30.0f;	




	_aBoatDiffBarsEnabled[0] = bMediumTracksUnlocked;
	_aBoatDiffBarsEnabled[2] = bHardTracksUnlocked;
}

static Player_t *_GetCurrentBoatSelectPlayerPtr( void ) {
	return _pCurrentSelectedBoat->apPlayer[ _pCurrentSelectedBoat->nCurrentSelection ];
}

static void _DrawABoatSelectionObject( BoatSelectObject_t *pOb, BOOL bPreSelection, float fScale ) {
	u32 nPriorState, nTemp;
	u16 nIndex;

	nIndex = pOb->nCurrentSelection;
	/* we have some extra stuff to draw if this is the current boat*/
	if( pOb->bCurrent ) {
		/* draw the boat and its shadow*/
		if( bPreSelection ) {
			/* a selection has not been made yet*/
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
#if TARGET!=ULTRA64
			mesh3d_DrawOrtho( pOb->apBoatShadow[nIndex],
						  pOb->fX + _BOAT_SHADOW_X,
						  pOb->fY + _BOAT_SHADOW_Y,
						  WPR_DEFS_LAYER4_Z, 0, fScale );
#endif	//ULTRA64
			if( _bSpecialFlashOn ) {
				mesh3d_DrawOrtho( pOb->apBoatIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, fScale * 1.15f );
			} else {
				mesh3d_SetOrthoEffects( 0.45f, 0.45f, 0.45f, 1.0f, 0.0f );
				mesh3d_DrawOrtho( pOb->apBoatIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, fScale * 1.05f );	
			}
		} else {
			/* a selection has been made*/
			if( (Gameloop_nFrameCounter & 0x2)  ) {
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
#if TARGET!=ULTRA64
				mesh3d_DrawOrtho( pOb->apBoatShadow[nIndex],
								  pOb->fX + _BOAT_SHADOW_X,
								  pOb->fY + _BOAT_SHADOW_Y,
								  WPR_DEFS_LAYER4_Z, 0, fScale * 1.15f );
#endif	//ULTRA64
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.9f );
			}
			mesh3d_DrawOrtho( pOb->apBoatIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, fScale * 1.15f );	
		}
		/* draw the boat's name*/
		nPriorState = gutil_ZbufferSetState( GUTIL_ZBUFFER_STATE_WRITE_ONLY );
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
		mesh3d_DrawOrtho( pOb->apTitle[nIndex], _BOAT_NAME_X, _BOAT_NAME_Y, WPR_DEFS_LAYER5_Z, 0, 1.1f );
		/* draw the difficulty on top of the boat shot*/
		if( Gameloop_nFrameCounter%23 < 13 ) {
			/* change the text based on the current diff bar*/
			nTemp = Boats_Info[ pOb->anBoatNum[nIndex] ].nBoatDifficulty;
			switch( pOb->nDifficultyBar )
			{
			case 0:
				mesh3d_SetOrthoEffects( 1.0f, 1.0f, 0.0, 0.75f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], 1.5f, 0.0f, WPR_DEFS_LAYER5_Z, 0, 1.5f );
				break;
			case 1:
				mesh3d_SetOrthoEffects( 0.0f, 0.0f, 1.0f, 0.75f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], 5.0f, 0.0f, WPR_DEFS_LAYER5_Z, 0, 1.5f );
				break;
			case 2:
				mesh3d_SetOrthoEffects( 1.0f, 0.0f, 0.0f, 0.75f, 0.0f );
				mesh3d_DrawOrtho( _pText_Difficulty[nTemp], 5.0f, 0.0f, WPR_DEFS_LAYER5_Z, 0, 1.5f );
				break;
			default:
				XASSERT_NOW;
				break;
			}
		}
		gutil_ZbufferSetState( nPriorState );
	} else {
		if( pOb->bEnabled ) {
			/* this is not the currently selected boat*/
			mesh3d_SetOrthoEffects( 0.45f, 0.45f, 0.45f, 1.0f, 0.0f );
#if TARGET!=ULTRA64
			mesh3d_DrawOrtho( pOb->apBoatShadow[nIndex],
							  pOb->fX + _BOAT_SHADOW_X,
							  pOb->fY + _BOAT_SHADOW_Y,
							  WPR_DEFS_LAYER4_Z, 0, fScale );
#endif	//ULTRA64
			mesh3d_DrawOrtho( pOb->apBoatIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, fScale );	
		} else {
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 0.283f, 0.0f );
#if TARGET!=ULTRA64
			mesh3d_DrawOrtho( pOb->apBoatShadow[nIndex],
							  pOb->fX + _BOAT_SHADOW_X,
							  pOb->fY + _BOAT_SHADOW_Y,
							  WPR_DEFS_LAYER4_Z, 0, fScale );
#endif	//ULTRA64
			mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 0.3413f, 0.0f );
			mesh3d_DrawOrtho( pOb->apBoatIcon[nIndex], pOb->fX, pOb->fY, WPR_DEFS_LAYER5_Z, 0, fScale );
		}
	}
}

/*		WATERY BACKGROUND FX

		mesh3d_SlideST( _pBackground1, NULL, 0.26f, 0.33f );
		nTemp = (Gameloop_nFrameCounter + 2365) << 9;
		nTemp2 = (Gameloop_nFrameCounter + 6449) << 10;
		for( i=0; i < _pBackground1->nVtxCount; i++ ) {
				_pBackground1->pVtx[i].Point.p[0] += (0.32f * xmath_sin( nTemp ) );
				_pBackground1->pVtx[i].Point.p[1] += (0.29f * xmath_sin( nTemp2 ) );
				nTemp += 25063;
				nTemp2 += 4698321;
		}
		mesh3d_DrawOrtho( _pBackground1, 0.0f, 0.0f, WPR_DEFS_LAYER1_Z, 0, 1.0f );

		mesh3d_SlideST( _pBackground2, NULL, -0.28f, 0.69f );
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 0.75f, 0.0f );
		nTemp = (Gameloop_nFrameCounter + 998) << 9;
		nTemp2 = (Gameloop_nFrameCounter + 234) << 10;
		for( i=0; i < _pBackground2->nVtxCount; i++ ) {
				_pBackground2->pVtx[i].Point.p[0] += (0.55f * xmath_sin( nTemp ) );
				_pBackground2->pVtx[i].Point.p[1] += (0.47f * xmath_sin( nTemp2 ) );
				nTemp += 6913;
				nTemp2 += 3215649;
		}
		mesh3d_DrawOrtho( _pBackground2, 0.0f, 0.0f, WPR_DEFS_LAYER2_Z, 0, 1.0f );
		mesh3d_SetOrthoEffects( 1.0f, 1.0f, 1.0f, 1.0f, 0.0f );
		
*/