code:
/*
 * QBtServiceDiscoverer_symbian.h
 *
 *
 *      Author: Ftylitakis Nikolaos
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef QBTSERVICEDISCOVERER_SYMBIAN_H_
#define QBTSERVICEDISCOVERER_SYMBIAN_H_

#include <e32base.h>

#include <coecntrl.h>
#include <es_sock.h>
#include <btdevice.h>
#include <bt_sock.h>
#include <btsdp.h>

#include <QMap>
#include <QSet>
#include <QBtDevice.h>
#include <QBtServiceDiscoverer.h>

//____________________________________________________________________________
//
// Auxiliary classes for getting attribute values

class AttrVisitor : public MSdpAttributeValueVisitor
{
   public:

      AttrVisitor()
      { reset(); }

      virtual ~AttrVisitor()
      {}

      virtual void clear()
      {}

      void reset ()
      { clear(); }

   public:

      void VisitAttributeValueL(CSdpAttrValue& aValue, TSdpElementType aType)
      {}

      void StartListL(CSdpAttrValueList &aList)
      {}

      void EndListL()
      {}

};

//____________________________________________________________________________
//
//

class ProtocolListVisitor : public AttrVisitor
{
   public:

      void VisitAttributeValueL(CSdpAttrValue& aValue, TSdpElementType aType);

      void clear()
      { _protocols.clear(); _port = 0; }

      uint getPort () const
      { return _port; }

      QList<QBtUuid> getProtocols() const
      { return _protocols; }

      void print();

   private:

      QList<QBtUuid> _protocols;
      uint _port;

};

//____________________________________________________________________________
//
//

class StringVisitor : public AttrVisitor
{
   public:

      void VisitAttributeValueL(CSdpAttrValue& aValue, TSdpElementType aType);

      void clear()
      { _str.clear(); }

      QString get () const
       { return _str; }

      void print();

   private:
      QString _str;
};

//____________________________________________________________________________
//
// TODO: Some services return more than one UUID, how to handle these in QBtService?
//

class ServiceUuidVisitor : public AttrVisitor
{
   public:

      void VisitAttributeValueL(CSdpAttrValue& aValue, TSdpElementType aType);

      void clear()
      { _uuid.clear(); }

      // TODO
      QBtUuid get() const
      {
         if (_uuid.empty())
            return QBtUuid();
         else
            return _uuid [0];
      }

    void print();

   private:
      QList<QBtUuid> _uuid;

};

//____________________________________________________________________________
//
// Simple class to keep service record data we are interested in requesting.

class ServiceRecord
{
   public:
      ServiceRecord()
      {
         attributesToProcess.append (KSdpAttrIdBasePrimaryLanguage + KSdpAttrIdOffsetServiceName);
         attributesToProcess.append (KSdpAttrIdServiceClassIDList);
         attributesToProcess.append (KSdpAttrIdProtocolDescriptorList);
      }

   public:

      QString getName() const
      { return name.get(); }

      QBtUuid getUuid() const
      { return uuid.get(); }

      QList<QBtUuid> getProtocols() const
      { return protocols.getProtocols(); }

      uint getPort() const
      { return protocols.getPort(); }

      void print()
      {
         name.print();
         uuid.print();
         protocols.print();
      }

   public:

      QList <TSdpAttributeID> attributesToProcess;
      StringVisitor           name;
      ServiceUuidVisitor      uuid;
      ProtocolListVisitor     protocols;
};

//____________________________________________________________________________
//
//

class QBtServiceDiscovererPrivate : public CBase, public MSdpAgentNotifier
{
   public:

       //
       static QBtServiceDiscovererPrivate* NewL(QBtServiceDiscoverer* publicClass);

       //
       static QBtServiceDiscovererPrivate* NewLC(QBtServiceDiscoverer* publicClass);

       //
       ~QBtServiceDiscovererPrivate();

   public:

      // discover obex and rfcomm services
      void DiscoverServices (QBtDevice* targetDevice);

      // as is
      void DiscoverObexServices (QBtDevice* targetDevice);

      // as is
      void DiscoverRfcommServices (QBtDevice* targetDevice);

      //  discover a service belongin to the uuid, can be a service or protocol
      void DiscoverSpecificClass (QBtDevice* targetDevice, const QBtUuid & uuid);

      // discover services based on uuid list
      void DiscoverSpecificClasses (QBtDevice* targetDevice, const QList<QBtUuid> & uuids);

      // stops everything
      void StopDiscovery();

      // true if in discovery
      bool IsBusy() const;

   private:

      //
      QBtServiceDiscovererPrivate(QBtServiceDiscoverer* publicClass);

      //
      void ConstructL();

      // perfoms discovery for a particular uuid
      void _DiscoverSpecificClass (const QBtUuid & uuid);

      // inherited
      // called when an service record (CSdpAgent::NextRecordRequestL()) operation completes.
      void NextRecordRequestComplete (TInt aError, TSdpServRecordHandle aHandle, TInt aTotalRecordsCount);

      // inherited
      // Called by the attribute request (CSdpAgent::AttributeRequestL()) to pass the results of successful attribute request.
      //
      void AttributeRequestResult (TSdpServRecordHandle aHandle, TSdpAttributeID aAttrID, CSdpAttrValue* aAttrValue);

      // inhrited
      // Called when the attribute request (CSdpAgent::AttributeRequestL()) completes.
      void AttributeRequestComplete (TSdpServRecordHandle aHandle, TInt aError);

      // declare discovery as finished
      void FinishDiscovery();

      // misc preparation to start discovery
      void PrepareSearch (QBtDevice* targetDevice);

      // process next uuid in the list
      void ProcessNextService();

   private:

      // service discovery agent
      CSdpAgent* _agent;

      // service discovery search pattern
      CSdpSearchPattern* _searchPattern;

      // list of uuids to search
      QList <QBtUuid> _uuidList;

      // list of found services
      QBtService::List _serviceList;

      // set of found uuids, used to avoid duplicates in the results
      QSet<QString> _serviceUuidsFound;

      // device to query
      QBtDevice* _targetDevice;

      // pointer to parent object (from constructor). Not owned by this class
      QBtServiceDiscoverer *_parent_ptr;

      // service record data
      QMap <TSdpServRecordHandle, ServiceRecord> _serviceRecords;

      // if the process has been started
      bool _discoveryInProgress;

};

#endif /* QBTSERVICEDISCOVERER_SYMBIAN_H_ */


code:
/*
 * QBtServiceDiscoverer_stub.h
 *
 *
 *      Author: Ftylitakis Nikolaos
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef QBTSERVICEDISCOVERER_STUB_H_
#define QBTSERVICEDISCOVERER_STUB_H_

#include <QBtUuid.h>
#include <QBtDevice.h>
#include <QBtServiceDiscoverer.h>
#include <QBtAuxFunctions.h>
#include <QtCore/QObject>

QBT_NAMESPACE_BEGIN

class QBtServiceDiscovererPrivate : public QObject
{
Q_OBJECT

public:
    QBtServiceDiscovererPrivate(QBtServiceDiscoverer* publicClass);
    ~QBtServiceDiscovererPrivate();

    void DiscoverServices(QBtDevice* targetDevice);
    void DiscoverSpecificClass(QBtDevice* targetDevice, QBtUuid uuid);
    void DiscoverSpecificProtocol(QBtDevice* targetDevice, QBtConstants::ServiceProtocol uuid);
    void StopDiscovery();
	void DiscoverSpecificClasses(QBtDevice* targetDevice, const QList<QBtUuid> &uuids);
	void DiscoverRfcommServices(QBtDevice* targetDevice);
	void DiscoverObexServices(QBtDevice* targetDevice);
    bool IsBusy() const;

protected:
    void Construct();

private:
    void ProcessFoundServices(BTSVCHDL* foundServices, int numOfServices, QBtConstants::ServiceClass wantedClass);
    void RetrieveSPPAttributes(QBtService* currService, BTSVCHDL servHandle);
	void DiscoverServiceHandles(QBtDevice* targetDevice, BTSVCHDL* servicesFound, BTUINT32* numOfServicesFound, QBtConstants::ServiceClass uuid);

private slots:
	void SetBusy();
	void SetNotBusy();

private:
    QBtServiceDiscoverer *p_ptr;  //Pointer to public interface
	bool isBusy;
};

QBT_NAMESPACE_END

#endif /* QBTSERVICEDISCOVERER_STUB_H_ */

repo_name: snapshot/qbluetooth

license: unknown


