    private RomDetail( ConfigSection section, String computedMd5 )
    {
        if( sConfigFile == null )
            throw new IllegalStateException(
                    "RomDetail#initializeDatabase must be called before any other RomDetail method" );
        String _md5 = null;
        String _crc = null;
        String _goodName = null;
        String _baseName = null;
        String _artUrl = null;
        String _saveType = null;
        int _status = 0;
        int _players = 0;
        boolean _rumble = false;
        if( section != null )
        {
            _md5 = section.name.equals( computedMd5 ) ? computedMd5 : null;
            _crc = section.get( "CRC" );
            if( "00000000 00000000".equals( _crc ) )
                _goodName = "";
            else
                _goodName = section.get( "GoodName" );
            _baseName = _goodName == null ? null : _goodName.split( " \\(" )[0].trim();
            _artUrl = _baseName == null ? null : String.format( URL_TEMPLATE,
                    _baseName.replace( ' ', '_' ).replace( "'", "" ) );
            String refMd5 = section.get( "RefMD5" );
            if( !TextUtils.isEmpty( refMd5 ) )
                section = sConfigFile.get( refMd5 );
            if( section != null )
            {
                _saveType = section.get( "SaveType" );
                String statusString = section.get( "Status" );
                String playersString = section.get( "Players" );
                _status = TextUtils.isEmpty( statusString ) ? 0 : Integer.parseInt( statusString );
                _players = TextUtils.isEmpty( playersString ) ? 0 : Integer.parseInt( playersString );
                _rumble = "Yes".equals( section.get( "Rumble" ) );
            }
        }
        md5 = _md5;
        goodName = _md5 == null ? null : _goodName;
        baseName = _baseName;
        artUrl = _artUrl;
        crc = _crc;
        saveType = _saveType;
        status = _status;
        players = _players;
        rumble = _rumble;
    }

    private RomDetail( ConfigSection section, String computedMd5 )
    {
        if( sConfigFile == null )
            throw new IllegalStateException(
                    "RomDetail#initializeDatabase must be called before any other RomDetail method" );
        String _md5 = null;
        String _crc = null;
        String _goodName = null;
        String _baseName = null;
        String _artUrl = null;
        String _saveType = null;
        int _status = 0;
        int _players = 0;
        boolean _rumble = false;
        if( section != null )
        {
            _md5 = section.name.equals( computedMd5 ) ? computedMd5 : null;
            _crc = section.get( "CRC" );
            if( "00000000 00000000".equals( _crc ) )
                _goodName = "";
            else
                _goodName = section.get( "GoodName" );
            _baseName = _goodName == null ? null : _goodName.split( " \\(" )[0].trim();
            _artUrl = _baseName == null ? null : String.format( URL_TEMPLATE,
                    _baseName.replace( ' ', '_' ).replace( "'", "" ).replace( '-', '_' ) );
            String refMd5 = section.get( "RefMD5" );
            if( !TextUtils.isEmpty( refMd5 ) )
                section = sConfigFile.get( refMd5 );
            if( section != null )
            {
                _saveType = section.get( "SaveType" );
                String statusString = section.get( "Status" );
                String playersString = section.get( "Players" );
                _status = TextUtils.isEmpty( statusString ) ? 0 : Integer.parseInt( statusString );
                _players = TextUtils.isEmpty( playersString ) ? 0 : Integer.parseInt( playersString );
                _rumble = "Yes".equals( section.get( "Rumble" ) );
            }
        }
        md5 = _md5;
        goodName = _md5 == null ? null : _goodName;
        baseName = _baseName;
        artUrl = _artUrl;
        crc = _crc;
        saveType = _saveType;
        status = _status;
        players = _players;
        rumble = _rumble;
    }