code:
EXPORTS
	_ZN10QBtAddress11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
	_ZN10QBtAddress11qt_metacastEPKc @ 2 NONAME
	_ZN10QBtAddress16staticMetaObjectE @ 3 NONAME DATA 16
	_ZN10QBtAddress19getStaticMetaObjectEv @ 4 NONAME
	_ZN10QBtAddress27getAddressFromReversedArrayERK10QByteArray @ 5 NONAME
	_ZN10QBtAddressC1ERK10QByteArray @ 6 NONAME
	_ZN10QBtAddressC1ERK10TBTDevAddr @ 7 NONAME
	_ZN10QBtAddressC1ERK7QString @ 8 NONAME
	_ZN10QBtAddressC1ERKS_ @ 9 NONAME
	_ZN10QBtAddressC1Ev @ 10 NONAME
	_ZN10QBtAddressC2ERK10QByteArray @ 11 NONAME
	_ZN10QBtAddressC2ERK10TBTDevAddr @ 12 NONAME
	_ZN10QBtAddressC2ERK7QString @ 13 NONAME
	_ZN10QBtAddressC2ERKS_ @ 14 NONAME
	_ZN10QBtAddressC2Ev @ 15 NONAME
	_ZN10QBtAddressD0Ev @ 16 NONAME
	_ZN10QBtAddressD1Ev @ 17 NONAME
	_ZN10QBtAddressD2Ev @ 18 NONAME
	_ZN10QBtAddressaSERKS_ @ 19 NONAME
	_ZN10QBtAddresseqERKS_ @ 20 NONAME
	_ZN10QBtAddressltERKS_ @ 21 NONAME
	_ZN10QBtAddressneERKS_ @ 22 NONAME
	_ZN10QBtService11addProtocolERK7QBtUuid @ 23 NONAME
	_ZN10QBtService11qt_metacallEN11QMetaObject4CallEiPPv @ 24 NONAME
	_ZN10QBtService11qt_metacastEPKc @ 25 NONAME
	_ZN10QBtService12setProtocolsERK5QListI7QBtUuidE @ 26 NONAME
	_ZN10QBtService14removeProtocolERK7QBtUuid @ 27 NONAME
	_ZN10QBtService14setDescriptionERK7QString @ 28 NONAME
	_ZN10QBtService16staticMetaObjectE @ 29 NONAME DATA 16
	_ZN10QBtService19getStaticMetaObjectEv @ 30 NONAME
	_ZN10QBtService7setNameERK7QString @ 31 NONAME
	_ZN10QBtService7setPortEj @ 32 NONAME
	_ZN10QBtService8setClassERK7QBtUuid @ 33 NONAME
	_ZN10QBtService9setHandleEj @ 34 NONAME
	_ZN10QBtServiceC1EP7QObject @ 35 NONAME
	_ZN10QBtServiceC1ERKS_P7QObject @ 36 NONAME
	_ZN10QBtServiceC2EP7QObject @ 37 NONAME
	_ZN10QBtServiceC2ERKS_P7QObject @ 38 NONAME
	_ZN10QBtServiceaSERKS_ @ 39 NONAME
	_ZN12QBtConstants11qt_metacallEN11QMetaObject4CallEiPPv @ 40 NONAME
	_ZN12QBtConstants11qt_metacastEPKc @ 41 NONAME
	_ZN12QBtConstants16staticMetaObjectE @ 42 NONAME DATA 16
	_ZN12QBtConstants19getStaticMetaObjectEv @ 43 NONAME
	_ZN14QBtLocalDevice10setVisibleEb @ 44 NONAME
	_ZN14QBtLocalDevice12addNewDeviceERK9QBtDevice @ 45 NONAME
	_ZN14QBtLocalDevice12deleteDeviceERK10QBtAddress @ 46 NONAME
	_ZN14QBtLocalDevice12deleteDeviceERK9QBtDevice @ 47 NONAME
	_ZN14QBtLocalDevice12unpairDeviceERK10QBtAddress @ 48 NONAME
	_ZN14QBtLocalDevice12unpairDeviceERK9QBtDevice @ 49 NONAME
	_ZN14QBtLocalDevice14getDeviceClassEv @ 50 NONAME
	_ZN14QBtLocalDevice14setDeviceClassEN9QBtDevice11DeviceMajorE @ 51 NONAME
	_ZN14QBtLocalDevice18getLocalDeviceNameEv @ 52 NONAME
	_ZN14QBtLocalDevice18setLocalDeviceNameERK7QString @ 53 NONAME
	_ZN14QBtLocalDevice20askUserTurnOnBtPowerEv @ 54 NONAME
	_ZN14QBtLocalDevice20isBluetoothSupportedEv @ 55 NONAME
	_ZN14QBtLocalDevice21getLocalDeviceAddressEv @ 56 NONAME
	_ZN14QBtLocalDevice22getBluetoothPowerStateEv @ 57 NONAME
	_ZN14QBtLocalDevice22setBluetoothPowerStateEb @ 58 NONAME
	_ZN14QBtLocalDevice9isVisibleEv @ 59 NONAME
	_ZN17QBtRemoteFileInfo11qt_metacallEN11QMetaObject4CallEiPPv @ 60 NONAME
	_ZN17QBtRemoteFileInfo11qt_metacastEPKc @ 61 NONAME
	_ZN17QBtRemoteFileInfo16staticMetaObjectE @ 62 NONAME DATA 16
	_ZN17QBtRemoteFileInfo19getStaticMetaObjectEv @ 63 NONAME
	_ZN17QBtRemoteFileInfo8toStringEv @ 64 NONAME
	_ZN17QBtRemoteFileInfoC1EP7QObject @ 65 NONAME
	_ZN17QBtRemoteFileInfoC1ERKS_ @ 66 NONAME
	_ZN17QBtRemoteFileInfoC2EP7QObject @ 67 NONAME
	_ZN17QBtRemoteFileInfoC2ERKS_ @ 68 NONAME
	_ZN17QBtRemoteFileInfoaSERKS_ @ 69 NONAME
	_ZN19QBtDeviceDiscoverer11qt_metacallEN11QMetaObject4CallEiPPv @ 70 NONAME
	_ZN19QBtDeviceDiscoverer11qt_metacastEPKc @ 71 NONAME
	_ZN19QBtDeviceDiscoverer13stopDiscoveryEv @ 72 NONAME
	_ZN19QBtDeviceDiscoverer14newDeviceFoundE9QBtDevice @ 73 NONAME
	_ZN19QBtDeviceDiscoverer14startDiscoveryEv @ 74 NONAME
	_ZN19QBtDeviceDiscoverer16discoveryStartedEv @ 75 NONAME
	_ZN19QBtDeviceDiscoverer16discoveryStoppedEv @ 76 NONAME
	_ZN19QBtDeviceDiscoverer16staticMetaObjectE @ 77 NONAME DATA 16
	_ZN19QBtDeviceDiscoverer19emitDummySignalTestEv @ 78 NONAME
	_ZN19QBtDeviceDiscoverer19getStaticMetaObjectEv @ 79 NONAME
	_ZN19QBtDeviceDiscoverer5errorENS_21DeviceDiscoveryErrorsE @ 80 NONAME
	_ZN19QBtDeviceDiscovererC1EP7QObject @ 81 NONAME
	_ZN19QBtDeviceDiscovererC2EP7QObject @ 82 NONAME
	_ZN19QBtDeviceDiscovererD0Ev @ 83 NONAME
	_ZN19QBtDeviceDiscovererD1Ev @ 84 NONAME
	_ZN19QBtDeviceDiscovererD2Ev @ 85 NONAME
	_ZN19QBtSerialPortClient10disconnectEv @ 86 NONAME
	_ZN19QBtSerialPortClient11isConnectedEv @ 87 NONAME
	_ZN19QBtSerialPortClient11qt_metacallEN11QMetaObject4CallEiPPv @ 88 NONAME
	_ZN19QBtSerialPortClient11qt_metacastEPKc @ 89 NONAME
	_ZN19QBtSerialPortClient12dataReceivedERK10QByteArray @ 90 NONAME
	_ZN19QBtSerialPortClient12dataReceivedERK7QString @ 91 NONAME
	_ZN19QBtSerialPortClient16staticMetaObjectE @ 92 NONAME DATA 16
	_ZN19QBtSerialPortClient17connectedToServerEv @ 93 NONAME
	_ZN19QBtSerialPortClient19getStaticMetaObjectEv @ 94 NONAME
	_ZN19QBtSerialPortClient21connectionResetByPeerEv @ 95 NONAME
	_ZN19QBtSerialPortClient22disconnectedFromServerEv @ 96 NONAME
	_ZN19QBtSerialPortClient5errorENS_9ErrorCodeE @ 97 NONAME
	_ZN19QBtSerialPortClient7connectERK9QBtDeviceRK10QBtService @ 98 NONAME
	_ZN19QBtSerialPortClient8dataSentEv @ 99 NONAME
	_ZN19QBtSerialPortClient8sendDataERK10QByteArray @ 100 NONAME
	_ZN19QBtSerialPortClient8sendDataERK7QString @ 101 NONAME
	_ZN19QBtSerialPortClientC1EP7QObject @ 102 NONAME
	_ZN19QBtSerialPortClientC2EP7QObject @ 103 NONAME
	_ZN19QBtSerialPortClientD0Ev @ 104 NONAME
	_ZN19QBtSerialPortClientD1Ev @ 105 NONAME
	_ZN19QBtSerialPortClientD2Ev @ 106 NONAME
	_ZN19QBtSerialPortServer10stopServerEv @ 107 NONAME
	_ZN19QBtSerialPortServer11isConnectedEv @ 108 NONAME
	_ZN19QBtSerialPortServer11qt_metacallEN11QMetaObject4CallEiPPv @ 109 NONAME
	_ZN19QBtSerialPortServer11qt_metacastEPKc @ 110 NONAME
	_ZN19QBtSerialPortServer11startServerERK7QBtUuidRK7QString @ 111 NONAME
	_ZN19QBtSerialPortServer12dataReceivedERK7QString @ 112 NONAME
	_ZN19QBtSerialPortServer13serverStartedEv @ 113 NONAME
	_ZN19QBtSerialPortServer13serverStoppedEv @ 114 NONAME
	_ZN19QBtSerialPortServer15clientConnectedERK10QBtAddress @ 115 NONAME
	_ZN19QBtSerialPortServer16staticMetaObjectE @ 116 NONAME DATA 16
	_ZN19QBtSerialPortServer18clientDisconnectedEv @ 117 NONAME
	_ZN19QBtSerialPortServer19getStaticMetaObjectEv @ 118 NONAME
	_ZN19QBtSerialPortServer19setConnectionStatusEb @ 119 NONAME
	_ZN19QBtSerialPortServer22setTransmittingServiceERK10QBtService @ 120 NONAME
	_ZN19QBtSerialPortServer22stopAdvertisingServiceEv @ 121 NONAME
	_ZN19QBtSerialPortServer23startAdvertisingServiceERK10QBtService @ 122 NONAME
	_ZN19QBtSerialPortServer5errorENS_9ErrorCodeE @ 123 NONAME
	_ZN19QBtSerialPortServer8dataSentEv @ 124 NONAME
	_ZN19QBtSerialPortServer8sendDataERK7QString @ 125 NONAME
	_ZN19QBtSerialPortServerC1EP7QObject @ 126 NONAME
	_ZN19QBtSerialPortServerC2EP7QObject @ 127 NONAME
	_ZN19QBtSerialPortServerD0Ev @ 128 NONAME
	_ZN19QBtSerialPortServerD1Ev @ 129 NONAME
	_ZN19QBtSerialPortServerD2Ev @ 130 NONAME
	_ZN20QBtServiceAdvertiser11qt_metacallEN11QMetaObject4CallEiPPv @ 131 NONAME
	_ZN20QBtServiceAdvertiser11qt_metacastEPKc @ 132 NONAME
	_ZN20QBtServiceAdvertiser15stopAdvertisingEv @ 133 NONAME
	_ZN20QBtServiceAdvertiser16startAdvertisingERK10QBtService @ 134 NONAME
	_ZN20QBtServiceAdvertiser16staticMetaObjectE @ 135 NONAME DATA 16
	_ZN20QBtServiceAdvertiser18advertisingStartedERK10QBtService @ 136 NONAME
	_ZN20QBtServiceAdvertiser18advertisingStoppedEv @ 137 NONAME
	_ZN20QBtServiceAdvertiser18updateAvailabilityEb @ 138 NONAME
	_ZN20QBtServiceAdvertiser19getStaticMetaObjectEv @ 139 NONAME
	_ZN20QBtServiceAdvertiser5errorENS_10ErrorCodesE @ 140 NONAME
	_ZN20QBtServiceAdvertiserC1EP7QObject @ 141 NONAME
	_ZN20QBtServiceAdvertiserC2EP7QObject @ 142 NONAME
	_ZN20QBtServiceAdvertiserD0Ev @ 143 NONAME
	_ZN20QBtServiceAdvertiserD1Ev @ 144 NONAME
	_ZN20QBtServiceAdvertiserD2Ev @ 145 NONAME
	_ZN20QBtServiceDiscoverer11qt_metacallEN11QMetaObject4CallEiPPv @ 146 NONAME
	_ZN20QBtServiceDiscoverer11qt_metacastEPKc @ 147 NONAME
	_ZN20QBtServiceDiscoverer13stopDiscoveryEv @ 148 NONAME
	_ZN20QBtServiceDiscoverer14startDiscoveryERK9QBtDevice @ 149 NONAME
	_ZN20QBtServiceDiscoverer14startDiscoveryERK9QBtDeviceRK5QListI7QBtUuidE @ 150 NONAME
	_ZN20QBtServiceDiscoverer14startDiscoveryERK9QBtDeviceRK7QBtUuid @ 151 NONAME
	_ZN20QBtServiceDiscoverer15newServiceFoundERK9QBtDeviceRK10QBtService @ 152 NONAME
	_ZN20QBtServiceDiscoverer16discoveryStartedEv @ 153 NONAME
	_ZN20QBtServiceDiscoverer16discoveryStoppedEv @ 154 NONAME
	_ZN20QBtServiceDiscoverer16staticMetaObjectE @ 155 NONAME DATA 16
	_ZN20QBtServiceDiscoverer18startObexDiscoveryERK9QBtDevice @ 156 NONAME
	_ZN20QBtServiceDiscoverer19getInquiredServicesEv @ 157 NONAME
	_ZN20QBtServiceDiscoverer19getStaticMetaObjectEv @ 158 NONAME
	_ZN20QBtServiceDiscoverer20startRfcommDiscoveryERK9QBtDevice @ 159 NONAME
	_ZN20QBtServiceDiscoverer5errorENS_21ServiceDiscoveryErrorE @ 160 NONAME
	_ZN20QBtServiceDiscovererC1EP7QObject @ 161 NONAME
	_ZN20QBtServiceDiscovererC2EP7QObject @ 162 NONAME
	_ZN20QBtServiceDiscovererD0Ev @ 163 NONAME
	_ZN20QBtServiceDiscovererD1Ev @ 164 NONAME
	_ZN20QBtServiceDiscovererD2Ev @ 165 NONAME
	_ZN23QBtObjectExchangeClient10disconnectEv @ 166 NONAME
	_ZN23QBtObjectExchangeClient10objectSentEv @ 167 NONAME
	_ZN23QBtObjectExchangeClient11locateFilesEP7QRegExp7QString @ 168 NONAME
	_ZN23QBtObjectExchangeClient11qt_metacallEN11QMetaObject4CallEiPPv @ 169 NONAME
	_ZN23QBtObjectExchangeClient11qt_metacastEPKc @ 170 NONAME
	_ZN23QBtObjectExchangeClient12dataReceivedERK10QByteArray @ 171 NONAME
	_ZN23QBtObjectExchangeClient12fileReceivedERK7QString @ 172 NONAME
	_ZN23QBtObjectExchangeClient13getByteBufferERK7QString @ 173 NONAME
	_ZN23QBtObjectExchangeClient13putByteBufferERK10QByteArrayRK7QString @ 174 NONAME
	_ZN23QBtObjectExchangeClient13remotePathSetERK7QString @ 175 NONAME
	_ZN23QBtObjectExchangeClient14getWorkingPathEv @ 176 NONAME
	_ZN23QBtObjectExchangeClient15connectToServerERK9QBtDeviceRK10QBtService @ 177 NONAME
	_ZN23QBtObjectExchangeClient16staticMetaObjectE @ 178 NONAME DATA 16
	_ZN23QBtObjectExchangeClient17connectedToServerEv @ 179 NONAME
	_ZN23QBtObjectExchangeClient18batchFileRetrievalERK5QListIP17QBtRemoteFileInfoE7QStringb @ 180 NONAME
	_ZN23QBtObjectExchangeClient19getStaticMetaObjectEv @ 181 NONAME
	_ZN23QBtObjectExchangeClient22disconnectedFromServerEv @ 182 NONAME
	_ZN23QBtObjectExchangeClient22initiateFolderBrowsingERK7QString @ 183 NONAME
	_ZN23QBtObjectExchangeClient27folderBrowsingResultElementERK17QBtRemoteFileInfo @ 184 NONAME
	_ZN23QBtObjectExchangeClient5abortEv @ 185 NONAME
	_ZN23QBtObjectExchangeClient5errorENS_9ErrorCodeE @ 186 NONAME
	_ZN23QBtObjectExchangeClient7getFileERK7QStringS2_ @ 187 NONAME
	_ZN23QBtObjectExchangeClient7putFileERK7QString @ 188 NONAME
	_ZN23QBtObjectExchangeClient7setPathERK7QString @ 189 NONAME
	_ZN23QBtObjectExchangeClientC1EP7QObject @ 190 NONAME
	_ZN23QBtObjectExchangeClientC2EP7QObject @ 191 NONAME
	_ZN23QBtObjectExchangeClientD0Ev @ 192 NONAME
	_ZN23QBtObjectExchangeClientD1Ev @ 193 NONAME
	_ZN23QBtObjectExchangeClientD2Ev @ 194 NONAME
	_ZN23QBtObjectExchangeServer10stopServerEv @ 195 NONAME
	_ZN23QBtObjectExchangeServer11isConnectedEv @ 196 NONAME
	_ZN23QBtObjectExchangeServer11qt_metacallEN11QMetaObject4CallEiPPv @ 197 NONAME
	_ZN23QBtObjectExchangeServer11qt_metacastEPKc @ 198 NONAME
	_ZN23QBtObjectExchangeServer11startServerERK7QBtUuidRK7QString @ 199 NONAME
	_ZN23QBtObjectExchangeServer13serverStartedEv @ 200 NONAME
	_ZN23QBtObjectExchangeServer13serverStoppedEv @ 201 NONAME
	_ZN23QBtObjectExchangeServer16receivingStartedEv @ 202 NONAME
	_ZN23QBtObjectExchangeServer16receivingStoppedERK7QString @ 203 NONAME
	_ZN23QBtObjectExchangeServer16staticMetaObjectE @ 204 NONAME DATA 16
	_ZN23QBtObjectExchangeServer19getStaticMetaObjectEv @ 205 NONAME
	_ZN23QBtObjectExchangeServer19receivingObjectInfoEii @ 206 NONAME
	_ZN23QBtObjectExchangeServer19transmittingStartedERK7QString @ 207 NONAME
	_ZN23QBtObjectExchangeServer19transmittingStoppedERK7QString @ 208 NONAME
	_ZN23QBtObjectExchangeServer20transmittingRejectedEv @ 209 NONAME
	_ZN23QBtObjectExchangeServer22setTransmittingServiceERK10QBtService @ 210 NONAME
	_ZN23QBtObjectExchangeServer22stopAdvertisingServiceEv @ 211 NONAME
	_ZN23QBtObjectExchangeServer22transmittingObjectInfoEii @ 212 NONAME
	_ZN23QBtObjectExchangeServer23startAdvertisingServiceERK10QBtService @ 213 NONAME
	_ZN23QBtObjectExchangeServer25clientAbortedTransmittionEv @ 214 NONAME
	_ZN23QBtObjectExchangeServer26getTransmittingServiceInfoEv @ 215 NONAME
	_ZN23QBtObjectExchangeServer5errorENS_9ErrorCodeE @ 216 NONAME
	_ZN23QBtObjectExchangeServerC1EP7QObject @ 217 NONAME
	_ZN23QBtObjectExchangeServerC2EP7QObject @ 218 NONAME
	_ZN23QBtObjectExchangeServerD0Ev @ 219 NONAME
	_ZN23QBtObjectExchangeServerD1Ev @ 220 NONAME
	_ZN23QBtObjectExchangeServerD2Ev @ 221 NONAME
	_ZN25QBtSingleDeviceSelectorUI11qt_metacallEN11QMetaObject4CallEiPPv @ 222 NONAME
	_ZN25QBtSingleDeviceSelectorUI11qt_metacastEPKc @ 223 NONAME
	_ZN25QBtSingleDeviceSelectorUI12userCanceledEv @ 224 NONAME
	_ZN25QBtSingleDeviceSelectorUI16discoveryStartedEv @ 225 NONAME
	_ZN25QBtSingleDeviceSelectorUI16staticMetaObjectE @ 226 NONAME DATA 16
	_ZN25QBtSingleDeviceSelectorUI18discoveryCompletedERK9QBtDevice @ 227 NONAME
	_ZN25QBtSingleDeviceSelectorUI19getStaticMetaObjectEv @ 228 NONAME
	_ZN25QBtSingleDeviceSelectorUI4showEv @ 229 NONAME
	_ZN25QBtSingleDeviceSelectorUIC1EP7QWidget @ 230 NONAME
	_ZN25QBtSingleDeviceSelectorUIC2EP7QWidget @ 231 NONAME
	_ZN25QBtSingleDeviceSelectorUID0Ev @ 232 NONAME
	_ZN25QBtSingleDeviceSelectorUID1Ev @ 233 NONAME
	_ZN25QBtSingleDeviceSelectorUID2Ev @ 234 NONAME
	_ZN26QBtServiceDiscovererForAll11qt_metacallEN11QMetaObject4CallEiPPv @ 235 NONAME
	_ZN26QBtServiceDiscovererForAll11qt_metacastEPKc @ 236 NONAME
	_ZN26QBtServiceDiscovererForAll13stopDiscoveryEv @ 237 NONAME
	_ZN26QBtServiceDiscovererForAll14discoveryEndedEv @ 238 NONAME
	_ZN26QBtServiceDiscovererForAll14newDeviceFoundERK9QBtDevice @ 239 NONAME
	_ZN26QBtServiceDiscovererForAll14startDiscoveryERK5QListI7QBtUuidE @ 240 NONAME
	_ZN26QBtServiceDiscovererForAll14startDiscoveryERK7QBtUuid @ 241 NONAME
	_ZN26QBtServiceDiscovererForAll14startDiscoveryEv @ 242 NONAME
	_ZN26QBtServiceDiscovererForAll15_startDiscoveryEv @ 243 NONAME
	_ZN26QBtServiceDiscovererForAll16discoveryStartedEv @ 244 NONAME
	_ZN26QBtServiceDiscovererForAll16staticMetaObjectE @ 245 NONAME DATA 16
	_ZN26QBtServiceDiscovererForAll17dd_discoveryEndedEv @ 246 NONAME
	_ZN26QBtServiceDiscovererForAll17dd_newDeviceFoundERK9QBtDevice @ 247 NONAME
	_ZN26QBtServiceDiscovererForAll18sd_newServiceFoundERK9QBtDeviceRK10QBtService @ 248 NONAME
	_ZN26QBtServiceDiscovererForAll18startObexDiscoveryEv @ 249 NONAME
	_ZN26QBtServiceDiscovererForAll19dd_discoveryStartedEv @ 250 NONAME
	_ZN26QBtServiceDiscovererForAll19getStaticMetaObjectEv @ 251 NONAME
	_ZN26QBtServiceDiscovererForAll20deviceDiscoveryErrorEN19QBtDeviceDiscoverer21DeviceDiscoveryErrorsE @ 252 NONAME
	_ZN26QBtServiceDiscovererForAll20serviceDiscoveyErrorERK9QBtDeviceN20QBtServiceDiscoverer21ServiceDiscoveryErrorE @ 253 NONAME
	_ZN26QBtServiceDiscovererForAll20startRfcommDiscoveryEv @ 254 NONAME
	_ZN26QBtServiceDiscovererForAll24sd_serviceDiscoveryEndedEv @ 255 NONAME
	_ZN26QBtServiceDiscovererForAll26sd_serviceDiscoveryStartedEv @ 256 NONAME
	_ZN26QBtServiceDiscovererForAll8dd_errorEN19QBtDeviceDiscoverer21DeviceDiscoveryErrorsE @ 257 NONAME
	_ZN26QBtServiceDiscovererForAll8sd_errorEN20QBtServiceDiscoverer21ServiceDiscoveryErrorE @ 258 NONAME
	_ZN26QBtServiceDiscovererForAllC1EP7QObject @ 259 NONAME
	_ZN26QBtServiceDiscovererForAllC2EP7QObject @ 260 NONAME
	_ZN26QBtServiceDiscovererForAllD0Ev @ 261 NONAME
	_ZN26QBtServiceDiscovererForAllD1Ev @ 262 NONAME
	_ZN26QBtServiceDiscovererForAllD2Ev @ 263 NONAME
	_ZN7QBtUuid11qt_metacallEN11QMetaObject4CallEiPPv @ 264 NONAME
	_ZN7QBtUuid11qt_metacastEPKc @ 265 NONAME
	_ZN7QBtUuid16staticMetaObjectE @ 266 NONAME DATA 16
	_ZN7QBtUuid19getStaticMetaObjectEv @ 267 NONAME
	_ZN7QBtUuid3setERK7QString @ 268 NONAME
	_ZN7QBtUuid3setEj @ 269 NONAME
	_ZN7QBtUuid5clearEv @ 270 NONAME
	_ZN7QBtUuidC1EP7QObject @ 271 NONAME
	_ZN7QBtUuidC1ERK7QString @ 272 NONAME
	_ZN7QBtUuidC1ERKS_ @ 273 NONAME
	_ZN7QBtUuidC1Ej @ 274 NONAME
	_ZN7QBtUuidC2EP7QObject @ 275 NONAME
	_ZN7QBtUuidC2ERK7QString @ 276 NONAME
	_ZN7QBtUuidC2ERKS_ @ 277 NONAME
	_ZN7QBtUuidC2Ej @ 278 NONAME
	_ZN7QBtUuidaSERKS_ @ 279 NONAME
	_ZN9QBtDevice10setAddressERK10QBtAddress @ 280 NONAME
	_ZN9QBtDevice11nameChangedE7QString @ 281 NONAME
	_ZN9QBtDevice11qt_metacallEN11QMetaObject4CallEiPPv @ 282 NONAME
	_ZN9QBtDevice11qt_metacastEPKc @ 283 NONAME
	_ZN9QBtDevice13addNewServiceERK10QBtService @ 284 NONAME
	_ZN9QBtDevice16staticMetaObjectE @ 285 NONAME DATA 16
	_ZN9QBtDevice19getStaticMetaObjectEv @ 286 NONAME
	_ZN9QBtDevice20setSupportedServicesERK5QListI10QBtServiceE @ 287 NONAME
	_ZN9QBtDevice7setNameERK7QString @ 288 NONAME
	_ZN9QBtDevice7setTypeENS_11DeviceMajorE @ 289 NONAME
	_ZN9QBtDeviceC1EP7QObject @ 290 NONAME
	_ZN9QBtDeviceC1ERK7QStringRK10QBtAddressNS_11DeviceMajorEP7QObject @ 291 NONAME
	_ZN9QBtDeviceC1ERKS_P7QObject @ 292 NONAME
	_ZN9QBtDeviceC2EP7QObject @ 293 NONAME
	_ZN9QBtDeviceC2ERK7QStringRK10QBtAddressNS_11DeviceMajorEP7QObject @ 294 NONAME
	_ZN9QBtDeviceC2ERKS_P7QObject @ 295 NONAME
	_ZN9QBtDeviceD0Ev @ 296 NONAME
	_ZN9QBtDeviceD1Ev @ 297 NONAME
	_ZN9QBtDeviceD2Ev @ 298 NONAME
	_ZN9QBtDeviceaSERKS_ @ 299 NONAME
	_ZNK10QBtAddress10metaObjectEv @ 300 NONAME
	_ZNK10QBtAddress11toByteArrayEv @ 301 NONAME
	_ZNK10QBtAddress19toReversedByteArrayEv @ 302 NONAME
	_ZNK10QBtAddress25convertToSymbianBtDevAddrEv @ 303 NONAME
	_ZNK10QBtAddress7isValidEv @ 304 NONAME
	_ZNK10QBtAddress8toStringEv @ 305 NONAME
	_ZNK10QBtService10metaObjectEv @ 306 NONAME
	_ZNK10QBtService12getProtocolsEv @ 307 NONAME
	_ZNK10QBtService14getDescriptionEv @ 308 NONAME
	_ZNK10QBtService7getNameEv @ 309 NONAME
	_ZNK10QBtService7getPortEv @ 310 NONAME
	_ZNK10QBtService8getClassEv @ 311 NONAME
	_ZNK10QBtService9getHandleEv @ 312 NONAME
	_ZNK12QBtConstants10metaObjectEv @ 313 NONAME
	_ZNK17QBtRemoteFileInfo10metaObjectEv @ 314 NONAME
	_ZNK19QBtDeviceDiscoverer10metaObjectEv @ 315 NONAME
	_ZNK19QBtDeviceDiscoverer18getInquiredDevicesEv @ 316 NONAME
	_ZNK19QBtDeviceDiscoverer6isBusyEv @ 317 NONAME
	_ZNK19QBtSerialPortClient10metaObjectEv @ 318 NONAME
	_ZNK19QBtSerialPortServer10metaObjectEv @ 319 NONAME
	_ZNK19QBtSerialPortServer26getTransmittingServiceInfoEv @ 320 NONAME
	_ZNK20QBtServiceAdvertiser10metaObjectEv @ 321 NONAME
	_ZNK20QBtServiceDiscoverer10metaObjectEv @ 322 NONAME
	_ZNK20QBtServiceDiscoverer15getTargetDeviceEv @ 323 NONAME
	_ZNK20QBtServiceDiscoverer6isBusyEv @ 324 NONAME
	_ZNK23QBtObjectExchangeClient10metaObjectEv @ 325 NONAME
	_ZNK23QBtObjectExchangeClient11isConnectedEv @ 326 NONAME
	_ZNK23QBtObjectExchangeClient6isBusyEv @ 327 NONAME
	_ZNK23QBtObjectExchangeServer10metaObjectEv @ 328 NONAME
	_ZNK25QBtSingleDeviceSelectorUI10metaObjectEv @ 329 NONAME
	_ZNK26QBtServiceDiscovererForAll10metaObjectEv @ 330 NONAME
	_ZNK26QBtServiceDiscovererForAll12foundDevicesEv @ 331 NONAME
	_ZNK26QBtServiceDiscovererForAll13getDeviceListEv @ 332 NONAME
	_ZNK26QBtServiceDiscovererForAll23getNumberOfFoundDevicesEv @ 333 NONAME
	_ZNK26QBtServiceDiscovererForAll6isBusyEv @ 334 NONAME
	_ZNK7QBtUuid10metaObjectEv @ 335 NONAME
	_ZNK7QBtUuid3getERjS0_S0_S0_ @ 336 NONAME
	_ZNK7QBtUuid3getEv @ 337 NONAME
	_ZNK7QBtUuid6isFullEv @ 338 NONAME
	_ZNK7QBtUuid6isNullEv @ 339 NONAME
	_ZNK7QBtUuid8toStringEv @ 340 NONAME
	_ZNK7QBtUuideqERKS_ @ 341 NONAME
	_ZNK7QBtUuidneERKS_ @ 342 NONAME
	_ZNK9QBtDevice10getAddressEv @ 343 NONAME
	_ZNK9QBtDevice10metaObjectEv @ 344 NONAME
	_ZNK9QBtDevice15getTypeAsStringEv @ 345 NONAME
	_ZNK9QBtDevice18serviceListUpdatedEv @ 346 NONAME
	_ZNK9QBtDevice20getSupportedServicesEv @ 347 NONAME
	_ZNK9QBtDevice4nameEv @ 348 NONAME
	_ZNK9QBtDevice7getNameEv @ 349 NONAME
	_ZNK9QBtDevice7getTypeEv @ 350 NONAME
	_ZTI10QBtAddress @ 351 NONAME
	_ZTI10QBtService @ 352 NONAME
	_ZTI12QBtConstants @ 353 NONAME
	_ZTI13StringVisitor @ 354 NONAME
	_ZTI17QBtRemoteFileInfo @ 355 NONAME
	_ZTI18CBTDeviceFinderDlg @ 356 NONAME
	_ZTI18ServiceUuidVisitor @ 357 NONAME
	_ZTI19ProtocolListVisitor @ 358 NONAME
	_ZTI19QBtDeviceDiscoverer @ 359 NONAME
	_ZTI19QBtSerialPortClient @ 360 NONAME
	_ZTI19QBtSerialPortServer @ 361 NONAME
	_ZTI20QBtServiceAdvertiser @ 362 NONAME
	_ZTI20QBtServiceDiscoverer @ 363 NONAME
	_ZTI23QBtObjectExchangeClient @ 364 NONAME
	_ZTI23QBtObjectExchangeServer @ 365 NONAME
	_ZTI25QBtSingleDeviceSelectorUI @ 366 NONAME
	_ZTI26QBtDeviceDiscovererPrivate @ 367 NONAME
	_ZTI26QBtSerialPortClientPrivate @ 368 NONAME
	_ZTI26QBtSerialPortServerPrivate @ 369 NONAME
	_ZTI26QBtServiceDiscovererForAll @ 370 NONAME
	_ZTI27QBtServiceAdvertiserPrivate @ 371 NONAME
	_ZTI27QBtServiceDiscovererPrivate @ 372 NONAME
	_ZTI30QBtObjectExchangeClientPrivate @ 373 NONAME
	_ZTI30QBtObjectExchangeServerPrivate @ 374 NONAME
	_ZTI32QBtSingleDeviceSelectorUIPrivate @ 375 NONAME
	_ZTI7QBtUuid @ 376 NONAME
	_ZTI9QBtDevice @ 377 NONAME
	_ZTV10QBtAddress @ 378 NONAME
	_ZTV10QBtService @ 379 NONAME
	_ZTV12QBtConstants @ 380 NONAME
	_ZTV13StringVisitor @ 381 NONAME
	_ZTV17QBtRemoteFileInfo @ 382 NONAME
	_ZTV18CBTDeviceFinderDlg @ 383 NONAME
	_ZTV18ServiceUuidVisitor @ 384 NONAME
	_ZTV19ProtocolListVisitor @ 385 NONAME
	_ZTV19QBtDeviceDiscoverer @ 386 NONAME
	_ZTV19QBtSerialPortClient @ 387 NONAME
	_ZTV19QBtSerialPortServer @ 388 NONAME
	_ZTV20QBtServiceAdvertiser @ 389 NONAME
	_ZTV20QBtServiceDiscoverer @ 390 NONAME
	_ZTV23QBtObjectExchangeClient @ 391 NONAME
	_ZTV23QBtObjectExchangeServer @ 392 NONAME
	_ZTV25QBtSingleDeviceSelectorUI @ 393 NONAME
	_ZTV26QBtDeviceDiscovererPrivate @ 394 NONAME
	_ZTV26QBtSerialPortClientPrivate @ 395 NONAME
	_ZTV26QBtSerialPortServerPrivate @ 396 NONAME
	_ZTV26QBtServiceDiscovererForAll @ 397 NONAME
	_ZTV27QBtServiceAdvertiserPrivate @ 398 NONAME
	_ZTV27QBtServiceDiscovererPrivate @ 399 NONAME
	_ZTV30QBtObjectExchangeClientPrivate @ 400 NONAME
	_ZTV30QBtObjectExchangeServerPrivate @ 401 NONAME
	_ZTV32QBtSingleDeviceSelectorUIPrivate @ 402 NONAME
	_ZTV7QBtUuid @ 403 NONAME
	_ZTV9QBtDevice @ 404 NONAME


code:
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

repo_name: twistero/PD

path: .gitattributes

license: mit


code:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Exclude data folder
!data/*
!data/debug/*

path: .gitignore


code:
[submodule "source-code/dependencies/MemoryModule"]
	path = source-code/dependencies/MemoryModule
	url = https://github.com/fancycode/MemoryModule

path: .gitmodules


code:
This is the source code! It can NOT be used to play PDAFT!
If you just wanted to play the game, you downloaded the wrong thing.
Do not click the download button next to the git URL, that's for the source code.

For information on getting and installing the latest release,
please read the wiki at https://notabug.org/nastys/PD-Loader/wiki
If you've already read it, pay more attention and you'll find the right link.

You should also read the wiki if you have any issues, before asking questions.


code:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28922.388
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PD-Loader", "source\PD-Loader\PD-Loader.vcxproj", "{CA479467-D518-46A2-AC86-3098ADA99FE5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLAC", "source\plugins\TLAC\TLAC.vcxproj", "{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Patches", "source\plugins\Patches\Patches.vcxproj", "{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Launcher", "source\plugins\Launcher\Launcher.vcxproj", "{60D5E9F4-335F-402B-9A07-D78674DFFC9B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Render", "source\plugins\Render\Render.vcxproj", "{89F87459-768F-4638-9267-0F90CD74452D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fakedll", "source\fakedll\fakedll.vcxproj", "{B49C6ABE-931C-4F91-9A94-21A41A305FEE}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DivaSound", "source\plugins\DivaSound\DivaSound.vcxproj", "{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DivaMovie", "source\plugins\DivaMovie\DivaMovie.vcxproj", "{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Debug|x64.ActiveCfg = Debug|x64
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Debug|x64.Build.0 = Debug|x64
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Debug|x86.ActiveCfg = Debug|Win32
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Debug|x86.Build.0 = Debug|Win32
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Release|x64.ActiveCfg = Release|x64
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Release|x64.Build.0 = Release|x64
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Release|x86.ActiveCfg = Release|Win32
		{CA479467-D518-46A2-AC86-3098ADA99FE5}.Release|x86.Build.0 = Release|Win32
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Debug|x64.ActiveCfg = Debug|x64
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Debug|x64.Build.0 = Debug|x64
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Debug|x86.ActiveCfg = Debug|Win32
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Debug|x86.Build.0 = Debug|Win32
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Release|x64.ActiveCfg = Release|x64
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Release|x64.Build.0 = Release|x64
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Release|x86.ActiveCfg = Release|Win32
		{2B5533BB-04A1-424F-9BCA-1CA963B46B7F}.Release|x86.Build.0 = Release|Win32
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Debug|x64.ActiveCfg = Debug|x64
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Debug|x64.Build.0 = Debug|x64
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Debug|x86.ActiveCfg = Debug|Win32
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Debug|x86.Build.0 = Debug|Win32
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Release|x64.ActiveCfg = Release|x64
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Release|x64.Build.0 = Release|x64
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Release|x86.ActiveCfg = Release|Win32
		{3FD6ACA9-E613-4FD6-BDA2-55A91C2CF65C}.Release|x86.Build.0 = Release|Win32
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Debug|x64.ActiveCfg = Debug|x64
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Debug|x64.Build.0 = Debug|x64
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Debug|x86.ActiveCfg = Debug|Win32
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Debug|x86.Build.0 = Debug|Win32
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Release|x64.ActiveCfg = Release|x64
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Release|x64.Build.0 = Release|x64
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Release|x86.ActiveCfg = Release|Win32
		{60D5E9F4-335F-402B-9A07-D78674DFFC9B}.Release|x86.Build.0 = Release|Win32
		{89F87459-768F-4638-9267-0F90CD74452D}.Debug|x64.ActiveCfg = Debug|x64
		{89F87459-768F-4638-9267-0F90CD74452D}.Debug|x64.Build.0 = Debug|x64
		{89F87459-768F-4638-9267-0F90CD74452D}.Debug|x86.ActiveCfg = Debug|Win32
		{89F87459-768F-4638-9267-0F90CD74452D}.Debug|x86.Build.0 = Debug|Win32
		{89F87459-768F-4638-9267-0F90CD74452D}.Release|x64.ActiveCfg = Release|x64
		{89F87459-768F-4638-9267-0F90CD74452D}.Release|x64.Build.0 = Release|x64
		{89F87459-768F-4638-9267-0F90CD74452D}.Release|x86.ActiveCfg = Release|Win32
		{89F87459-768F-4638-9267-0F90CD74452D}.Release|x86.Build.0 = Release|Win32
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Debug|x64.ActiveCfg = Debug|x64
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Debug|x64.Build.0 = Debug|x64
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Debug|x86.ActiveCfg = Debug|Win32
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Debug|x86.Build.0 = Debug|Win32
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Release|x64.ActiveCfg = Release|x64
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Release|x64.Build.0 = Release|x64
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Release|x86.ActiveCfg = Release|Win32
		{B49C6ABE-931C-4F91-9A94-21A41A305FEE}.Release|x86.Build.0 = Release|Win32
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Debug|x64.ActiveCfg = Debug|x64
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Debug|x64.Build.0 = Debug|x64
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Debug|x86.ActiveCfg = Debug|x64
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Release|x64.ActiveCfg = Release|x64
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Release|x64.Build.0 = Release|x64
		{EE1A551A-49A0-40F2-8C2E-862D0AE55B43}.Release|x86.ActiveCfg = Release|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Debug|x64.ActiveCfg = Debug|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Debug|x64.Build.0 = Debug|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Debug|x86.ActiveCfg = Debug|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Release|x64.ActiveCfg = Release|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Release|x64.Build.0 = Release|x64
		{1994C586-F73B-4EF2-BA3E-2A0FC3034B1A}.Release|x86.ActiveCfg = Release|x64
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {F5AD7464-338F-4150-9DDC-85AD115BA616}
	EndGlobalSection
EndGlobal


code:
# PD Loader

**PD Loader** lets you load plugins into **PDAFT** by placing them into a **"plugins"** folder, it includes useful ones such as input emulation and a graphical launcher.

## License and Legal

The code included in this repository is intended for the solely usage of investigative reasons for the **PDAFT** videogame.
Based on your current jurisdiction, it may be illegal to tamper with an arcade cabinet or its hardware and so it would be the usage of this software.
**You must have your own legal dump of the game to use this software.**
Additionally, a MIT License is provided.

## Installation

* Have a **full clean** game version **"7.10"** decompressed without any modifications.
* Download the latest release of **PD Loader**.
* Decompress everything into the **root folder** of the game.

* Install the official **"mdata"**.
**M215** to **M270** are supported, custom ones are also supported.

To install them you have to drop each **"mdata"** update decompressed into the **"mdata\"** folder in the root folder of the game (create it if it doesn't exists).

**e.g.** For all the official **"mdata"** you should have the following folders inside:
  * M215
  * M220
  * M230
  * M240
  * M250
  * M260
  * M270

Files required to make **"mdata"** available in the game are included (**"ram\databank\PvList*"** files).

## Usage

**IMPORTANT:** Do *not* edit any of the *.ini* configuration files with Notepad. Use [Notepad++](https://notepad-plus-plus.org/download) (or WordPad) with UTF-8 encoding instead, otherwise your game may crash.

Use **"plugins\components.ini"** to enable or disable TLAC components.
Use **"plugins\config.ini"** to enable or disable plugins loading along other useful settings.
Use **"plugins\keyconfig.ini"** to change your game keybinds.
Use **"plugins\playerdata.ini"** to change your playername and other player customization.

Place any **.dva** plugin you want to use inside the **"plugins"** folder.

Launch **"diva.exe"**.
Use **"--launch"** argument to bypass the launcher and to be able to use other arguments.

## Modules

Edit **"plugins\playerdata.ini** with [Notepad++](https://notepad-plus-plus.org/download) (or WordPad) and set use_card to true.

## Sound

If you do not hear any audio from the game, please install [DivaSound](https://github.com/somewhatlurker/DivaSound).

## Screenshots

Your **root** game folder should look like this:

![root game folder](https://i.imgur.com/c57lQPH.png)

Your **"mdata"** folder should look like this:

![mdata folder](https://i.imgur.com/2jUjosM.png)

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

MIT (see "LICENSE").

## Third party plugins

[DiscordDiva](https://github.com/bela333/DiscordDiva) - Discord integration by **bela333**.

[DivaSound](https://github.com/somewhatlurker/DivaSound) - Replacement audio output by **somewhatlurker**, this plugin is a must if you have audio issues or no audio at all.

## FAQ

Only **NVIDIA** videocards are supported for now, AMD and Intel GPU support is possible but further research needs to be done. On computers with multiple GPUs, such as most laptops, the game must be set to run on the NVIDIA GPU manually.

**Linux** can run the game with **Wine**, for audio you must use [DivaSound](https://github.com/somewhatlurker/DivaSound).
WMV movie videos are not supported and it is recommended to set **No_Movies** to **1** to prevent crashes when the game attempts to load a movie.

**Windows 7** is supported except for WMV movie videos.

Previous versions used **dinput8.dll** in the game root folder, if you still have it you must delete it.

Always use the original game executable.

Special thanks to **Brolijah**, **Skyth**, **korenkonder**, **Samyuu**, **somewhatlurker**, **SwigS-27**, **crash5band**, **vladkorotnev**, **lybxlpsv** and everyone else who helped at the [Project DIVA Modding 2nd Community Discord](https://discord.gg/cvBVGDZ), come join us if you want to help us to improve this project.

## Developer FAQ

To enable logs and dumps create a folder called "logs" in the root folder, each dump size is 200MB so watch your disk space.

This is a stripdown of [**ThirteenAG's** Ultimate ASI Loader v4.47](https://github.com/ThirteenAG/Ultimate-ASI-Loader/) for **"dnsapi.dll"** usage only.

Solution for **Visual Studio 2019**.
Requires platform toolset **v142**.
Requires **Windows 10 SDK (10.0.17763.0)**.

Requires **Desktop development with C++**.
Requires **Windows Universal CRT SDK**.

Requires **.NET desktop development** (Launcher plugin).
Requires **.NET Framework 4 targeting pack** (Launcher plugin).
Requires **C++/CLI support for v142 build tools (14.21)** (Launcher plugin)

Requires [**Microsoft Research Detours Package**](https://github.com/microsoft/Detours) (included in the solution).
Requires [**FreeGLUT 3.0.0 PD**](https://github.com/Rayduxz/FreeGLUT) (included in the solution).


code:
#########################################
# /!\ WARNING: DO NOT EDIT WITH NOTEPAD!#
#########################################

[General]
# You can choose 2 channel or 4 channel mode.
# 4 channels uses front channels for speakers and rear channels as headphones.
# 2 channels only has headphones output (with in-game volume bypassed).
Channels=2

# 16 or 24 bit integer and 32 bit float output are supported.
# If you don't know what this means, you should leave it at 16.
# On some versions of Windows floating point samples may increase latency.
Bit_Depth=16

# This can be WASAPI, DirectSound, WASAPI_Exclusive, or ASIO.
# Only use DirectSound if WASAPI doesn't work for some reason.
# WASAPI_Exclusive may not work with some hardware, but can have lower latency.
# ASIO requires special driver support.
# ASIO doesn't use the buffer settings. Use ASIO config instead.
# For full descriptions of the backends see https://github.com/somewhatlurker/DivaSound/wiki/Backends.
Backend=WASAPI

# If the game crashes when loading, try setting this to 0.
Alternate_Init=1

[Buffer]
# Sets the requested buffer size in milliseconds.
# Try increasing this if audio stutters or desyncs.
# WASAPI will usually provide a larger buffer than specified.
# You can check the actual buffer size by enabling debug_component.
Buffer_Size=10

# Sets how many periods to use.
# Fewer periods = lower latency, but it may cause issues.
# You probably shouldn't set this below 2, and increasing it probably isn't necessary.
Periods=2

[ASIO]
# Sets the device ID.
# 0=first device(...), -1=first available device
Device=-1

# When set to 1 the ASIO driver config will open alongside the game.
# Use this to adjust output settings, then disable it.
Show_Config=0


code:
#########################################
# /!\ WARNING: DO NOT EDIT WITH NOTEPAD!#
#########################################

# components.ini
# defines which components will be enabled
[components]

# emulates game input through mouse and keyboard.
# controls can be set inside the keyconfig.ini file.
input_emulator = true
touch_slider_emulator = true
touch_panel_emulator = true

# freezes the PV select timer at 39 seconds.
sys_timer = true

# loads user defined const values from the playerdata.ini config
# and writes them to the game's PlayerData struct.
# required for modules selection
player_data_manager = true

# adjusts 2D and 3D animations to retain their original speed at different frame rates.
# only use this component if you are running this game at higher than 60 FPS.
frame_rate_manager = false

# sets an unlimited per session play count for the normal game mode.
# this means the player won't be sent back to the title screen after 2 plays.
stage_manager = false

# skip unnecessary DATA_INITIALIZE loading time, speed up SYSTEM_STARTUP and skip the startup WARNING message.
# further improvements can be achieved by shortening the duration of the pv_999 script file as it's test loaded during the SYSTEM_STARTUP.
fast_loader = true

# allows for a user controllable camera which can be toggled using F3,
# can be controlled using W/A/S/D to move, SPACE/CTRL to ascend/descend, Q/E to rotate, R/F to zoom in/out
# and holding SHIFT/ALT to speed up or slow down these controls.
camera_controller = false

# scales the framebuffer so that it will fit the current screen or window
# required to set resolutions in config.ini
scale_component = true

# lets the user change the current game state using the F4 - F8 keys, enable the dw_gui / DATA_TESTs
# and speed up 2D animations / menu navigation by holding SHIFT + TAB.
# enabling this component is not recommended for most users.
debug_component = false

# allows the usage of hold transfer
target_inspector = true

# saves high scores to plugins/scores.ini
score_saver = true


code:
#########################################
# /!\ WARNING: DO NOT EDIT WITH NOTEPAD!#
#########################################

[Global]
# Load plugins including below options
Enable=1

[Launcher]
# Forces the launcher to be skipped, you can use the --launch parameter instead of this.
Skip=0

[Patches]
#Enable or disable mouse cursor
Cursor=1
#Hide "CREDIT(S)"/"FREE PLAY"
Hide_Freeplay=0
#Show "FREE PLAY" instead of "CREDIT(S)"
Freeplay=1
#Show "PD Loader <version>" instead of "FREE PLAY"
PDLoaderText=1
#Set the card reader and network status icons -- 0=default, 1=hidden, 2=error, 3=OK, 4=partial OK
Status_Icons=0
#Hide the watermark that's usually shown in PV viewing mode
Hide_PV_Watermark=0
#Permanently the photo controls during PV playback
No_PV_UI=0
#Disable showing lyrics
No_Lyrics=0
#Disable movies (enable this if the game hangs when loading certain PVs)
No_Movies=0
#Enable custom MP4 adv movies (experimental)
MP4_Movies=1
#Hide the volume and SE control buttons
Hide_Volume=0
#Disable the error banner
No_Error=1
#Allow using a real arcade slider attached to COM11
Hardware_Slider=0
#Enhanced Stage Manager (sets a custom number of stages; "stage_manager" should be disabled in "components.ini")
#Number of stages (0 = disabled)
Enhanced_Stage_Manager=0
#Use encore stages or not
Enhanced_Stage_Manager_Encore=1

[Graphics]
# Set to -1 to unlock the frame rate.
FPS.Limit=60
# Reduces FPS Limiter CPU usage
# (may have less consistent performance)
FPS.Limit.LightMode=1
# Enable debug warnings for lightweight limiter
FPS.Limit.Verbose=0
# Temporal Anti-Aliasing
TAA=1
# Morphological Anti-Aliasing
MLAA=1
# FrameRateManager motion rate (fps)
FRM.Motion.Rate=300

[Resolution]
# 0 = Windowed, 1 = Borderless (Forced to desktop resolution), 2 = Fullscreen
Display=1
Width=1280
Height=720
# Make borderless mode use a popup window (better performance/lower latency, but can cause screenshot issues)
Borderless.Popup=1
# Fullscreen only options
BitDepth=32
RefreshRate=60

# Set a custom internal render resolution
# HD    : 1280x720
# FHD   : 1920x1080
# WQHD  : 2560x1440
# 4K UHD: 3840x2160
# 5K UHD: 5120x2880
# 8K UHD: 7680x4320
r.Enable=0
r.Width=1920
r.Height=1080


code:
#########################################
# /!\ WARNING: DO NOT EDIT WITH NOTEPAD!#
#########################################

# keyconfig.ini
# defines the input_emulator key bindings
# multiple keys are to be specified comma separated

# Options:

# Allow the user to mouse wheel scroll through the PV selection list
mouse_scroll_pv_selection = true
# The interval it takes for the emulated slider touch points to move from one contact point to another.
# In most cases, this does not need editing.
touch_slider_emulation_speed = 750.0

# Preferred Xinput controller (0-3)
xinput_preferred = 0

# Rumble (Xinput)
rumble = true

# JVS Buttons:
JVS_TEST = F1
JVS_SERVICE = F2

JVS_START = Enter, Ds4_Options, XINPUT_START, MouseMiddle
JVS_TRIANGLE = W, I, Ds4_Triangle, Ds4_DPad_Up, Ds4_L_Trigger, Ds4_R_Trigger, XINPUT_Y, XINPUT_UP, XINPUT_LT, XINPUT_RT
JVS_SQUARE = A, J, Ds4_Square, Ds4_DPad_Left, Ds4_L_Trigger, Ds4_R_Trigger, XINPUT_X, XINPUT_LEFT, XINPUT_LT, XINPUT_RT, MouseX2
JVS_CROSS = S, K, Ds4_Cross, Ds4_DPad_Down, Ds4_L_Trigger, Ds4_R_Trigger, XINPUT_A, XINPUT_DOWN, XINPUT_LT, XINPUT_RT, MouseX1
JVS_CIRCLE = D, L, Ds4_Circle, Ds4_DPad_Right, Ds4_L_Trigger, Ds4_R_Trigger, XINPUT_B, XINPUT_RIGHT, XINPUT_LT, XINPUT_RT

JVS_LEFT = Left, Up, Ds4_L1, Ds4_L_Stick_Up, Ds4_R_Stick_Up, XINPUT_LS
JVS_RIGHT = Right, Down, Ds4_R1, Ds4_L_Stick_Down, Ds4_R_Stick_Down, XINPUT_RS

# Touch Slider:
LEFT_SIDE_SLIDE_LEFT = Q, Ds4_L_Stick_Left, XINPUT_LLEFT
LEFT_SIDE_SLIDE_RIGHT = E, Ds4_L_Stick_Right, XINPUT_LRIGHT

RIGHT_SIDE_SLIDE_LEFT = U, Ds4_R_Stick_Left, XINPUT_RLEFT
RIGHT_SIDE_SLIDE_RIGHT = O, Ds4_R_Stick_Right, XINPUT_RRIGHT

# --- KEYBOARD KEY NAMES: ---

# - Standard Keys
# uppercase "A" to "Z", "0" to "9"

# - NumPad Keys
# "NumPad0" to "NumPad9"
# "Plus", "Minus", "Divide", "Multiply"

# - Function Keys
# "F1" to "F24"

# - Shift Keys
# "LeftShift", "RightShift"

# - Control Keys
# "LeftControl", "RightControl"

# - Arrow Keys
# "Up", "Down", "Left", "Right"

# - Special Keys
# "Enter", "Tab", "Backspace", "Insert", "Delete", "Home", "End", "PageUp", "PageDown", "Escape"

# --- MOUSE BUTTON NAMES: ---
# "MouseLeft", "MouseMiddle", "MouseRight", "MouseX1", "MouseX2"

# --- DUALSHOCK 4 BUTTON NAMES: ---

# - Face Buttons
# "Ds4_Square", "Ds4_Cross", "Ds4_Circle", "Ds4_Triangle"

# - Standard Buttons
# "Ds4_Share", "Ds4_Options", "Ds4_PS", "Ds4_Touch", "Ds4_L1", "Ds4_R1"

# - D-Pad Directions
# "Ds4_DPad_Up", "Ds4_DPad_Right", "Ds4_DPad_Down", "Ds4_DPad_Left"

# - Trigger Buttons
# "Ds4_L_Trigger", "Ds4_R_Trigger"

# - Left Joystick
# "Ds4_L_Stick_Up", "Ds4_L_Stick_Right", "Ds4_L_Stick_Down", "Ds4_L_Stick_Left", "Ds4_L3"

# - Right Joystick
# "Ds4_R_Stick_Up", "Ds4_R_Stick_Right", "Ds4_R_Stick_Down", "Ds4_R_Stick_Left", "Ds4_R3"

# --- XINPUT BUTTON NAMES: ---

# - Face Buttons
# "XINPUT_A", "XINPUT_B", "XINPUT_X", "XINPUT_Y"

# - Standard Buttons
# "XINPUT_START", "XINPUT_BACK", "XINPUT_LS"/"XINPUT_LB", "XINPUT_RS"/"XINPUT_RB"

# - D-Pad Directions
# "XINPUT_UP", "XINPUT_DOWN", "XINPUT_LEFT", "XINPUT_RIGHT"

# - Trigger Buttons
# "XINPUT_LT", "XINPUT_RT"

# - Left Joystick
# "XINPUT_LLEFT", "XINPUT_LRIGHT", "XINPUT_LSB"

# - Right Joystick
# "XINPUT_RLEFT", "XINPUT_RRIGHT", "XINPUT_RSB"


code:
#########################################
# /!\ WARNING: DO NOT EDIT WITH NOTEPAD!#
#########################################

# playerdata.ini
# defines constant values to be loaded into the PlayerData struct
# this file has to be encoded using utf-8

player_name = ＮＯ－ＮＡＭＥ
level_name = 忘れないでね私の声を

# IDs defined in rom/gm_plate_tbl.farc/gm_plate_id.bin
level_plate_id = 0
# Shows an effect on the level plate (-1=off, 0~2=different settings)
level_plate_effect =-1

# IDs same as gam_skin%03d
skin_equip = 0

# IDs defined in rom/gm_btn_se_tbl.farc/gm_btn_se_id.bin
btn_se_equip = -1

# IDs defined in rom/gm_slide_se_tbl.farc/gm_slide_se_id.bin
slide_se_equip = -1

# IDs defined in rom/gm_chainslide_se_tbl.farc/gm_chainslide_se_id.bin
chainslide_se_equip = -1

# IDs defined in rom/gm_slidertouch_se_tbl.farc/gm_slidertouch_se_id.bin(?)
slidertouch_se_equip =-1

# Enable button/slider sounds
act_toggle = true

# Show clear borders on Progress Bar for:
# Great
border_great = true
# Excellent
border_excellent = true
# Rival score
border_rival =false

# Allows module selection (WARNING: It may cause lag in the main menu and other places)
use_card = true

# Allows module selection without card and attempts to disable module refresh when sliding in PV select to reduce CPU and IO load.
module_card_workaround = false

# Allows use of game mode modifiers (hi-speed, hidden, and sudden)
gamemode_options = true