Full Code of jquesnelle/nds4droid for AI

master c7b72507569b cached
1931 files
17.0 MB
4.6M tokens
14143 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (18,475K chars total). Download the full file to get everything.
Repository: jquesnelle/nds4droid
Branch: master
Commit: c7b72507569b
Files: 1931
Total size: 17.0 MB

Directory structure:
gitextract_wy7erldf/

├── .gitignore
├── .idea/
│   ├── gradle.xml
│   └── runConfigurations.xml
├── LICENSE
├── README.md
├── app/
│   ├── build.gradle
│   ├── libs/
│   │   └── ouya-sdk.jar
│   ├── lint.xml
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── opendoorstudios/
│           │           └── ds4droid/
│           │               ├── About.java
│           │               ├── Button.java
│           │               ├── ButtonLayoutEditor.java
│           │               ├── Cheats.java
│           │               ├── Controls.java
│           │               ├── DeSmuME.java
│           │               ├── EmulatorThread.java
│           │               ├── FileDialog.java
│           │               ├── KeyMapPreference.java
│           │               ├── KeyMapSettings.java
│           │               ├── MainActivity.java
│           │               ├── NDSScanner/
│           │               │   ├── CollectionActivity.java
│           │               │   ├── NdsRom.java
│           │               │   ├── RomCollection.java
│           │               │   └── RomDatabaseHelper.java
│           │               ├── Settings.java
│           │               ├── SliderPreference.java
│           │               ├── TransparencyPreference.java
│           │               └── ds4droidApplication.java
│           ├── jni/
│           │   ├── Android.mk
│           │   ├── Application.mk
│           │   ├── android-ndk-profiler/
│           │   │   ├── Android.mk
│           │   │   ├── armeabi/
│           │   │   │   └── libandroid-ndk-profiler.a
│           │   │   ├── armeabi-v7a/
│           │   │   │   └── libandroid-ndk-profiler.a
│           │   │   └── prof.h
│           │   ├── cpudetect/
│           │   │   ├── cpu.cpp
│           │   │   └── cpudetect.mk
│           │   ├── desmume/
│           │   │   ├── AUTHORS
│           │   │   ├── COPYING
│           │   │   ├── ChangeLog
│           │   │   ├── INSTALL
│           │   │   ├── Makefile.am
│           │   │   ├── Makefile.in
│           │   │   ├── NEWS
│           │   │   ├── README
│           │   │   ├── README.LIN
│           │   │   ├── README.MAC
│           │   │   ├── README.WIN
│           │   │   ├── aclocal.m4
│           │   │   ├── autogen.sh
│           │   │   ├── compile
│           │   │   ├── config.guess
│           │   │   ├── config.sub
│           │   │   ├── configure
│           │   │   ├── configure.ac
│           │   │   ├── depcomp
│           │   │   ├── dsm.txt
│           │   │   ├── dsv.txt
│           │   │   ├── install-sh
│           │   │   ├── missing
│           │   │   ├── src/
│           │   │   │   ├── ArmAnalyze.cpp
│           │   │   │   ├── ArmAnalyze.h
│           │   │   │   ├── ArmAnalyze_tabdef.inc
│           │   │   │   ├── ArmCJit.cpp
│           │   │   │   ├── ArmCJit.h
│           │   │   │   ├── ArmLJit.cpp
│           │   │   │   ├── ArmLJit.h
│           │   │   │   ├── ArmThreadedInterpreter.cpp
│           │   │   │   ├── ArmThreadedInterpreter.h
│           │   │   │   ├── CpuBase.cpp
│           │   │   │   ├── CpuBase.h
│           │   │   │   ├── Disassembler.cpp
│           │   │   │   ├── Disassembler.h
│           │   │   │   ├── FIFO.cpp
│           │   │   │   ├── FIFO.h
│           │   │   │   ├── GPU.cpp
│           │   │   │   ├── GPU.h
│           │   │   │   ├── GPU_osd.cpp
│           │   │   │   ├── GPU_osd.h
│           │   │   │   ├── GPU_osd_stub.cpp
│           │   │   │   ├── JitCommon.cpp
│           │   │   │   ├── JitCommon.h
│           │   │   │   ├── MMU.cpp
│           │   │   │   ├── MMU.h
│           │   │   │   ├── MMU_timing.h
│           │   │   │   ├── Makefile.am
│           │   │   │   ├── Makefile.in
│           │   │   │   ├── NDSSystem.cpp
│           │   │   │   ├── NDSSystem.h
│           │   │   │   ├── OGLES2Render.cpp
│           │   │   │   ├── OGLES2Render.h
│           │   │   │   ├── OGLRender.cpp
│           │   │   │   ├── OGLRender.h
│           │   │   │   ├── OGLRender_3_2.cpp
│           │   │   │   ├── OGLRender_3_2.h
│           │   │   │   ├── PACKED.h
│           │   │   │   ├── PACKED_END.h
│           │   │   │   ├── ROMReader.cpp
│           │   │   │   ├── ROMReader.h
│           │   │   │   ├── SPU.cpp
│           │   │   │   ├── SPU.h
│           │   │   │   ├── addons/
│           │   │   │   │   ├── slot1_none.cpp
│           │   │   │   │   ├── slot1_r4.cpp
│           │   │   │   │   ├── slot1_retail.cpp
│           │   │   │   │   ├── slot1_retail_nand.cpp
│           │   │   │   │   ├── slot2_expMemory.cpp
│           │   │   │   │   ├── slot2_gbagame.cpp
│           │   │   │   │   ├── slot2_guitarGrip.cpp
│           │   │   │   │   ├── slot2_mpcf.cpp
│           │   │   │   │   ├── slot2_none.cpp
│           │   │   │   │   ├── slot2_paddle.cpp
│           │   │   │   │   ├── slot2_piano.cpp
│           │   │   │   │   └── slot2_rumblepak.cpp
│           │   │   │   ├── addons.cpp
│           │   │   │   ├── addons.h
│           │   │   │   ├── agg2d.h
│           │   │   │   ├── agg2d.inl
│           │   │   │   ├── aggdraw.cpp
│           │   │   │   ├── aggdraw.h
│           │   │   │   ├── android/
│           │   │   │   │   ├── 7z/
│           │   │   │   │   │   ├── 7z.mk
│           │   │   │   │   │   ├── Asm/
│           │   │   │   │   │   │   ├── x64/
│           │   │   │   │   │   │   │   └── 7zCrcT8U.asm
│           │   │   │   │   │   │   └── x86/
│           │   │   │   │   │   │       └── 7zCrcT8U.asm
│           │   │   │   │   │   ├── C/
│           │   │   │   │   │   │   ├── 7zCrc.c
│           │   │   │   │   │   │   ├── 7zCrc.h
│           │   │   │   │   │   │   ├── 7zCrcT8.c
│           │   │   │   │   │   │   ├── 7zVersion.h
│           │   │   │   │   │   │   ├── Aes.c
│           │   │   │   │   │   │   ├── Aes.h
│           │   │   │   │   │   │   ├── Alloc.h
│           │   │   │   │   │   │   ├── Bra.c
│           │   │   │   │   │   │   ├── Bra.h
│           │   │   │   │   │   │   ├── Bra86.c
│           │   │   │   │   │   │   ├── BraIA64.c
│           │   │   │   │   │   │   ├── BwtSort.c
│           │   │   │   │   │   │   ├── BwtSort.h
│           │   │   │   │   │   │   ├── CpuArch.h
│           │   │   │   │   │   │   ├── HuffEnc.c
│           │   │   │   │   │   │   ├── HuffEnc.h
│           │   │   │   │   │   │   ├── LzFind.c
│           │   │   │   │   │   │   ├── LzFind.h
│           │   │   │   │   │   │   ├── LzFindMt.c
│           │   │   │   │   │   │   ├── LzFindMt.h
│           │   │   │   │   │   │   ├── LzHash.h
│           │   │   │   │   │   │   ├── LzmaDec.c
│           │   │   │   │   │   │   ├── LzmaDec.h
│           │   │   │   │   │   │   ├── LzmaEnc.c
│           │   │   │   │   │   │   ├── LzmaEnc.h
│           │   │   │   │   │   │   ├── LzmaUtil/
│           │   │   │   │   │   │   │   ├── Lzma86Dec.c
│           │   │   │   │   │   │   │   ├── Lzma86Dec.h
│           │   │   │   │   │   │   │   ├── Lzma86Enc.c
│           │   │   │   │   │   │   │   └── Lzma86Enc.h
│           │   │   │   │   │   │   ├── RotateDefs.h
│           │   │   │   │   │   │   ├── Sha256.c
│           │   │   │   │   │   │   ├── Sha256.h
│           │   │   │   │   │   │   ├── Sort.c
│           │   │   │   │   │   │   ├── Sort.h
│           │   │   │   │   │   │   ├── Threads.c
│           │   │   │   │   │   │   ├── Threads.h
│           │   │   │   │   │   │   └── Types.h
│           │   │   │   │   │   ├── CPP/
│           │   │   │   │   │   │   ├── 7zip/
│           │   │   │   │   │   │   │   ├── Archive/
│           │   │   │   │   │   │   │   │   ├── 7z/
│           │   │   │   │   │   │   │   │   │   ├── 7zCompressionMode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zCompressionMode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zDecode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zEncode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zEncode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zExtract.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderInStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderInStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderOutStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderOutStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHandler.h
│           │   │   │   │   │   │   │   │   │   ├── 7zHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHeader.h
│           │   │   │   │   │   │   │   │   │   ├── 7zIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zIn.h
│           │   │   │   │   │   │   │   │   │   ├── 7zItem.h
│           │   │   │   │   │   │   │   │   │   ├── 7zOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zOut.h
│           │   │   │   │   │   │   │   │   │   ├── 7zProperties.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zProperties.h
│           │   │   │   │   │   │   │   │   │   ├── 7zRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zSpecStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zSpecStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── 7zUpdate.h
│           │   │   │   │   │   │   │   │   ├── ArchiveExports.cpp
│           │   │   │   │   │   │   │   │   ├── ArjHandler.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2/
│           │   │   │   │   │   │   │   │   │   ├── BZip2Handler.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Handler.h
│           │   │   │   │   │   │   │   │   │   ├── BZip2HandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Item.h
│           │   │   │   │   │   │   │   │   │   ├── BZip2Update.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Update.h
│           │   │   │   │   │   │   │   │   │   └── bz2Register.cpp
│           │   │   │   │   │   │   │   │   ├── Cab/
│           │   │   │   │   │   │   │   │   │   ├── CabBlockInStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabBlockInStream.h
│           │   │   │   │   │   │   │   │   │   ├── CabHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabHandler.h
│           │   │   │   │   │   │   │   │   │   ├── CabHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabHeader.h
│           │   │   │   │   │   │   │   │   │   ├── CabIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabIn.h
│           │   │   │   │   │   │   │   │   │   ├── CabItem.h
│           │   │   │   │   │   │   │   │   │   └── CabRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Chm/
│           │   │   │   │   │   │   │   │   │   ├── ChmHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ChmHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmHeader.h
│           │   │   │   │   │   │   │   │   │   ├── ChmIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmIn.h
│           │   │   │   │   │   │   │   │   │   └── ChmRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Com/
│           │   │   │   │   │   │   │   │   │   ├── ComHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ComHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ComIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ComIn.h
│           │   │   │   │   │   │   │   │   │   └── ComRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2.h
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2MT.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2MT.h
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2ST.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2ST.h
│           │   │   │   │   │   │   │   │   │   ├── CrossThreadProgress.cpp
│           │   │   │   │   │   │   │   │   │   ├── CrossThreadProgress.h
│           │   │   │   │   │   │   │   │   │   ├── DummyOutStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── DummyOutStream.h
│           │   │   │   │   │   │   │   │   │   ├── FindSignature.cpp
│           │   │   │   │   │   │   │   │   │   ├── FindSignature.h
│           │   │   │   │   │   │   │   │   │   ├── HandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── HandlerOut.h
│           │   │   │   │   │   │   │   │   │   ├── InStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── InStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   ├── ItemNameUtils.cpp
│           │   │   │   │   │   │   │   │   │   ├── ItemNameUtils.h
│           │   │   │   │   │   │   │   │   │   ├── MultiStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── MultiStream.h
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithSha1.cpp
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithSha1.h
│           │   │   │   │   │   │   │   │   │   ├── ParseProperties.cpp
│           │   │   │   │   │   │   │   │   │   └── ParseProperties.h
│           │   │   │   │   │   │   │   │   ├── Cpio/
│           │   │   │   │   │   │   │   │   │   ├── CpioHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioHandler.h
│           │   │   │   │   │   │   │   │   │   ├── CpioHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioHeader.h
│           │   │   │   │   │   │   │   │   │   ├── CpioIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioIn.h
│           │   │   │   │   │   │   │   │   │   ├── CpioItem.h
│           │   │   │   │   │   │   │   │   │   └── CpioRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DebHandler.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports2.cpp
│           │   │   │   │   │   │   │   │   ├── DmgHandler.cpp
│           │   │   │   │   │   │   │   │   ├── ElfHandler.cpp
│           │   │   │   │   │   │   │   │   ├── GZip/
│           │   │   │   │   │   │   │   │   │   ├── GZipHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHandler.h
│           │   │   │   │   │   │   │   │   │   ├── GZipHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHeader.h
│           │   │   │   │   │   │   │   │   │   ├── GZipIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipIn.h
│           │   │   │   │   │   │   │   │   │   ├── GZipItem.h
│           │   │   │   │   │   │   │   │   │   ├── GZipOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipOut.h
│           │   │   │   │   │   │   │   │   │   ├── GZipRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── GZipUpdate.h
│           │   │   │   │   │   │   │   │   ├── Hfs/
│           │   │   │   │   │   │   │   │   │   ├── HfsHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── HfsHandler.h
│           │   │   │   │   │   │   │   │   │   ├── HfsIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── HfsIn.h
│           │   │   │   │   │   │   │   │   │   └── HfsRegister.cpp
│           │   │   │   │   │   │   │   │   ├── IArchive.h
│           │   │   │   │   │   │   │   │   ├── Iso/
│           │   │   │   │   │   │   │   │   │   ├── IsoHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoHandler.h
│           │   │   │   │   │   │   │   │   │   ├── IsoHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoHeader.h
│           │   │   │   │   │   │   │   │   │   ├── IsoIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoIn.h
│           │   │   │   │   │   │   │   │   │   ├── IsoItem.h
│           │   │   │   │   │   │   │   │   │   └── IsoRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzh/
│           │   │   │   │   │   │   │   │   │   ├── LzhCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhCRC.h
│           │   │   │   │   │   │   │   │   │   ├── LzhHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhHandler.h
│           │   │   │   │   │   │   │   │   │   ├── LzhHeader.h
│           │   │   │   │   │   │   │   │   │   ├── LzhIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhIn.h
│           │   │   │   │   │   │   │   │   │   ├── LzhItem.h
│           │   │   │   │   │   │   │   │   │   ├── LzhOutStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhOutStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   └── LzhRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzma/
│           │   │   │   │   │   │   │   │   │   ├── LzmaArcRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaFiltersDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaFiltersDecode.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaHandler.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaIn.h
│           │   │   │   │   │   │   │   │   │   └── LzmaItem.h
│           │   │   │   │   │   │   │   │   ├── MachoHandler.cpp
│           │   │   │   │   │   │   │   │   ├── MubHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Nsis/
│           │   │   │   │   │   │   │   │   │   ├── NsisDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisDecode.h
│           │   │   │   │   │   │   │   │   │   ├── NsisHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisHandler.h
│           │   │   │   │   │   │   │   │   │   ├── NsisIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisIn.h
│           │   │   │   │   │   │   │   │   │   └── NsisRegister.cpp
│           │   │   │   │   │   │   │   │   ├── PeHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Rar/
│           │   │   │   │   │   │   │   │   │   ├── RarHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarHandler.h
│           │   │   │   │   │   │   │   │   │   ├── RarHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarHeader.h
│           │   │   │   │   │   │   │   │   │   ├── RarIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarIn.h
│           │   │   │   │   │   │   │   │   │   ├── RarItem.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarItem.h
│           │   │   │   │   │   │   │   │   │   ├── RarRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarVolumeInStream.cpp
│           │   │   │   │   │   │   │   │   │   └── RarVolumeInStream.h
│           │   │   │   │   │   │   │   │   ├── RpmHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Split/
│           │   │   │   │   │   │   │   │   │   ├── SplitHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── SplitHandler.h
│           │   │   │   │   │   │   │   │   │   ├── SplitHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   └── SplitRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Tar/
│           │   │   │   │   │   │   │   │   │   ├── TarHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHandler.h
│           │   │   │   │   │   │   │   │   │   ├── TarHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHeader.h
│           │   │   │   │   │   │   │   │   │   ├── TarIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarIn.h
│           │   │   │   │   │   │   │   │   │   ├── TarItem.h
│           │   │   │   │   │   │   │   │   │   ├── TarOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarOut.h
│           │   │   │   │   │   │   │   │   │   ├── TarRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── TarUpdate.h
│           │   │   │   │   │   │   │   │   ├── Udf/
│           │   │   │   │   │   │   │   │   │   ├── UdfHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── UdfHandler.h
│           │   │   │   │   │   │   │   │   │   ├── UdfIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── UdfIn.h
│           │   │   │   │   │   │   │   │   │   └── UdfRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Wim/
│           │   │   │   │   │   │   │   │   │   ├── WimHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── WimHandler.h
│           │   │   │   │   │   │   │   │   │   ├── WimIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── WimIn.h
│           │   │   │   │   │   │   │   │   │   └── WimRegister.cpp
│           │   │   │   │   │   │   │   │   ├── XarHandler.cpp
│           │   │   │   │   │   │   │   │   ├── ZHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Zip/
│           │   │   │   │   │   │   │   │   │   ├── ZipAddCommon.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipAddCommon.h
│           │   │   │   │   │   │   │   │   │   ├── ZipCompressionMode.h
│           │   │   │   │   │   │   │   │   │   ├── ZipHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ZipHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHeader.h
│           │   │   │   │   │   │   │   │   │   ├── ZipIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipIn.h
│           │   │   │   │   │   │   │   │   │   ├── ZipItem.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipItem.h
│           │   │   │   │   │   │   │   │   │   ├── ZipItemEx.h
│           │   │   │   │   │   │   │   │   │   ├── ZipOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipOut.h
│           │   │   │   │   │   │   │   │   │   ├── ZipRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── ZipUpdate.h
│           │   │   │   │   │   │   │   │   └── obj/
│           │   │   │   │   │   │   │   │       └── local/
│           │   │   │   │   │   │   │   │           └── armeabi-v7a/
│           │   │   │   │   │   │   │   │               ├── app_process
│           │   │   │   │   │   │   │   │               ├── gdb.setup
│           │   │   │   │   │   │   │   │               └── linker
│           │   │   │   │   │   │   │   ├── Bundles/
│           │   │   │   │   │   │   │   │   ├── Alone/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── Alone7z/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── AloneGCOV/
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── Format7zFree/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   └── SFXCon/
│           │   │   │   │   │   │   │   │       ├── Main.cpp
│           │   │   │   │   │   │   │   │       ├── makefile
│           │   │   │   │   │   │   │   │       ├── makefile.depend
│           │   │   │   │   │   │   │   │       └── makefile.list
│           │   │   │   │   │   │   │   ├── CMAKE/
│           │   │   │   │   │   │   │   │   ├── CMakeLists_Alone.txt
│           │   │   │   │   │   │   │   │   └── generate.sh
│           │   │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   │   ├── CreateCoder.cpp
│           │   │   │   │   │   │   │   │   ├── CreateCoder.h
│           │   │   │   │   │   │   │   │   ├── FilePathAutoRename.cpp
│           │   │   │   │   │   │   │   │   ├── FilePathAutoRename.h
│           │   │   │   │   │   │   │   │   ├── FileStreams.cpp
│           │   │   │   │   │   │   │   │   ├── FileStreams.h
│           │   │   │   │   │   │   │   │   ├── FilterCoder.cpp
│           │   │   │   │   │   │   │   │   ├── FilterCoder.h
│           │   │   │   │   │   │   │   │   ├── InBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── InBuffer.h
│           │   │   │   │   │   │   │   │   ├── InOutTempBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── InOutTempBuffer.h
│           │   │   │   │   │   │   │   │   ├── LimitedStreams.cpp
│           │   │   │   │   │   │   │   │   ├── LimitedStreams.h
│           │   │   │   │   │   │   │   │   ├── LockedStream.cpp
│           │   │   │   │   │   │   │   │   ├── LockedStream.h
│           │   │   │   │   │   │   │   │   ├── MSBFDecoder.h
│           │   │   │   │   │   │   │   │   ├── MSBFEncoder.h
│           │   │   │   │   │   │   │   │   ├── MemBlocks.cpp
│           │   │   │   │   │   │   │   │   ├── MemBlocks.h
│           │   │   │   │   │   │   │   │   ├── MethodId.cpp
│           │   │   │   │   │   │   │   │   ├── MethodId.h
│           │   │   │   │   │   │   │   │   ├── MethodProps.cpp
│           │   │   │   │   │   │   │   │   ├── MethodProps.h
│           │   │   │   │   │   │   │   │   ├── OffsetStream.cpp
│           │   │   │   │   │   │   │   │   ├── OffsetStream.h
│           │   │   │   │   │   │   │   │   ├── OutBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── OutBuffer.h
│           │   │   │   │   │   │   │   │   ├── OutMemStream.cpp
│           │   │   │   │   │   │   │   │   ├── OutMemStream.h
│           │   │   │   │   │   │   │   │   ├── ProgressMt.cpp
│           │   │   │   │   │   │   │   │   ├── ProgressMt.h
│           │   │   │   │   │   │   │   │   ├── ProgressUtils.cpp
│           │   │   │   │   │   │   │   │   ├── ProgressUtils.h
│           │   │   │   │   │   │   │   │   ├── RegisterArc.h
│           │   │   │   │   │   │   │   │   ├── RegisterCodec.h
│           │   │   │   │   │   │   │   │   ├── StreamBinder.cpp
│           │   │   │   │   │   │   │   │   ├── StreamBinder.h
│           │   │   │   │   │   │   │   │   ├── StreamObjects.cpp
│           │   │   │   │   │   │   │   │   ├── StreamObjects.h
│           │   │   │   │   │   │   │   │   ├── StreamUtils.cpp
│           │   │   │   │   │   │   │   │   ├── StreamUtils.h
│           │   │   │   │   │   │   │   │   ├── VirtThread.cpp
│           │   │   │   │   │   │   │   │   └── VirtThread.h
│           │   │   │   │   │   │   │   ├── Compress/
│           │   │   │   │   │   │   │   │   ├── ArjDecoder1.cpp
│           │   │   │   │   │   │   │   │   ├── ArjDecoder1.h
│           │   │   │   │   │   │   │   │   ├── ArjDecoder2.cpp
│           │   │   │   │   │   │   │   │   ├── ArjDecoder2.h
│           │   │   │   │   │   │   │   │   ├── BZip2Const.h
│           │   │   │   │   │   │   │   │   ├── BZip2Crc.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Crc.h
│           │   │   │   │   │   │   │   │   ├── BZip2Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Decoder.h
│           │   │   │   │   │   │   │   │   ├── BZip2Encoder.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Encoder.h
│           │   │   │   │   │   │   │   │   ├── BZip2Register.cpp
│           │   │   │   │   │   │   │   │   ├── Bcj2Coder.cpp
│           │   │   │   │   │   │   │   │   ├── Bcj2Coder.h
│           │   │   │   │   │   │   │   │   ├── Bcj2Register.cpp
│           │   │   │   │   │   │   │   │   ├── BcjCoder.cpp
│           │   │   │   │   │   │   │   │   ├── BcjCoder.h
│           │   │   │   │   │   │   │   │   ├── BcjRegister.cpp
│           │   │   │   │   │   │   │   │   ├── BitlDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── BitlDecoder.h
│           │   │   │   │   │   │   │   │   ├── BitlEncoder.h
│           │   │   │   │   │   │   │   │   ├── BitmDecoder.h
│           │   │   │   │   │   │   │   │   ├── BitmEncoder.h
│           │   │   │   │   │   │   │   │   ├── BranchCoder.cpp
│           │   │   │   │   │   │   │   │   ├── BranchCoder.h
│           │   │   │   │   │   │   │   │   ├── BranchMisc.cpp
│           │   │   │   │   │   │   │   │   ├── BranchMisc.h
│           │   │   │   │   │   │   │   │   ├── BranchRegister.cpp
│           │   │   │   │   │   │   │   │   ├── ByteSwap.cpp
│           │   │   │   │   │   │   │   │   ├── ByteSwap.h
│           │   │   │   │   │   │   │   │   ├── ByteSwapRegister.cpp
│           │   │   │   │   │   │   │   │   ├── CodecExports.cpp
│           │   │   │   │   │   │   │   │   ├── CopyCoder.cpp
│           │   │   │   │   │   │   │   │   ├── CopyCoder.h
│           │   │   │   │   │   │   │   │   ├── CopyRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Deflate64Register.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateConst.h
│           │   │   │   │   │   │   │   │   ├── DeflateDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateDecoder.h
│           │   │   │   │   │   │   │   │   ├── DeflateEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateEncoder.h
│           │   │   │   │   │   │   │   │   ├── DeflateNsisRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports2.cpp
│           │   │   │   │   │   │   │   │   ├── HuffmanDecoder.h
│           │   │   │   │   │   │   │   │   ├── ImplodeDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ImplodeDecoder.h
│           │   │   │   │   │   │   │   │   ├── ImplodeHuffmanDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ImplodeHuffmanDecoder.h
│           │   │   │   │   │   │   │   │   ├── LZMA_Alone/
│           │   │   │   │   │   │   │   │   │   ├── LzmaAlone.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBench.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBench.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaBenchCon.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBenchCon.h
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── LzOutWindow.cpp
│           │   │   │   │   │   │   │   │   ├── LzOutWindow.h
│           │   │   │   │   │   │   │   │   ├── LzhDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzhDecoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzmaDecoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzmaEncoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzx.h
│           │   │   │   │   │   │   │   │   ├── Lzx86Converter.cpp
│           │   │   │   │   │   │   │   │   ├── Lzx86Converter.h
│           │   │   │   │   │   │   │   │   ├── LzxDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzxDecoder.h
│           │   │   │   │   │   │   │   │   ├── Mtf8.h
│           │   │   │   │   │   │   │   │   ├── PPMD_Alone/
│           │   │   │   │   │   │   │   │   │   ├── PpmdAlone.cpp
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── PpmdContext.h
│           │   │   │   │   │   │   │   │   ├── PpmdDecode.h
│           │   │   │   │   │   │   │   │   ├── PpmdDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdDecoder.h
│           │   │   │   │   │   │   │   │   ├── PpmdEncode.h
│           │   │   │   │   │   │   │   │   ├── PpmdEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdEncoder.h
│           │   │   │   │   │   │   │   │   ├── PpmdRegister.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdSubAlloc.h
│           │   │   │   │   │   │   │   │   ├── PpmdType.h
│           │   │   │   │   │   │   │   │   ├── QuantumDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── QuantumDecoder.h
│           │   │   │   │   │   │   │   │   ├── RangeCoder.h
│           │   │   │   │   │   │   │   │   ├── RangeCoderBit.h
│           │   │   │   │   │   │   │   │   ├── Rar/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── Rar1Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar1Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar2Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar2Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar3Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar3Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar3Vm.cpp
│           │   │   │   │   │   │   │   │   ├── Rar3Vm.h
│           │   │   │   │   │   │   │   │   ├── RarCodecsRegister.cpp
│           │   │   │   │   │   │   │   │   ├── ShrinkDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ShrinkDecoder.h
│           │   │   │   │   │   │   │   │   ├── ZDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ZDecoder.h
│           │   │   │   │   │   │   │   │   ├── ZlibDecoder.cpp
│           │   │   │   │   │   │   │   │   └── ZlibDecoder.h
│           │   │   │   │   │   │   │   ├── Crypto/
│           │   │   │   │   │   │   │   │   ├── 7zAes.cpp
│           │   │   │   │   │   │   │   │   ├── 7zAes.h
│           │   │   │   │   │   │   │   │   ├── 7zAesRegister.cpp
│           │   │   │   │   │   │   │   │   ├── HmacSha1.cpp
│           │   │   │   │   │   │   │   │   ├── HmacSha1.h
│           │   │   │   │   │   │   │   │   ├── MyAes.cpp
│           │   │   │   │   │   │   │   │   ├── MyAes.h
│           │   │   │   │   │   │   │   │   ├── Pbkdf2HmacSha1.cpp
│           │   │   │   │   │   │   │   │   ├── Pbkdf2HmacSha1.h
│           │   │   │   │   │   │   │   │   ├── RandGen.cpp
│           │   │   │   │   │   │   │   │   ├── RandGen.h
│           │   │   │   │   │   │   │   │   ├── Rar20Crypto.cpp
│           │   │   │   │   │   │   │   │   ├── Rar20Crypto.h
│           │   │   │   │   │   │   │   │   ├── RarAes.cpp
│           │   │   │   │   │   │   │   │   ├── RarAes.h
│           │   │   │   │   │   │   │   │   ├── Sha1.cpp
│           │   │   │   │   │   │   │   │   ├── Sha1.h
│           │   │   │   │   │   │   │   │   ├── WzAes.cpp
│           │   │   │   │   │   │   │   │   ├── WzAes.h
│           │   │   │   │   │   │   │   │   ├── ZipCrypto.cpp
│           │   │   │   │   │   │   │   │   ├── ZipCrypto.h
│           │   │   │   │   │   │   │   │   ├── ZipStrong.cpp
│           │   │   │   │   │   │   │   │   └── ZipStrong.h
│           │   │   │   │   │   │   │   ├── ICoder.h
│           │   │   │   │   │   │   │   ├── IDecl.h
│           │   │   │   │   │   │   │   ├── IPassword.h
│           │   │   │   │   │   │   │   ├── IProgress.h
│           │   │   │   │   │   │   │   ├── IStream.h
│           │   │   │   │   │   │   │   ├── MyVersion.h
│           │   │   │   │   │   │   │   ├── PropID.h
│           │   │   │   │   │   │   │   └── UI/
│           │   │   │   │   │   │   │       ├── Agent/
│           │   │   │   │   │   │   │       │   ├── Agent.cpp
│           │   │   │   │   │   │   │       │   ├── Agent.h
│           │   │   │   │   │   │   │       │   ├── AgentOut.cpp
│           │   │   │   │   │   │   │       │   ├── AgentProxy.cpp
│           │   │   │   │   │   │   │       │   ├── AgentProxy.h
│           │   │   │   │   │   │   │       │   ├── ArchiveFolder.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveFolderOpen.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveFolderOut.cpp
│           │   │   │   │   │   │   │       │   ├── IFolderArchive.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackAgent.cpp
│           │   │   │   │   │   │   │       │   └── UpdateCallbackAgent.h
│           │   │   │   │   │   │   │       ├── Client7z/
│           │   │   │   │   │   │   │       │   ├── Client7z.cpp
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── ClientCodec/
│           │   │   │   │   │   │   │       │   ├── ClientCodec.cpp
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── Common/
│           │   │   │   │   │   │   │       │   ├── ArchiveCommandLine.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveCommandLine.h
│           │   │   │   │   │   │   │       │   ├── ArchiveExtractCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── ArchiveName.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveName.h
│           │   │   │   │   │   │   │       │   ├── ArchiveOpenCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveOpenCallback.h
│           │   │   │   │   │   │   │       │   ├── CompressCall.cpp
│           │   │   │   │   │   │   │       │   ├── CompressCall.h
│           │   │   │   │   │   │   │       │   ├── DefaultName.cpp
│           │   │   │   │   │   │   │       │   ├── DefaultName.h
│           │   │   │   │   │   │   │       │   ├── DirItem.h
│           │   │   │   │   │   │   │       │   ├── EnumDirItems.cpp
│           │   │   │   │   │   │   │       │   ├── EnumDirItems.h
│           │   │   │   │   │   │   │       │   ├── ExitCode.h
│           │   │   │   │   │   │   │       │   ├── Extract.cpp
│           │   │   │   │   │   │   │       │   ├── Extract.h
│           │   │   │   │   │   │   │       │   ├── ExtractMode.h
│           │   │   │   │   │   │   │       │   ├── ExtractingFilePath.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractingFilePath.h
│           │   │   │   │   │   │   │       │   ├── HandlerLoader.h
│           │   │   │   │   │   │   │       │   ├── IFileExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── LoadCodecs.cpp
│           │   │   │   │   │   │   │       │   ├── LoadCodecs.h
│           │   │   │   │   │   │   │       │   ├── OpenArchive.cpp
│           │   │   │   │   │   │   │       │   ├── OpenArchive.h
│           │   │   │   │   │   │   │       │   ├── PropIDUtils.cpp
│           │   │   │   │   │   │   │       │   ├── PropIDUtils.h
│           │   │   │   │   │   │   │       │   ├── Property.h
│           │   │   │   │   │   │   │       │   ├── SetProperties.cpp
│           │   │   │   │   │   │   │       │   ├── SetProperties.h
│           │   │   │   │   │   │   │       │   ├── SortUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SortUtils.h
│           │   │   │   │   │   │   │       │   ├── TempFiles.cpp
│           │   │   │   │   │   │   │       │   ├── TempFiles.h
│           │   │   │   │   │   │   │       │   ├── Update.cpp
│           │   │   │   │   │   │   │       │   ├── Update.h
│           │   │   │   │   │   │   │       │   ├── UpdateAction.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateAction.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallback.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallback.h
│           │   │   │   │   │   │   │       │   ├── UpdatePair.cpp
│           │   │   │   │   │   │   │       │   ├── UpdatePair.h
│           │   │   │   │   │   │   │       │   ├── UpdateProduce.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateProduce.h
│           │   │   │   │   │   │   │       │   ├── WorkDir.cpp
│           │   │   │   │   │   │   │       │   ├── WorkDir.h
│           │   │   │   │   │   │   │       │   ├── ZipRegistry.cpp
│           │   │   │   │   │   │   │       │   └── ZipRegistry.h
│           │   │   │   │   │   │   │       ├── Console/
│           │   │   │   │   │   │   │       │   ├── ConsoleClose.cpp
│           │   │   │   │   │   │   │       │   ├── ConsoleClose.h
│           │   │   │   │   │   │   │       │   ├── ExtractCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── List.cpp
│           │   │   │   │   │   │   │       │   ├── List.h
│           │   │   │   │   │   │   │       │   ├── Main.cpp
│           │   │   │   │   │   │   │       │   ├── MainAr.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── PercentPrinter.cpp
│           │   │   │   │   │   │   │       │   ├── PercentPrinter.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── UserInputUtils.cpp
│           │   │   │   │   │   │   │       │   ├── UserInputUtils.h
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── Explorer/
│           │   │   │   │   │   │   │       │   ├── MyMessages.cpp
│           │   │   │   │   │   │   │       │   └── MyMessages.h
│           │   │   │   │   │   │   │       ├── FileManager/
│           │   │   │   │   │   │   │       │   ├── App.cpp
│           │   │   │   │   │   │   │       │   ├── App.h
│           │   │   │   │   │   │   │       │   ├── AppState.h
│           │   │   │   │   │   │   │       │   ├── ClassDefs.cpp
│           │   │   │   │   │   │   │       │   ├── ComboDialog.cpp
│           │   │   │   │   │   │   │       │   ├── ComboDialog.h
│           │   │   │   │   │   │   │       │   ├── ComboDialogRes.h
│           │   │   │   │   │   │   │       │   ├── ComboDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── CopyDialog.cpp
│           │   │   │   │   │   │   │       │   ├── CopyDialog.h
│           │   │   │   │   │   │   │       │   ├── CopyDialogRes.h
│           │   │   │   │   │   │   │       │   ├── CopyDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── FM.cpp
│           │   │   │   │   │   │   │       │   ├── FM_rc.cpp
│           │   │   │   │   │   │   │       │   ├── FSDrives.h.out
│           │   │   │   │   │   │   │       │   ├── FSFolder.cpp
│           │   │   │   │   │   │   │       │   ├── FSFolder.h
│           │   │   │   │   │   │   │       │   ├── FSFolderCopy.cpp
│           │   │   │   │   │   │   │       │   ├── FileFolderPluginOpen.cpp
│           │   │   │   │   │   │   │       │   ├── FileFolderPluginOpen.h
│           │   │   │   │   │   │   │       │   ├── FormatUtils.cpp
│           │   │   │   │   │   │   │       │   ├── FormatUtils.h
│           │   │   │   │   │   │   │       │   ├── HelpUtils.h
│           │   │   │   │   │   │   │       │   ├── IFolder.h
│           │   │   │   │   │   │   │       │   ├── LangUtils.cpp
│           │   │   │   │   │   │   │       │   ├── LangUtils.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialog.cpp
│           │   │   │   │   │   │   │       │   ├── ListViewDialog.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialogRes.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── MessagesDialog.cpp
│           │   │   │   │   │   │   │       │   ├── MessagesDialog.h
│           │   │   │   │   │   │   │       │   ├── MessagesDialogRes.h
│           │   │   │   │   │   │   │       │   ├── MessagesDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── MyLoadMenu.cpp
│           │   │   │   │   │   │   │       │   ├── MyLoadMenu.h
│           │   │   │   │   │   │   │       │   ├── NetFolder.h.OUT
│           │   │   │   │   │   │   │       │   ├── OpenCallback.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallback.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog.cpp
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialogRes.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── Panel.cpp
│           │   │   │   │   │   │   │       │   ├── Panel.h
│           │   │   │   │   │   │   │       │   ├── PanelCopy.cpp
│           │   │   │   │   │   │   │       │   ├── PanelCrc.cpp
│           │   │   │   │   │   │   │       │   ├── PanelFolderChange.cpp
│           │   │   │   │   │   │   │       │   ├── PanelItemOpen.cpp
│           │   │   │   │   │   │   │       │   ├── PanelItems.cpp
│           │   │   │   │   │   │   │       │   ├── PanelListNotify.cpp
│           │   │   │   │   │   │   │       │   ├── PanelMenu.cpp
│           │   │   │   │   │   │   │       │   ├── PanelOperations.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSelect.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSort.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSplitFile.cpp
│           │   │   │   │   │   │   │       │   ├── PasswordDialog.cpp
│           │   │   │   │   │   │   │       │   ├── PasswordDialog.h
│           │   │   │   │   │   │   │       │   ├── PasswordDialogRes.h
│           │   │   │   │   │   │   │       │   ├── PasswordDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── PhysDriveFolder.h.out
│           │   │   │   │   │   │   │       │   ├── PluginInterface.h
│           │   │   │   │   │   │   │       │   ├── PluginLoader.h
│           │   │   │   │   │   │   │       │   ├── ProgramLocation.cpp
│           │   │   │   │   │   │   │       │   ├── ProgramLocation.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2.cpp
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2Res.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2_rc.cpp
│           │   │   │   │   │   │   │       │   ├── ProgressDialogRes.h
│           │   │   │   │   │   │   │       │   ├── PropertyName.cpp
│           │   │   │   │   │   │   │       │   ├── PropertyName.h
│           │   │   │   │   │   │   │       │   ├── PropertyNameRes.h
│           │   │   │   │   │   │   │       │   ├── RegistryAssociations.cpp
│           │   │   │   │   │   │   │       │   ├── RegistryAssociations.h
│           │   │   │   │   │   │   │       │   ├── RegistryPlugins.h
│           │   │   │   │   │   │   │       │   ├── RegistryUtils.cpp
│           │   │   │   │   │   │   │       │   ├── RegistryUtils.h
│           │   │   │   │   │   │   │       │   ├── RootFolder.cpp
│           │   │   │   │   │   │   │       │   ├── RootFolder.h
│           │   │   │   │   │   │   │       │   ├── SplitDialog.cpp
│           │   │   │   │   │   │   │       │   ├── SplitDialog.h
│           │   │   │   │   │   │   │       │   ├── SplitDialogRes.h
│           │   │   │   │   │   │   │       │   ├── SplitDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── SplitUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SplitUtils.h
│           │   │   │   │   │   │   │       │   ├── StringUtils.cpp
│           │   │   │   │   │   │   │       │   ├── StringUtils.h
│           │   │   │   │   │   │   │       │   ├── SysIconUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SysIconUtils.h
│           │   │   │   │   │   │   │       │   ├── TextPairs.cpp
│           │   │   │   │   │   │   │       │   ├── TextPairs.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallback100.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallback100.h
│           │   │   │   │   │   │   │       │   ├── ViewSettings.cpp
│           │   │   │   │   │   │   │       │   ├── ViewSettings.h
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   ├── makefile.list
│           │   │   │   │   │   │   │       │   ├── res/
│           │   │   │   │   │   │   │       │   │   ├── Add2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── AddPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Copy2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── CopyPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Delete2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── DeletePNG.h
│           │   │   │   │   │   │   │       │   │   ├── Extract2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── ExtractPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Info2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── InfoPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Move2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── MovePNG.h
│           │   │   │   │   │   │   │       │   │   ├── ParentFolder.h
│           │   │   │   │   │   │   │       │   │   ├── Test2PNG.h
│           │   │   │   │   │   │   │       │   │   └── TestPNG.h
│           │   │   │   │   │   │   │       │   ├── resource.h
│           │   │   │   │   │   │   │       │   └── wxFM.cpp
│           │   │   │   │   │   │   │       └── GUI/
│           │   │   │   │   │   │   │           ├── BenchmarkDialog.cpp
│           │   │   │   │   │   │   │           ├── BenchmarkDialog.h
│           │   │   │   │   │   │   │           ├── BenchmarkDialogRes.h
│           │   │   │   │   │   │   │           ├── BenchmarkDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── CompressDialog.cpp
│           │   │   │   │   │   │   │           ├── CompressDialog.h
│           │   │   │   │   │   │   │           ├── CompressDialogRes.h
│           │   │   │   │   │   │   │           ├── CompressDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── ExtractDialog.cpp
│           │   │   │   │   │   │   │           ├── ExtractDialog.h
│           │   │   │   │   │   │   │           ├── ExtractDialogRes.h
│           │   │   │   │   │   │   │           ├── ExtractDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── ExtractGUI.cpp
│           │   │   │   │   │   │   │           ├── ExtractGUI.h
│           │   │   │   │   │   │   │           ├── ExtractRes.h
│           │   │   │   │   │   │   │           ├── GUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateCallbackGUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateCallbackGUI.h
│           │   │   │   │   │   │   │           ├── UpdateGUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateGUI.h
│           │   │   │   │   │   │   │           ├── makefile
│           │   │   │   │   │   │   │           ├── makefile.depend
│           │   │   │   │   │   │   │           ├── makefile.list
│           │   │   │   │   │   │   │           ├── resource.h
│           │   │   │   │   │   │   │           └── wxGUI.cpp
│           │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   ├── AutoPtr.h
│           │   │   │   │   │   │   │   ├── Buffer.h
│           │   │   │   │   │   │   │   ├── CRC.cpp
│           │   │   │   │   │   │   │   ├── C_FileIO.cpp
│           │   │   │   │   │   │   │   ├── C_FileIO.h
│           │   │   │   │   │   │   │   ├── ComTry.h
│           │   │   │   │   │   │   │   ├── CommandLineParser.cpp
│           │   │   │   │   │   │   │   ├── CommandLineParser.h
│           │   │   │   │   │   │   │   ├── Defs.h
│           │   │   │   │   │   │   │   ├── DynamicBuffer.h
│           │   │   │   │   │   │   │   ├── IntToString.cpp
│           │   │   │   │   │   │   │   ├── IntToString.h
│           │   │   │   │   │   │   │   ├── Lang.cpp
│           │   │   │   │   │   │   │   ├── Lang.h
│           │   │   │   │   │   │   │   ├── ListFileUtils.cpp
│           │   │   │   │   │   │   │   ├── ListFileUtils.h
│           │   │   │   │   │   │   │   ├── MyCom.h
│           │   │   │   │   │   │   │   ├── MyException.h
│           │   │   │   │   │   │   │   ├── MyGuidDef.h
│           │   │   │   │   │   │   │   ├── MyInitGuid.h
│           │   │   │   │   │   │   │   ├── MyMap.cpp
│           │   │   │   │   │   │   │   ├── MyMap.h
│           │   │   │   │   │   │   │   ├── MyString.cpp
│           │   │   │   │   │   │   │   ├── MyString.h
│           │   │   │   │   │   │   │   ├── MyUnknown.h
│           │   │   │   │   │   │   │   ├── MyVector.cpp
│           │   │   │   │   │   │   │   ├── MyVector.h
│           │   │   │   │   │   │   │   ├── MyWindows.cpp
│           │   │   │   │   │   │   │   ├── MyWindows.h
│           │   │   │   │   │   │   │   ├── MyXml.cpp
│           │   │   │   │   │   │   │   ├── MyXml.h
│           │   │   │   │   │   │   │   ├── NewHandler.h
│           │   │   │   │   │   │   │   ├── StdInStream.cpp
│           │   │   │   │   │   │   │   ├── StdInStream.h
│           │   │   │   │   │   │   │   ├── StdOutStream.cpp
│           │   │   │   │   │   │   │   ├── StdOutStream.h
│           │   │   │   │   │   │   │   ├── StringConvert.cpp
│           │   │   │   │   │   │   │   ├── StringConvert.h
│           │   │   │   │   │   │   │   ├── StringToInt.cpp
│           │   │   │   │   │   │   │   ├── StringToInt.h
│           │   │   │   │   │   │   │   ├── TextConfig.cpp
│           │   │   │   │   │   │   │   ├── TextConfig.h
│           │   │   │   │   │   │   │   ├── Types.h
│           │   │   │   │   │   │   │   ├── UTFConvert.cpp
│           │   │   │   │   │   │   │   ├── UTFConvert.h
│           │   │   │   │   │   │   │   ├── Wildcard.cpp
│           │   │   │   │   │   │   │   └── Wildcard.h
│           │   │   │   │   │   │   ├── Windows/
│           │   │   │   │   │   │   │   ├── COM.cpp
│           │   │   │   │   │   │   │   ├── COM.h
│           │   │   │   │   │   │   │   ├── Clipboard.cpp
│           │   │   │   │   │   │   │   ├── Clipboard.h
│           │   │   │   │   │   │   │   ├── CommonDialog.h
│           │   │   │   │   │   │   │   ├── Control/
│           │   │   │   │   │   │   │   │   ├── ComboBox.h
│           │   │   │   │   │   │   │   │   ├── Controls.cpp
│           │   │   │   │   │   │   │   │   ├── Dialog.cpp
│           │   │   │   │   │   │   │   │   ├── Dialog.h
│           │   │   │   │   │   │   │   │   ├── DialogImpl.h
│           │   │   │   │   │   │   │   │   ├── Edit.h
│           │   │   │   │   │   │   │   │   ├── ListView.h
│           │   │   │   │   │   │   │   │   ├── ProgressBar.h
│           │   │   │   │   │   │   │   │   ├── Static.h
│           │   │   │   │   │   │   │   │   ├── StatusBar.h
│           │   │   │   │   │   │   │   │   ├── Window2.cpp
│           │   │   │   │   │   │   │   │   └── Window2.h
│           │   │   │   │   │   │   │   ├── DLL.cpp
│           │   │   │   │   │   │   │   ├── DLL.h
│           │   │   │   │   │   │   │   ├── Defs.h
│           │   │   │   │   │   │   │   ├── Error.cpp
│           │   │   │   │   │   │   │   ├── Error.h
│           │   │   │   │   │   │   │   ├── FileDir.cpp
│           │   │   │   │   │   │   │   ├── FileDir.h
│           │   │   │   │   │   │   │   ├── FileFind.cpp
│           │   │   │   │   │   │   │   ├── FileFind.h
│           │   │   │   │   │   │   │   ├── FileIO.cpp
│           │   │   │   │   │   │   │   ├── FileIO.h
│           │   │   │   │   │   │   │   ├── FileName.cpp
│           │   │   │   │   │   │   │   ├── FileName.h
│           │   │   │   │   │   │   │   ├── PropVariant.cpp
│           │   │   │   │   │   │   │   ├── PropVariant.h
│           │   │   │   │   │   │   │   ├── PropVariantConversions.cpp
│           │   │   │   │   │   │   │   ├── PropVariantConversions.h
│           │   │   │   │   │   │   │   ├── PropVariantUtils.cpp
│           │   │   │   │   │   │   │   ├── PropVariantUtils.h
│           │   │   │   │   │   │   │   ├── Registry.cpp
│           │   │   │   │   │   │   │   ├── Registry.h
│           │   │   │   │   │   │   │   ├── ResourceString.h
│           │   │   │   │   │   │   │   ├── Shell.h
│           │   │   │   │   │   │   │   ├── Synchronization.cpp
│           │   │   │   │   │   │   │   ├── Synchronization.h
│           │   │   │   │   │   │   │   ├── Synchronization2.h
│           │   │   │   │   │   │   │   ├── System.cpp
│           │   │   │   │   │   │   │   ├── System.h
│           │   │   │   │   │   │   │   ├── Thread.h
│           │   │   │   │   │   │   │   ├── Time.cpp
│           │   │   │   │   │   │   │   ├── Time.h
│           │   │   │   │   │   │   │   ├── Window.cpp
│           │   │   │   │   │   │   │   └── Window.h
│           │   │   │   │   │   │   ├── include_windows/
│           │   │   │   │   │   │   │   ├── basetyps.h
│           │   │   │   │   │   │   │   ├── tchar.h
│           │   │   │   │   │   │   │   └── windows.h
│           │   │   │   │   │   │   └── myWindows/
│           │   │   │   │   │   │       ├── StdAfx.h
│           │   │   │   │   │   │       ├── config.h
│           │   │   │   │   │   │       ├── initguid.h
│           │   │   │   │   │   │       ├── makefile
│           │   │   │   │   │   │       ├── makefile.depend
│           │   │   │   │   │   │       ├── makefile.list
│           │   │   │   │   │   │       ├── myAddExeFlag.cpp
│           │   │   │   │   │   │       ├── myGetTickCount.cpp
│           │   │   │   │   │   │       ├── myPrivate.h
│           │   │   │   │   │   │       ├── mySplitCommandLine.cpp
│           │   │   │   │   │   │       ├── test_emul.cpp
│           │   │   │   │   │   │       ├── wine_GetXXXDefaultLangID.cpp
│           │   │   │   │   │   │       └── wine_date_and_time.cpp
│           │   │   │   │   │   ├── DOCS/
│           │   │   │   │   │   │   ├── 7zC.txt
│           │   │   │   │   │   │   ├── 7zFormat.txt
│           │   │   │   │   │   │   ├── License.txt
│           │   │   │   │   │   │   ├── MANUAL/
│           │   │   │   │   │   │   │   ├── commands/
│           │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   ├── bench.htm
│           │   │   │   │   │   │   │   │   ├── delete.htm
│           │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   ├── extract_full.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── list.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── test.htm
│           │   │   │   │   │   │   │   │   └── update.htm
│           │   │   │   │   │   │   │   ├── exit_codes.htm
│           │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   ├── switches/
│           │   │   │   │   │   │   │   │   ├── ar_exclude.htm
│           │   │   │   │   │   │   │   │   ├── ar_include.htm
│           │   │   │   │   │   │   │   │   ├── ar_no.htm
│           │   │   │   │   │   │   │   │   ├── charset.htm
│           │   │   │   │   │   │   │   │   ├── exclude.htm
│           │   │   │   │   │   │   │   │   ├── include.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── list_tech.htm
│           │   │   │   │   │   │   │   │   ├── method.htm
│           │   │   │   │   │   │   │   │   ├── output_dir.htm
│           │   │   │   │   │   │   │   │   ├── overwrite.htm
│           │   │   │   │   │   │   │   │   ├── password.htm
│           │   │   │   │   │   │   │   │   ├── recurse.htm
│           │   │   │   │   │   │   │   │   ├── sfx.htm
│           │   │   │   │   │   │   │   │   ├── ssc.htm
│           │   │   │   │   │   │   │   │   ├── stdin.htm
│           │   │   │   │   │   │   │   │   ├── stdout.htm
│           │   │   │   │   │   │   │   │   ├── stop_switch.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── type.htm
│           │   │   │   │   │   │   │   │   ├── update.htm
│           │   │   │   │   │   │   │   │   ├── volume.htm
│           │   │   │   │   │   │   │   │   ├── working_dir.htm
│           │   │   │   │   │   │   │   │   └── yes.htm
│           │   │   │   │   │   │   │   └── syntax.htm
│           │   │   │   │   │   │   ├── Methods.txt
│           │   │   │   │   │   │   ├── copying.txt
│           │   │   │   │   │   │   ├── history.txt
│           │   │   │   │   │   │   ├── lzma.txt
│           │   │   │   │   │   │   ├── readme.txt
│           │   │   │   │   │   │   └── unRarLicense.txt
│           │   │   │   │   │   ├── GUI/
│           │   │   │   │   │   │   ├── Lang/
│           │   │   │   │   │   │   │   ├── af.txt
│           │   │   │   │   │   │   │   ├── ar.txt
│           │   │   │   │   │   │   │   ├── ast.txt
│           │   │   │   │   │   │   │   ├── az.txt
│           │   │   │   │   │   │   │   ├── ba.txt
│           │   │   │   │   │   │   │   ├── be.txt
│           │   │   │   │   │   │   │   ├── bg.txt
│           │   │   │   │   │   │   │   ├── bn.txt
│           │   │   │   │   │   │   │   ├── br.txt
│           │   │   │   │   │   │   │   ├── ca.txt
│           │   │   │   │   │   │   │   ├── cs.txt
│           │   │   │   │   │   │   │   ├── cy.txt
│           │   │   │   │   │   │   │   ├── da.txt
│           │   │   │   │   │   │   │   ├── de.txt
│           │   │   │   │   │   │   │   ├── el.txt
│           │   │   │   │   │   │   │   ├── en.ttt
│           │   │   │   │   │   │   │   ├── eo.txt
│           │   │   │   │   │   │   │   ├── es.txt
│           │   │   │   │   │   │   │   ├── et.txt
│           │   │   │   │   │   │   │   ├── eu.txt
│           │   │   │   │   │   │   │   ├── ext.txt
│           │   │   │   │   │   │   │   ├── fa.txt
│           │   │   │   │   │   │   │   ├── fi.txt
│           │   │   │   │   │   │   │   ├── fr.txt
│           │   │   │   │   │   │   │   ├── fur.txt
│           │   │   │   │   │   │   │   ├── fy.txt
│           │   │   │   │   │   │   │   ├── gl.txt
│           │   │   │   │   │   │   │   ├── he.txt
│           │   │   │   │   │   │   │   ├── hr.txt
│           │   │   │   │   │   │   │   ├── hu.txt
│           │   │   │   │   │   │   │   ├── hy.txt
│           │   │   │   │   │   │   │   ├── id.txt
│           │   │   │   │   │   │   │   ├── io.txt
│           │   │   │   │   │   │   │   ├── is.txt
│           │   │   │   │   │   │   │   ├── it.txt
│           │   │   │   │   │   │   │   ├── ja.txt
│           │   │   │   │   │   │   │   ├── ka.txt
│           │   │   │   │   │   │   │   ├── ko.txt
│           │   │   │   │   │   │   │   ├── ku-ckb.txt
│           │   │   │   │   │   │   │   ├── ku.txt
│           │   │   │   │   │   │   │   ├── lt.txt
│           │   │   │   │   │   │   │   ├── lv.txt
│           │   │   │   │   │   │   │   ├── mk.txt
│           │   │   │   │   │   │   │   ├── mn.txt
│           │   │   │   │   │   │   │   ├── mr.txt
│           │   │   │   │   │   │   │   ├── ms.txt
│           │   │   │   │   │   │   │   ├── nb.txt
│           │   │   │   │   │   │   │   ├── ne.txt
│           │   │   │   │   │   │   │   ├── nl.txt
│           │   │   │   │   │   │   │   ├── nn.txt
│           │   │   │   │   │   │   │   ├── pa-in.txt
│           │   │   │   │   │   │   │   ├── pl.txt
│           │   │   │   │   │   │   │   ├── ps.txt
│           │   │   │   │   │   │   │   ├── pt-br.txt
│           │   │   │   │   │   │   │   ├── pt.txt
│           │   │   │   │   │   │   │   ├── ro.txt
│           │   │   │   │   │   │   │   ├── ru.txt
│           │   │   │   │   │   │   │   ├── si.txt
│           │   │   │   │   │   │   │   ├── sk.txt
│           │   │   │   │   │   │   │   ├── sl.txt
│           │   │   │   │   │   │   │   ├── sq.txt
│           │   │   │   │   │   │   │   ├── sr-spc.txt
│           │   │   │   │   │   │   │   ├── sr-spl.txt
│           │   │   │   │   │   │   │   ├── sv.txt
│           │   │   │   │   │   │   │   ├── ta.txt
│           │   │   │   │   │   │   │   ├── th.txt
│           │   │   │   │   │   │   │   ├── tr.txt
│           │   │   │   │   │   │   │   ├── tt.txt
│           │   │   │   │   │   │   │   ├── uk.txt
│           │   │   │   │   │   │   │   ├── uz.txt
│           │   │   │   │   │   │   │   ├── va.txt
│           │   │   │   │   │   │   │   ├── vi.txt
│           │   │   │   │   │   │   │   ├── zh-cn.txt
│           │   │   │   │   │   │   │   └── zh-tw.txt
│           │   │   │   │   │   │   ├── help/
│           │   │   │   │   │   │   │   ├── #IDXHDR
│           │   │   │   │   │   │   │   ├── #ITBITS
│           │   │   │   │   │   │   │   ├── #STRINGS
│           │   │   │   │   │   │   │   ├── #SYSTEM
│           │   │   │   │   │   │   │   ├── #TOPICS
│           │   │   │   │   │   │   │   ├── #URLSTR
│           │   │   │   │   │   │   │   ├── #URLTBL
│           │   │   │   │   │   │   │   ├── $FIftiMain
│           │   │   │   │   │   │   │   ├── $OBJINST
│           │   │   │   │   │   │   │   ├── $WWAssociativeLinks/
│           │   │   │   │   │   │   │   │   └── Property
│           │   │   │   │   │   │   │   ├── $WWKeywordLinks/
│           │   │   │   │   │   │   │   │   ├── BTree
│           │   │   │   │   │   │   │   │   ├── Data
│           │   │   │   │   │   │   │   │   ├── Map
│           │   │   │   │   │   │   │   │   └── Property
│           │   │   │   │   │   │   │   ├── 7zip.hhc
│           │   │   │   │   │   │   │   ├── 7zip.hhk
│           │   │   │   │   │   │   │   ├── cmdline/
│           │   │   │   │   │   │   │   │   ├── commands/
│           │   │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   │   ├── bench.htm
│           │   │   │   │   │   │   │   │   │   ├── delete.htm
│           │   │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   │   ├── extract_full.htm
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   ├── list.htm
│           │   │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   │   ├── test.htm
│           │   │   │   │   │   │   │   │   │   └── update.htm
│           │   │   │   │   │   │   │   │   ├── exit_codes.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── switches/
│           │   │   │   │   │   │   │   │   │   ├── ar_exclude.htm
│           │   │   │   │   │   │   │   │   │   ├── ar_include.htm
│           │   │   │   │   │   │   │   │   │   ├── ar_no.htm
│           │   │   │   │   │   │   │   │   │   ├── charset.htm
│           │   │   │   │   │   │   │   │   │   ├── exclude.htm
│           │   │   │   │   │   │   │   │   │   ├── include.htm
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   ├── list_tech.htm
│           │   │   │   │   │   │   │   │   │   ├── method.htm
│           │   │   │   │   │   │   │   │   │   ├── output_dir.htm
│           │   │   │   │   │   │   │   │   │   ├── overwrite.htm
│           │   │   │   │   │   │   │   │   │   ├── password.htm
│           │   │   │   │   │   │   │   │   │   ├── recurse.htm
│           │   │   │   │   │   │   │   │   │   ├── sfx.htm
│           │   │   │   │   │   │   │   │   │   ├── ssc.htm
│           │   │   │   │   │   │   │   │   │   ├── stdin.htm
│           │   │   │   │   │   │   │   │   │   ├── stdout.htm
│           │   │   │   │   │   │   │   │   │   ├── stop_switch.htm
│           │   │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   │   ├── type.htm
│           │   │   │   │   │   │   │   │   │   ├── update.htm
│           │   │   │   │   │   │   │   │   │   ├── volume.htm
│           │   │   │   │   │   │   │   │   │   ├── working_dir.htm
│           │   │   │   │   │   │   │   │   │   └── yes.htm
│           │   │   │   │   │   │   │   │   └── syntax.htm
│           │   │   │   │   │   │   │   ├── fm/
│           │   │   │   │   │   │   │   │   ├── about.htm
│           │   │   │   │   │   │   │   │   ├── benchmark.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── menu.htm
│           │   │   │   │   │   │   │   │   ├── options.htm
│           │   │   │   │   │   │   │   │   ├── plugins/
│           │   │   │   │   │   │   │   │   │   ├── 7-zip/
│           │   │   │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   │   ├── options.htm
│           │   │   │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   ├── general/
│           │   │   │   │   │   │   │   │   ├── 7z.htm
│           │   │   │   │   │   │   │   │   ├── faq.htm
│           │   │   │   │   │   │   │   │   ├── formats.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── license.htm
│           │   │   │   │   │   │   │   │   ├── performance.htm
│           │   │   │   │   │   │   │   │   ├── register.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   └── thanks.htm
│           │   │   │   │   │   │   │   ├── start.htm
│           │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   ├── kde/
│           │   │   │   │   │   │   │   ├── p7zip_compress.desktop
│           │   │   │   │   │   │   │   ├── p7zip_compress2.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract_subdir.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract_to.desktop
│           │   │   │   │   │   │   │   └── p7zip_test.desktop
│           │   │   │   │   │   │   ├── p7zipForFilemanager
│           │   │   │   │   │   │   ├── p7zip_32.xpm
│           │   │   │   │   │   │   └── readme.txt
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── TODO
│           │   │   │   │   │   ├── check/
│           │   │   │   │   │   │   ├── check.sh
│           │   │   │   │   │   │   ├── check_7zr.sh
│           │   │   │   │   │   │   ├── check_Client7z.sh
│           │   │   │   │   │   │   ├── check_install.sh
│           │   │   │   │   │   │   ├── clean_all.sh
│           │   │   │   │   │   │   └── test/
│           │   │   │   │   │   │       ├── 7za.exe.lzma
│           │   │   │   │   │   │       ├── 7za.exe.lzma86
│           │   │   │   │   │   │       └── 7za.exe.lzma_eos
│           │   │   │   │   │   ├── contrib/
│           │   │   │   │   │   │   ├── VirtualFileSystemForMidnightCommander/
│           │   │   │   │   │   │   │   ├── ChangeLog
│           │   │   │   │   │   │   │   ├── readme
│           │   │   │   │   │   │   │   ├── readme.u7z
│           │   │   │   │   │   │   │   └── u7z
│           │   │   │   │   │   │   ├── gzip-like_CLI_wrapper_for_7z/
│           │   │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   │   ├── check/
│           │   │   │   │   │   │   │   │   └── check.sh
│           │   │   │   │   │   │   │   ├── man1/
│           │   │   │   │   │   │   │   │   └── p7zip.1
│           │   │   │   │   │   │   │   └── p7zip
│           │   │   │   │   │   │   └── qnx630sp3/
│           │   │   │   │   │   │       ├── qnx630sp3-shared
│           │   │   │   │   │   │       └── qnx630sp3-static
│           │   │   │   │   │   └── man1/
│           │   │   │   │   │       ├── 7z.1
│           │   │   │   │   │       ├── 7za.1
│           │   │   │   │   │       └── 7zr.1
│           │   │   │   │   ├── 7zip.cpp
│           │   │   │   │   ├── 7zip.h
│           │   │   │   │   ├── 7zipstreams.h
│           │   │   │   │   ├── OpenArchive.cpp
│           │   │   │   │   ├── OpenArchive.h
│           │   │   │   │   ├── draw.cpp
│           │   │   │   │   ├── dynarec/
│           │   │   │   │   │   ├── Android.mk
│           │   │   │   │   │   ├── arm_codegen.h
│           │   │   │   │   │   ├── arm_dpimacros.h
│           │   │   │   │   │   ├── arm_dpimacros_old.h
│           │   │   │   │   │   ├── arm_emit.h
│           │   │   │   │   │   ├── arm_stub.S
│           │   │   │   │   │   ├── arm_stub_old.S
│           │   │   │   │   │   ├── cpu.cpp
│           │   │   │   │   │   ├── cpu.h
│           │   │   │   │   │   ├── cpu_threaded.cpp
│           │   │   │   │   │   ├── dynarec.h
│           │   │   │   │   │   ├── dynarec_linker.cpp
│           │   │   │   │   │   ├── dynarec_linker.h
│           │   │   │   │   │   ├── exophasejit.cpp
│           │   │   │   │   │   ├── exophasejit.h
│           │   │   │   │   │   ├── warm.cpp
│           │   │   │   │   │   └── warm.h
│           │   │   │   │   ├── main.cpp
│           │   │   │   │   ├── main.h
│           │   │   │   │   ├── math-neon/
│           │   │   │   │   │   ├── Android.mk
│           │   │   │   │   │   ├── COPYING
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── math_acosf.c
│           │   │   │   │   │   ├── math_asinf.c
│           │   │   │   │   │   ├── math_atan2f.c
│           │   │   │   │   │   ├── math_atanf.c
│           │   │   │   │   │   ├── math_ceilf.c
│           │   │   │   │   │   ├── math_cosf.c
│           │   │   │   │   │   ├── math_coshf.c
│           │   │   │   │   │   ├── math_debug.c
│           │   │   │   │   │   ├── math_expf.c
│           │   │   │   │   │   ├── math_fabsf.c
│           │   │   │   │   │   ├── math_floorf.c
│           │   │   │   │   │   ├── math_fmodf.c
│           │   │   │   │   │   ├── math_frexpf.c
│           │   │   │   │   │   ├── math_invsqrtf.c
│           │   │   │   │   │   ├── math_ldexpf.c
│           │   │   │   │   │   ├── math_log10f.c
│           │   │   │   │   │   ├── math_logf.c
│           │   │   │   │   │   ├── math_mat2.c
│           │   │   │   │   │   ├── math_mat3.c
│           │   │   │   │   │   ├── math_mat4.c
│           │   │   │   │   │   ├── math_modf.c
│           │   │   │   │   │   ├── math_neon.h
│           │   │   │   │   │   ├── math_powf.c
│           │   │   │   │   │   ├── math_runfast.c
│           │   │   │   │   │   ├── math_sincosf.c
│           │   │   │   │   │   ├── math_sinf.c
│           │   │   │   │   │   ├── math_sinfv.c
│           │   │   │   │   │   ├── math_sinhf.c
│           │   │   │   │   │   ├── math_sqrtf.c
│           │   │   │   │   │   ├── math_sqrtfv.c
│           │   │   │   │   │   ├── math_tanf.c
│           │   │   │   │   │   ├── math_tanhf.c
│           │   │   │   │   │   ├── math_vec2.c
│           │   │   │   │   │   ├── math_vec3.c
│           │   │   │   │   │   └── math_vec4.c
│           │   │   │   │   ├── mic.cpp
│           │   │   │   │   ├── neontest.cpp
│           │   │   │   │   ├── neontest.h
│           │   │   │   │   ├── ogl.cpp
│           │   │   │   │   ├── sndopensl.cpp
│           │   │   │   │   ├── sndopensl.h
│           │   │   │   │   ├── throttle.cpp
│           │   │   │   │   ├── throttle.h
│           │   │   │   │   └── video.h
│           │   │   │   ├── arm_instructions.cpp
│           │   │   │   ├── arm_instructions.h
│           │   │   │   ├── arm_jit.cpp
│           │   │   │   ├── arm_jit.h
│           │   │   │   ├── armcpu.cpp
│           │   │   │   ├── armcpu.h
│           │   │   │   ├── armcpu_exec_inline.h
│           │   │   │   ├── bios.cpp
│           │   │   │   ├── bios.h
│           │   │   │   ├── bits.h
│           │   │   │   ├── build.bat
│           │   │   │   ├── cheatSystem.cpp
│           │   │   │   ├── cheatSystem.h
│           │   │   │   ├── commandline.cpp
│           │   │   │   ├── commandline.h
│           │   │   │   ├── common.cpp
│           │   │   │   ├── common.h
│           │   │   │   ├── cp15.cpp
│           │   │   │   ├── cp15.h
│           │   │   │   ├── ctrlssdl.cpp
│           │   │   │   ├── ctrlssdl.h
│           │   │   │   ├── debug.cpp
│           │   │   │   ├── debug.h
│           │   │   │   ├── desmume.mk
│           │   │   │   ├── desmume_config.cpp
│           │   │   │   ├── desmume_config.h
│           │   │   │   ├── driver.cpp
│           │   │   │   ├── driver.h
│           │   │   │   ├── emufile.cpp
│           │   │   │   ├── emufile.h
│           │   │   │   ├── emufile_types.h
│           │   │   │   ├── filter/
│           │   │   │   │   ├── 2xsai.cpp
│           │   │   │   │   ├── bilinear.cpp
│           │   │   │   │   ├── epx.cpp
│           │   │   │   │   ├── filter.h
│           │   │   │   │   ├── hq2x.cpp
│           │   │   │   │   ├── hq2x.h
│           │   │   │   │   ├── hq4x.cpp
│           │   │   │   │   ├── hq4x.h
│           │   │   │   │   ├── interp.h
│           │   │   │   │   ├── lq2x.cpp
│           │   │   │   │   ├── lq2x.h
│           │   │   │   │   └── scanline.cpp
│           │   │   │   ├── firmware.cpp
│           │   │   │   ├── firmware.h
│           │   │   │   ├── fs-linux.cpp
│           │   │   │   ├── fs-windows.cpp
│           │   │   │   ├── fs.h
│           │   │   │   ├── gdbstub.h
│           │   │   │   ├── gfx3d.cpp
│           │   │   │   ├── gfx3d.h
│           │   │   │   ├── instruction_attributes.h
│           │   │   │   ├── instruction_tabdef.inc
│           │   │   │   ├── instructions.h
│           │   │   │   ├── lua-engine.cpp
│           │   │   │   ├── matrix.cpp
│           │   │   │   ├── matrix.h
│           │   │   │   ├── mc.cpp
│           │   │   │   ├── mc.h
│           │   │   │   ├── mem.h
│           │   │   │   ├── metaspu/
│           │   │   │   │   ├── SndOut.cpp
│           │   │   │   │   ├── SndOut.h
│           │   │   │   │   ├── Timestretcher.cpp
│           │   │   │   │   ├── metaspu.cpp
│           │   │   │   │   └── metaspu.h
│           │   │   │   ├── mic.cpp
│           │   │   │   ├── mic.h
│           │   │   │   ├── mic_alsa.cpp
│           │   │   │   ├── mic_openal.cpp
│           │   │   │   ├── movie.cpp
│           │   │   │   ├── movie.h
│           │   │   │   ├── movie_r7b.cpp
│           │   │   │   ├── path.cpp
│           │   │   │   ├── path.h
│           │   │   │   ├── rasterize.cpp
│           │   │   │   ├── rasterize.h
│           │   │   │   ├── readwrite.cpp
│           │   │   │   ├── readwrite.h
│           │   │   │   ├── registers.h
│           │   │   │   ├── render3D.cpp
│           │   │   │   ├── render3D.h
│           │   │   │   ├── rtc.cpp
│           │   │   │   ├── rtc.h
│           │   │   │   ├── saves.cpp
│           │   │   │   ├── saves.h
│           │   │   │   ├── sequencer.h
│           │   │   │   ├── shaders.h
│           │   │   │   ├── slot1.cpp
│           │   │   │   ├── slot1.h
│           │   │   │   ├── sndsdl.cpp
│           │   │   │   ├── sndsdl.h
│           │   │   │   ├── texcache.cpp
│           │   │   │   ├── texcache.h
│           │   │   │   ├── thumb_instructions.cpp
│           │   │   │   ├── thumb_instructions.h
│           │   │   │   ├── thumb_tabdef.inc
│           │   │   │   ├── types.h
│           │   │   │   ├── utils/
│           │   │   │   │   ├── AsmJit/
│           │   │   │   │   │   ├── AsmJit.h
│           │   │   │   │   │   ├── COPYING.txt
│           │   │   │   │   │   ├── Config.h
│           │   │   │   │   │   ├── core/
│           │   │   │   │   │   │   ├── apibegin.h
│           │   │   │   │   │   │   ├── apiend.h
│           │   │   │   │   │   │   ├── assembler.cpp
│           │   │   │   │   │   │   ├── assembler.h
│           │   │   │   │   │   │   ├── assert.cpp
│           │   │   │   │   │   │   ├── assert.h
│           │   │   │   │   │   │   ├── buffer.cpp
│           │   │   │   │   │   │   ├── buffer.h
│           │   │   │   │   │   │   ├── build.h
│           │   │   │   │   │   │   ├── compiler.cpp
│           │   │   │   │   │   │   ├── compiler.h
│           │   │   │   │   │   │   ├── compilercontext.cpp
│           │   │   │   │   │   │   ├── compilercontext.h
│           │   │   │   │   │   │   ├── compilerfunc.cpp
│           │   │   │   │   │   │   ├── compilerfunc.h
│           │   │   │   │   │   │   ├── compileritem.cpp
│           │   │   │   │   │   │   ├── compileritem.h
│           │   │   │   │   │   │   ├── context.cpp
│           │   │   │   │   │   │   ├── context.h
│           │   │   │   │   │   │   ├── cpuinfo.cpp
│           │   │   │   │   │   │   ├── cpuinfo.h
│           │   │   │   │   │   │   ├── defs.cpp
│           │   │   │   │   │   │   ├── defs.h
│           │   │   │   │   │   │   ├── func.cpp
│           │   │   │   │   │   │   ├── func.h
│           │   │   │   │   │   │   ├── intutil.h
│           │   │   │   │   │   │   ├── lock.h
│           │   │   │   │   │   │   ├── logger.cpp
│           │   │   │   │   │   │   ├── logger.h
│           │   │   │   │   │   │   ├── memorymanager.cpp
│           │   │   │   │   │   │   ├── memorymanager.h
│           │   │   │   │   │   │   ├── memorymarker.cpp
│           │   │   │   │   │   │   ├── memorymarker.h
│           │   │   │   │   │   │   ├── operand.cpp
│           │   │   │   │   │   │   ├── operand.h
│           │   │   │   │   │   │   ├── podvector.h
│           │   │   │   │   │   │   ├── stringbuilder.cpp
│           │   │   │   │   │   │   ├── stringbuilder.h
│           │   │   │   │   │   │   ├── stringutil.cpp
│           │   │   │   │   │   │   ├── stringutil.h
│           │   │   │   │   │   │   ├── virtualmemory.cpp
│           │   │   │   │   │   │   ├── virtualmemory.h
│           │   │   │   │   │   │   ├── zonememory.cpp
│           │   │   │   │   │   │   └── zonememory.h
│           │   │   │   │   │   ├── core.h
│           │   │   │   │   │   ├── x86/
│           │   │   │   │   │   │   ├── x86assembler.cpp
│           │   │   │   │   │   │   ├── x86assembler.h
│           │   │   │   │   │   │   ├── x86compiler.cpp
│           │   │   │   │   │   │   ├── x86compiler.h
│           │   │   │   │   │   │   ├── x86compilercontext.cpp
│           │   │   │   │   │   │   ├── x86compilercontext.h
│           │   │   │   │   │   │   ├── x86compilerfunc.cpp
│           │   │   │   │   │   │   ├── x86compilerfunc.h
│           │   │   │   │   │   │   ├── x86compileritem.cpp
│           │   │   │   │   │   │   ├── x86compileritem.h
│           │   │   │   │   │   │   ├── x86cpuinfo.cpp
│           │   │   │   │   │   │   ├── x86cpuinfo.h
│           │   │   │   │   │   │   ├── x86defs.cpp
│           │   │   │   │   │   │   ├── x86defs.h
│           │   │   │   │   │   │   ├── x86func.cpp
│           │   │   │   │   │   │   ├── x86func.h
│           │   │   │   │   │   │   ├── x86operand.cpp
│           │   │   │   │   │   │   ├── x86operand.h
│           │   │   │   │   │   │   ├── x86util.cpp
│           │   │   │   │   │   │   └── x86util.h
│           │   │   │   │   │   └── x86.h
│           │   │   │   │   ├── ConvertUTF.c
│           │   │   │   │   ├── ConvertUTF.h
│           │   │   │   │   ├── FileMap.cpp
│           │   │   │   │   ├── FileMap.h
│           │   │   │   │   ├── MemBuffer.cpp
│           │   │   │   │   ├── MemBuffer.h
│           │   │   │   │   ├── datetime.cpp
│           │   │   │   │   ├── datetime.h
│           │   │   │   │   ├── decrypt/
│           │   │   │   │   │   ├── crc.cpp
│           │   │   │   │   │   ├── crc.h
│           │   │   │   │   │   ├── decrypt.cpp
│           │   │   │   │   │   ├── decrypt.h
│           │   │   │   │   │   ├── header.cpp
│           │   │   │   │   │   └── header.h
│           │   │   │   │   ├── dlditool.cpp
│           │   │   │   │   ├── emufat.cpp
│           │   │   │   │   ├── emufat.h
│           │   │   │   │   ├── emufat_types.h
│           │   │   │   │   ├── guid.cpp
│           │   │   │   │   ├── guid.h
│           │   │   │   │   ├── libfat/
│           │   │   │   │   │   ├── bit_ops.h
│           │   │   │   │   │   ├── cache.cpp
│           │   │   │   │   │   ├── cache.h
│           │   │   │   │   │   ├── common.h
│           │   │   │   │   │   ├── directory.cpp
│           │   │   │   │   │   ├── directory.h
│           │   │   │   │   │   ├── disc.cpp
│           │   │   │   │   │   ├── disc.h
│           │   │   │   │   │   ├── disc_io.h
│           │   │   │   │   │   ├── fat.h
│           │   │   │   │   │   ├── fatdir.cpp
│           │   │   │   │   │   ├── fatdir.h
│           │   │   │   │   │   ├── fatfile.cpp
│           │   │   │   │   │   ├── fatfile.h
│           │   │   │   │   │   ├── file_allocation_table.cpp
│           │   │   │   │   │   ├── file_allocation_table.h
│           │   │   │   │   │   ├── filetime.cpp
│           │   │   │   │   │   ├── filetime.h
│           │   │   │   │   │   ├── libfat.cpp
│           │   │   │   │   │   ├── libfat_pc.h
│           │   │   │   │   │   ├── libfat_public_api.cpp
│           │   │   │   │   │   ├── libfat_public_api.h
│           │   │   │   │   │   ├── lock.cpp
│           │   │   │   │   │   ├── lock.h
│           │   │   │   │   │   ├── mem_allocate.h
│           │   │   │   │   │   ├── partition.cpp
│           │   │   │   │   │   └── partition.h
│           │   │   │   │   ├── lightning/
│           │   │   │   │   │   ├── Makefile.am
│           │   │   │   │   │   ├── Makefile.in
│           │   │   │   │   │   ├── arm/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-swf.h
│           │   │   │   │   │   │   ├── fp-vfp.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── asm-common.h
│           │   │   │   │   │   ├── config_lightning.h
│           │   │   │   │   │   ├── core-common.h
│           │   │   │   │   │   ├── fp-common.h
│           │   │   │   │   │   ├── funcs-common.h
│           │   │   │   │   │   ├── i386/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── asm-32.h
│           │   │   │   │   │   │   ├── asm-64.h
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core-32.h
│           │   │   │   │   │   │   ├── core-64.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-32.h
│           │   │   │   │   │   │   ├── fp-64.h
│           │   │   │   │   │   │   ├── fp-sse.h
│           │   │   │   │   │   │   ├── fp-x87.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── lightning.h
│           │   │   │   │   │   ├── mips/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core-32.h
│           │   │   │   │   │   │   ├── core-64.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-32.h
│           │   │   │   │   │   │   ├── fp-64.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── ppc/
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   └── sparc/
│           │   │   │   │   │       ├── asm.h
│           │   │   │   │   │       ├── core.h
│           │   │   │   │   │       ├── fp.h
│           │   │   │   │   │       └── funcs.h
│           │   │   │   │   ├── md5.cpp
│           │   │   │   │   ├── md5.h
│           │   │   │   │   ├── task.cpp
│           │   │   │   │   ├── task.h
│           │   │   │   │   ├── tinycc/
│           │   │   │   │   │   ├── .gitignore
│           │   │   │   │   │   ├── Android_arm.mk
│           │   │   │   │   │   ├── Android_x86.mk
│           │   │   │   │   │   ├── COPYING
│           │   │   │   │   │   ├── Changelog
│           │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── TODO
│           │   │   │   │   │   ├── VERSION
│           │   │   │   │   │   ├── arm-gen.c
│           │   │   │   │   │   ├── c67-gen.c
│           │   │   │   │   │   ├── coff.h
│           │   │   │   │   │   ├── config.h
│           │   │   │   │   │   ├── configure
│           │   │   │   │   │   ├── elf.h
│           │   │   │   │   │   ├── examples/
│           │   │   │   │   │   │   ├── ex1.c
│           │   │   │   │   │   │   ├── ex2.c
│           │   │   │   │   │   │   ├── ex3.c
│           │   │   │   │   │   │   ├── ex4.c
│           │   │   │   │   │   │   └── ex5.c
│           │   │   │   │   │   ├── i386-asm.c
│           │   │   │   │   │   ├── i386-asm.h
│           │   │   │   │   │   ├── i386-gen.c
│           │   │   │   │   │   ├── i386-tok.h
│           │   │   │   │   │   ├── il-gen.c
│           │   │   │   │   │   ├── il-opcodes.h
│           │   │   │   │   │   ├── include/
│           │   │   │   │   │   │   ├── float.h
│           │   │   │   │   │   │   ├── stdarg.h
│           │   │   │   │   │   │   ├── stdbool.h
│           │   │   │   │   │   │   ├── stddef.h
│           │   │   │   │   │   │   ├── tcclib.h
│           │   │   │   │   │   │   └── varargs.h
│           │   │   │   │   │   ├── lib/
│           │   │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   │   ├── alloca86-bt.S
│           │   │   │   │   │   │   ├── alloca86.S
│           │   │   │   │   │   │   ├── alloca86_64.S
│           │   │   │   │   │   │   ├── bcheck.c
│           │   │   │   │   │   │   └── libtcc1.c
│           │   │   │   │   │   ├── libtcc.c
│           │   │   │   │   │   ├── libtcc.h
│           │   │   │   │   │   ├── stab.def
│           │   │   │   │   │   ├── stab.h
│           │   │   │   │   │   ├── tcc-doc.texi
│           │   │   │   │   │   ├── tcc.c
│           │   │   │   │   │   ├── tcc.h
│           │   │   │   │   │   ├── tccasm.c
│           │   │   │   │   │   ├── tcccoff.c
│           │   │   │   │   │   ├── tccelf.c
│           │   │   │   │   │   ├── tccgen.c
│           │   │   │   │   │   ├── tccpe.c
│           │   │   │   │   │   ├── tccpp.c
│           │   │   │   │   │   ├── tccrun.c
│           │   │   │   │   │   ├── tcctok.h
│           │   │   │   │   │   ├── tests/
│           │   │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   │   ├── asmtest.S
│           │   │   │   │   │   │   ├── boundtest.c
│           │   │   │   │   │   │   ├── gcctestsuite.sh
│           │   │   │   │   │   │   ├── libtcc_test.c
│           │   │   │   │   │   │   ├── tcctest.c
│           │   │   │   │   │   │   └── tests2/
│           │   │   │   │   │   │       ├── 00_assignment.c
│           │   │   │   │   │   │       ├── 00_assignment.expect
│           │   │   │   │   │   │       ├── 01_comment.c
│           │   │   │   │   │   │       ├── 01_comment.expect
│           │   │   │   │   │   │       ├── 02_printf.c
│           │   │   │   │   │   │       ├── 02_printf.expect
│           │   │   │   │   │   │       ├── 03_struct.c
│           │   │   │   │   │   │       ├── 03_struct.expect
│           │   │   │   │   │   │       ├── 04_for.c
│           │   │   │   │   │   │       ├── 04_for.expect
│           │   │   │   │   │   │       ├── 05_array.c
│           │   │   │   │   │   │       ├── 05_array.expect
│           │   │   │   │   │   │       ├── 06_case.c
│           │   │   │   │   │   │       ├── 06_case.expect
│           │   │   │   │   │   │       ├── 07_function.c
│           │   │   │   │   │   │       ├── 07_function.expect
│           │   │   │   │   │   │       ├── 08_while.c
│           │   │   │   │   │   │       ├── 08_while.expect
│           │   │   │   │   │   │       ├── 09_do_while.c
│           │   │   │   │   │   │       ├── 09_do_while.expect
│           │   │   │   │   │   │       ├── 10_pointer.c
│           │   │   │   │   │   │       ├── 10_pointer.expect
│           │   │   │   │   │   │       ├── 11_precedence.c
│           │   │   │   │   │   │       ├── 11_precedence.expect
│           │   │   │   │   │   │       ├── 12_hashdefine.c
│           │   │   │   │   │   │       ├── 12_hashdefine.expect
│           │   │   │   │   │   │       ├── 13_integer_literals.c
│           │   │   │   │   │   │       ├── 13_integer_literals.expect
│           │   │   │   │   │   │       ├── 14_if.c
│           │   │   │   │   │   │       ├── 14_if.expect
│           │   │   │   │   │   │       ├── 15_recursion.c
│           │   │   │   │   │   │       ├── 15_recursion.expect
│           │   │   │   │   │   │       ├── 16_nesting.c
│           │   │   │   │   │   │       ├── 16_nesting.expect
│           │   │   │   │   │   │       ├── 17_enum.c
│           │   │   │   │   │   │       ├── 17_enum.expect
│           │   │   │   │   │   │       ├── 18_include.c
│           │   │   │   │   │   │       ├── 18_include.expect
│           │   │   │   │   │   │       ├── 18_include.h
│           │   │   │   │   │   │       ├── 19_pointer_arithmetic.c
│           │   │   │   │   │   │       ├── 19_pointer_arithmetic.expect
│           │   │   │   │   │   │       ├── 20_pointer_comparison.c
│           │   │   │   │   │   │       ├── 20_pointer_comparison.expect
│           │   │   │   │   │   │       ├── 21_char_array.c
│           │   │   │   │   │   │       ├── 21_char_array.expect
│           │   │   │   │   │   │       ├── 22_floating_point.c
│           │   │   │   │   │   │       ├── 22_floating_point.expect
│           │   │   │   │   │   │       ├── 23_type_coercion.c
│           │   │   │   │   │   │       ├── 23_type_coercion.expect
│           │   │   │   │   │   │       ├── 24_math_library.c
│           │   │   │   │   │   │       ├── 24_math_library.expect
│           │   │   │   │   │   │       ├── 25_quicksort.c
│           │   │   │   │   │   │       ├── 25_quicksort.expect
│           │   │   │   │   │   │       ├── 26_character_constants.c
│           │   │   │   │   │   │       ├── 26_character_constants.expect
│           │   │   │   │   │   │       ├── 27_sizeof.c
│           │   │   │   │   │   │       ├── 27_sizeof.expect
│           │   │   │   │   │   │       ├── 28_strings.c
│           │   │   │   │   │   │       ├── 28_strings.expect
│           │   │   │   │   │   │       ├── 29_array_address.c
│           │   │   │   │   │   │       ├── 29_array_address.expect
│           │   │   │   │   │   │       ├── 30_hanoi.c
│           │   │   │   │   │   │       ├── 30_hanoi.expect
│           │   │   │   │   │   │       ├── 31_args.c
│           │   │   │   │   │   │       ├── 31_args.expect
│           │   │   │   │   │   │       ├── 32_led.c
│           │   │   │   │   │   │       ├── 32_led.expect
│           │   │   │   │   │   │       ├── 33_ternary_op.c
│           │   │   │   │   │   │       ├── 33_ternary_op.expect
│           │   │   │   │   │   │       ├── 34_array_assignment.c
│           │   │   │   │   │   │       ├── 34_array_assignment.expect
│           │   │   │   │   │   │       ├── 35_sizeof.c
│           │   │   │   │   │   │       ├── 35_sizeof.expect
│           │   │   │   │   │   │       ├── 36_array_initialisers.c
│           │   │   │   │   │   │       ├── 36_array_initialisers.expect
│           │   │   │   │   │   │       ├── 37_sprintf.c
│           │   │   │   │   │   │       ├── 37_sprintf.expect
│           │   │   │   │   │   │       ├── 38_multiple_array_index.c
│           │   │   │   │   │   │       ├── 38_multiple_array_index.expect
│           │   │   │   │   │   │       ├── 39_typedef.c
│           │   │   │   │   │   │       ├── 39_typedef.expect
│           │   │   │   │   │   │       ├── 40_stdio.c
│           │   │   │   │   │   │       ├── 40_stdio.expect
│           │   │   │   │   │   │       ├── 41_hashif.c
│           │   │   │   │   │   │       ├── 41_hashif.expect
│           │   │   │   │   │   │       ├── 42_function_pointer.c
│           │   │   │   │   │   │       ├── 42_function_pointer.expect
│           │   │   │   │   │   │       ├── 43_void_param.c
│           │   │   │   │   │   │       ├── 43_void_param.expect
│           │   │   │   │   │   │       ├── 44_scoped_declarations.c
│           │   │   │   │   │   │       ├── 44_scoped_declarations.expect
│           │   │   │   │   │   │       ├── 45_empty_for.c
│           │   │   │   │   │   │       ├── 45_empty_for.expect
│           │   │   │   │   │   │       ├── 46_grep.c
│           │   │   │   │   │   │       ├── 47_switch_return.c
│           │   │   │   │   │   │       ├── 47_switch_return.expect
│           │   │   │   │   │   │       ├── 48_nested_break.c
│           │   │   │   │   │   │       ├── 48_nested_break.expect
│           │   │   │   │   │   │       ├── 49_bracket_evaluation.c
│           │   │   │   │   │   │       ├── 49_bracket_evaluation.expect
│           │   │   │   │   │   │       ├── 50_logical_second_arg.c
│           │   │   │   │   │   │       ├── 50_logical_second_arg.expect
│           │   │   │   │   │   │       ├── 51_static.c
│           │   │   │   │   │   │       ├── 51_static.expect
│           │   │   │   │   │   │       ├── 52_unnamed_enum.c
│           │   │   │   │   │   │       ├── 52_unnamed_enum.expect
│           │   │   │   │   │   │       ├── 54_goto.c
│           │   │   │   │   │   │       ├── 54_goto.expect
│           │   │   │   │   │   │       ├── 55_lshift_type.c
│           │   │   │   │   │   │       ├── 55_lshift_type.expect
│           │   │   │   │   │   │       ├── LICENSE
│           │   │   │   │   │   │       └── Makefile
│           │   │   │   │   │   ├── tests2/
│           │   │   │   │   │   │   ├── 00_assignment.c
│           │   │   │   │   │   │   ├── 00_assignment.expect
│           │   │   │   │   │   │   ├── 01_comment.c
│           │   │   │   │   │   │   ├── 01_comment.expect
│           │   │   │   │   │   │   ├── 02_printf.c
│           │   │   │   │   │   │   ├── 02_printf.expect
│           │   │   │   │   │   │   ├── 03_struct.c
│           │   │   │   │   │   │   ├── 03_struct.expect
│           │   │   │   │   │   │   ├── 04_for.c
│           │   │   │   │   │   │   ├── 04_for.expect
│           │   │   │   │   │   │   ├── 05_array.c
│           │   │   │   │   │   │   ├── 05_array.expect
│           │   │   │   │   │   │   ├── 06_case.c
│           │   │   │   │   │   │   ├── 06_case.expect
│           │   │   │   │   │   │   ├── 07_function.c
│           │   │   │   │   │   │   ├── 07_function.expect
│           │   │   │   │   │   │   ├── 08_while.c
│           │   │   │   │   │   │   ├── 08_while.expect
│           │   │   │   │   │   │   ├── 09_do_while.c
│           │   │   │   │   │   │   ├── 09_do_while.expect
│           │   │   │   │   │   │   ├── 10_pointer.c
│           │   │   │   │   │   │   ├── 10_pointer.expect
│           │   │   │   │   │   │   ├── 11_precedence.c
│           │   │   │   │   │   │   ├── 11_precedence.expect
│           │   │   │   │   │   │   ├── 12_hashdefine.c
│           │   │   │   │   │   │   ├── 12_hashdefine.expect
│           │   │   │   │   │   │   ├── 13_integer_literals.c
│           │   │   │   │   │   │   ├── 13_integer_literals.expect
│           │   │   │   │   │   │   ├── 14_if.c
│           │   │   │   │   │   │   ├── 14_if.expect
│           │   │   │   │   │   │   ├── 15_recursion.c
│           │   │   │   │   │   │   ├── 15_recursion.expect
│           │   │   │   │   │   │   ├── 16_nesting.c
│           │   │   │   │   │   │   ├── 16_nesting.expect
│           │   │   │   │   │   │   ├── 17_enum.c
│           │   │   │   │   │   │   ├── 17_enum.expect
│           │   │   │   │   │   │   ├── 18_include.c
│           │   │   │   │   │   │   ├── 18_include.expect
│           │   │   │   │   │   │   ├── 18_include.h
│           │   │   │   │   │   │   ├── 19_pointer_arithmetic.c
│           │   │   │   │   │   │   ├── 19_pointer_arithmetic.expect
│           │   │   │   │   │   │   ├── 20_pointer_comparison.c
│           │   │   │   │   │   │   ├── 20_pointer_comparison.expect
│           │   │   │   │   │   │   ├── 21_char_array.c
│           │   │   │   │   │   │   ├── 21_char_array.expect
│           │   │   │   │   │   │   ├── 22_floating_point.c
│           │   │   │   │   │   │   ├── 22_floating_point.expect
│           │   │   │   │   │   │   ├── 23_type_coercion.c
│           │   │   │   │   │   │   ├── 23_type_coercion.expect
│           │   │   │   │   │   │   ├── 24_math_library.c
│           │   │   │   │   │   │   ├── 24_math_library.expect
│           │   │   │   │   │   │   ├── 25_quicksort.c
│           │   │   │   │   │   │   ├── 25_quicksort.expect
│           │   │   │   │   │   │   ├── 26_character_constants.c
│           │   │   │   │   │   │   ├── 26_character_constants.expect
│           │   │   │   │   │   │   ├── 27_sizeof.c
│           │   │   │   │   │   │   ├── 27_sizeof.expect
│           │   │   │   │   │   │   ├── 28_strings.c
│           │   │   │   │   │   │   ├── 28_strings.expect
│           │   │   │   │   │   │   ├── 29_array_address.c
│           │   │   │   │   │   │   ├── 29_array_address.expect
│           │   │   │   │   │   │   ├── 30_hanoi.c
│           │   │   │   │   │   │   ├── 30_hanoi.expect
│           │   │   │   │   │   │   ├── 31_args.c
│           │   │   │   │   │   │   ├── 31_args.expect
│           │   │   │   │   │   │   ├── 32_led.c
│           │   │   │   │   │   │   ├── 32_led.expect
│           │   │   │   │   │   │   ├── 33_ternary_op.c
│           │   │   │   │   │   │   ├── 33_ternary_op.expect
│           │   │   │   │   │   │   ├── 34_array_assignment.c
│           │   │   │   │   │   │   ├── 34_array_assignment.expect
│           │   │   │   │   │   │   ├── 35_sizeof.c
│           │   │   │   │   │   │   ├── 35_sizeof.expect
│           │   │   │   │   │   │   ├── 36_array_initialisers.c
│           │   │   │   │   │   │   ├── 36_array_initialisers.expect
│           │   │   │   │   │   │   ├── 37_sprintf.c
│           │   │   │   │   │   │   ├── 37_sprintf.expect
│           │   │   │   │   │   │   ├── 38_multiple_array_index.c
│           │   │   │   │   │   │   ├── 38_multiple_array_index.expect
│           │   │   │   │   │   │   ├── 39_typedef.c
│           │   │   │   │   │   │   ├── 39_typedef.expect
│           │   │   │   │   │   │   ├── 40_stdio.c
│           │   │   │   │   │   │   ├── 40_stdio.expect
│           │   │   │   │   │   │   ├── 41_hashif.c
│           │   │   │   │   │   │   ├── 41_hashif.expect
│           │   │   │   │   │   │   ├── 42_function_pointer.c
│           │   │   │   │   │   │   ├── 42_function_pointer.expect
│           │   │   │   │   │   │   ├── 43_void_param.c
│           │   │   │   │   │   │   ├── 43_void_param.expect
│           │   │   │   │   │   │   ├── 44_scoped_declarations.c
│           │   │   │   │   │   │   ├── 44_scoped_declarations.expect
│           │   │   │   │   │   │   ├── 45_empty_for.c
│           │   │   │   │   │   │   ├── 45_empty_for.expect
│           │   │   │   │   │   │   ├── 46_grep.c
│           │   │   │   │   │   │   ├── 47_switch_return.c
│           │   │   │   │   │   │   ├── 47_switch_return.expect
│           │   │   │   │   │   │   ├── 48_nested_break.c
│           │   │   │   │   │   │   ├── 48_nested_break.expect
│           │   │   │   │   │   │   ├── 49_bracket_evaluation.c
│           │   │   │   │   │   │   ├── 49_bracket_evaluation.expect
│           │   │   │   │   │   │   ├── 50_logical_second_arg.c
│           │   │   │   │   │   │   ├── 50_logical_second_arg.expect
│           │   │   │   │   │   │   ├── 51_static.c
│           │   │   │   │   │   │   ├── 51_static.expect
│           │   │   │   │   │   │   ├── 52_unnamed_enum.c
│           │   │   │   │   │   │   ├── 52_unnamed_enum.expect
│           │   │   │   │   │   │   ├── 54_goto.c
│           │   │   │   │   │   │   ├── 54_goto.expect
│           │   │   │   │   │   │   ├── 55_lshift_type.c
│           │   │   │   │   │   │   ├── 55_lshift_type.expect
│           │   │   │   │   │   │   ├── LICENSE
│           │   │   │   │   │   │   └── Makefile
│           │   │   │   │   │   ├── texi2pod.pl
│           │   │   │   │   │   ├── ucontext.h
│           │   │   │   │   │   ├── win32/
│           │   │   │   │   │   │   ├── build-tcc.bat
│           │   │   │   │   │   │   ├── examples/
│           │   │   │   │   │   │   │   ├── dll.c
│           │   │   │   │   │   │   │   ├── fib.c
│           │   │   │   │   │   │   │   ├── hello_dll.c
│           │   │   │   │   │   │   │   └── hello_win.c
│           │   │   │   │   │   │   ├── include/
│           │   │   │   │   │   │   │   ├── _mingw.h
│           │   │   │   │   │   │   │   ├── assert.h
│           │   │   │   │   │   │   │   ├── conio.h
│           │   │   │   │   │   │   │   ├── ctype.h
│           │   │   │   │   │   │   │   ├── dir.h
│           │   │   │   │   │   │   │   ├── direct.h
│           │   │   │   │   │   │   │   ├── dirent.h
│           │   │   │   │   │   │   │   ├── dos.h
│           │   │   │   │   │   │   │   ├── errno.h
│           │   │   │   │   │   │   │   ├── excpt.h
│           │   │   │   │   │   │   │   ├── fcntl.h
│           │   │   │   │   │   │   │   ├── fenv.h
│           │   │   │   │   │   │   │   ├── inttypes.h
│           │   │   │   │   │   │   │   ├── io.h
│           │   │   │   │   │   │   │   ├── limits.h
│           │   │   │   │   │   │   │   ├── locale.h
│           │   │   │   │   │   │   │   ├── malloc.h
│           │   │   │   │   │   │   │   ├── math.h
│           │   │   │   │   │   │   │   ├── mem.h
│           │   │   │   │   │   │   │   ├── memory.h
│           │   │   │   │   │   │   │   ├── process.h
│           │   │   │   │   │   │   │   ├── sec_api/
│           │   │   │   │   │   │   │   │   ├── conio_s.h
│           │   │   │   │   │   │   │   │   ├── crtdbg_s.h
│           │   │   │   │   │   │   │   │   ├── io_s.h
│           │   │   │   │   │   │   │   │   ├── mbstring_s.h
│           │   │   │   │   │   │   │   │   ├── search_s.h
│           │   │   │   │   │   │   │   │   ├── stdio_s.h
│           │   │   │   │   │   │   │   │   ├── stdlib_s.h
│           │   │   │   │   │   │   │   │   ├── stralign_s.h
│           │   │   │   │   │   │   │   │   ├── string_s.h
│           │   │   │   │   │   │   │   │   ├── sys/
│           │   │   │   │   │   │   │   │   │   └── timeb_s.h
│           │   │   │   │   │   │   │   │   ├── tchar_s.h
│           │   │   │   │   │   │   │   │   ├── time_s.h
│           │   │   │   │   │   │   │   │   └── wchar_s.h
│           │   │   │   │   │   │   │   ├── setjmp.h
│           │   │   │   │   │   │   │   ├── share.h
│           │   │   │   │   │   │   │   ├── signal.h
│           │   │   │   │   │   │   │   ├── stdint.h
│           │   │   │   │   │   │   │   ├── stdio.h
│           │   │   │   │   │   │   │   ├── stdlib.h
│           │   │   │   │   │   │   │   ├── string.h
│           │   │   │   │   │   │   │   ├── sys/
│           │   │   │   │   │   │   │   │   ├── fcntl.h
│           │   │   │   │   │   │   │   │   ├── file.h
│           │   │   │   │   │   │   │   │   ├── locking.h
│           │   │   │   │   │   │   │   │   ├── stat.h
│           │   │   │   │   │   │   │   │   ├── time.h
│           │   │   │   │   │   │   │   │   ├── timeb.h
│           │   │   │   │   │   │   │   │   ├── types.h
│           │   │   │   │   │   │   │   │   ├── unistd.h
│           │   │   │   │   │   │   │   │   └── utime.h
│           │   │   │   │   │   │   │   ├── tchar.h
│           │   │   │   │   │   │   │   ├── time.h
│           │   │   │   │   │   │   │   ├── vadefs.h
│           │   │   │   │   │   │   │   ├── values.h
│           │   │   │   │   │   │   │   ├── wchar.h
│           │   │   │   │   │   │   │   ├── wctype.h
│           │   │   │   │   │   │   │   └── winapi/
│           │   │   │   │   │   │   │       ├── basetsd.h
│           │   │   │   │   │   │   │       ├── basetyps.h
│           │   │   │   │   │   │   │       ├── guiddef.h
│           │   │   │   │   │   │   │       ├── intrin.h
│           │   │   │   │   │   │   │       ├── poppack.h
│           │   │   │   │   │   │   │       ├── pshpack1.h
│           │   │   │   │   │   │   │       ├── pshpack2.h
│           │   │   │   │   │   │   │       ├── pshpack4.h
│           │   │   │   │   │   │   │       ├── pshpack8.h
│           │   │   │   │   │   │   │       ├── reason.h
│           │   │   │   │   │   │   │       ├── specstrings.h
│           │   │   │   │   │   │   │       ├── stralign.h
│           │   │   │   │   │   │   │       ├── tvout.h
│           │   │   │   │   │   │   │       ├── winbase.h
│           │   │   │   │   │   │   │       ├── wincon.h
│           │   │   │   │   │   │   │       ├── windef.h
│           │   │   │   │   │   │   │       ├── windows.h
│           │   │   │   │   │   │   │       ├── winerror.h
│           │   │   │   │   │   │   │       ├── wingdi.h
│           │   │   │   │   │   │   │       ├── winnetwk.h
│           │   │   │   │   │   │   │       ├── winnls.h
│           │   │   │   │   │   │   │       ├── winnt.h
│           │   │   │   │   │   │   │       ├── winreg.h
│           │   │   │   │   │   │   │       ├── winuser.h
│           │   │   │   │   │   │   │       └── winver.h
│           │   │   │   │   │   │   ├── lib/
│           │   │   │   │   │   │   │   ├── chkstk.S
│           │   │   │   │   │   │   │   ├── crt1.c
│           │   │   │   │   │   │   │   ├── dllcrt1.c
│           │   │   │   │   │   │   │   ├── dllmain.c
│           │   │   │   │   │   │   │   ├── gdi32.def
│           │   │   │   │   │   │   │   ├── kernel32.def
│           │   │   │   │   │   │   │   ├── msvcrt.def
│           │   │   │   │   │   │   │   ├── user32.def
│           │   │   │   │   │   │   │   └── wincrt1.c
│           │   │   │   │   │   │   ├── tcc-win32.txt
│           │   │   │   │   │   │   └── tools/
│           │   │   │   │   │   │       ├── tiny_impdef.c
│           │   │   │   │   │   │       └── tiny_libmaker.c
│           │   │   │   │   │   ├── x86_64-asm.h
│           │   │   │   │   │   └── x86_64-gen.c
│           │   │   │   │   ├── tinyxml/
│           │   │   │   │   │   ├── tinystr.cpp
│           │   │   │   │   │   ├── tinystr.h
│           │   │   │   │   │   ├── tinyxml.cpp
│           │   │   │   │   │   ├── tinyxml.h
│           │   │   │   │   │   ├── tinyxmlerror.cpp
│           │   │   │   │   │   └── tinyxmlparser.cpp
│           │   │   │   │   ├── valuearray.h
│           │   │   │   │   ├── vfat.cpp
│           │   │   │   │   ├── vfat.h
│           │   │   │   │   ├── xstring.cpp
│           │   │   │   │   ├── xstring.h
│           │   │   │   │   └── xstring_r7b.h
│           │   │   │   ├── version.cpp
│           │   │   │   ├── version.h
│           │   │   │   ├── wifi.cpp
│           │   │   │   └── wifi.h
│           │   │   └── wxwin.m4
│           │   ├── desmume_compat.mk
│           │   ├── desmume_neon.mk
│           │   └── desmume_v7.mk
│           └── res/
│               ├── drawable/
│               │   └── bkg_griditem.xml
│               ├── layout/
│               │   ├── about.xml
│               │   ├── activity_main.xml
│               │   ├── cheatedit.xml
│               │   ├── cheatrow.xml
│               │   ├── cheats.xml
│               │   ├── dialog_slider.xml
│               │   ├── dialog_slider_noimg.xml
│               │   ├── file_dialog_main.xml
│               │   ├── file_dialog_row.xml
│               │   ├── fragment_list.xml
│               │   ├── griditem_rom.xml
│               │   └── keymap.xml
│               ├── menu/
│               │   ├── activity_collection.xml
│               │   └── activity_main.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   ├── fileendings.xml
│               │   ├── strings.xml
│               │   └── styles.xml
│               ├── values-de/
│               │   ├── arrays.xml
│               │   ├── colors.xml
│               │   └── strings.xml
│               ├── values-fr/
│               │   └── strings.xml
│               ├── values-he/
│               │   └── strings.xml
│               ├── values-it/
│               │   └── strings.xml
│               ├── values-ja/
│               │   └── strings.xml
│               ├── values-ko/
│               │   └── strings.xml
│               ├── values-nl/
│               │   └── strings.xml
│               ├── values-pt/
│               │   └── strings.xml
│               ├── values-pt-rBR/
│               │   └── strings.xml
│               ├── values-ro/
│               │   └── strings.xml
│               ├── values-sw600dp/
│               │   └── dimens.xml
│               ├── values-sw720dp-land/
│               │   └── dimens.xml
│               ├── values-v11/
│               │   └── styles.xml
│               ├── values-v14/
│               │   └── styles.xml
│               ├── values-zh-rCN/
│               │   └── strings.xml
│               └── xml/
│                   ├── keymap.xml
│                   └── settings.xml
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Built application files
/*/build/
app/src/main/libs
app/src/main/objs
build/

# Crashlytics configuations
com_crashlytics_export_strings.xml

# Local configuration file (sdk path, etc)
local.properties

# Gradle generated files
.gradle/

# Signing files
.signing/

# User-specific configurations
.idea/libraries/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
*.iml

# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
*.bak

================================================
FILE: .idea/gradle.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GradleSettings">
    <option name="linkedExternalProjectsSettings">
      <GradleProjectSettings>
        <option name="distributionType" value="LOCAL" />
        <option name="externalProjectPath" value="$PROJECT_DIR$" />
        <option name="gradleHome" value="E:\Android\Android Studio\gradle\gradle-2.8" />
        <option name="gradleJvm" value="1.7" />
        <option name="modules">
          <set>
            <option value="$PROJECT_DIR$" />
            <option value="$PROJECT_DIR$/app" />
          </set>
        </option>
      </GradleProjectSettings>
    </option>
  </component>
</project>

================================================
FILE: .idea/runConfigurations.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RunConfigurationProducerService">
    <option name="ignoredProducers">
      <set>
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
        <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
      </set>
    </option>
  </component>
</project>

================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    {one line to give the program's name and a brief idea of what it does.}
    Copyright (C) {year}  {name of author}

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    {project}  Copyright (C) {year}  {fullname}
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
# nds4droid
nds4droid is a free (including ad-free) open source Nintendo DS emulator for Android smartphones. It is based off of [DeSmuME](https://en.wikipedia.org/wiki/DeSmuME) and has a wide variety of options for balancing performance and accuracy. In addition, it has been translated into several languages. Enjoy!


================================================
FILE: app/build.gradle
================================================
apply plugin: 'com.android.application'

android {
    compileSdkVersion 10
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.opendoorstudios.ds4droid"
        minSdkVersion 10
        targetSdkVersion 10
    }

    sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = []
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    lintOptions {
        checkReleaseBuilds false
    }
}

dependencies {
    compile files('libs/ouya-sdk.jar')
}


================================================
FILE: app/lint.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<lint>
</lint>

================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.opendoorstudios.ds4droid"
    android:versionCode="47"
    android:versionName="47"
    android:installLocation="auto" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
    
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
	<uses-feature android:name="android.hardware.touchscreen" android:required="false"/> 
		    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
        android:configChanges="keyboardHidden|orientation"
        android:name="ds4droidApplication">
        
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="tv.ouya.intent.category.GAME" />
            </intent-filter>
        </activity>

        <activity android:name=".FileDialog">
            <intent-filter>
                <action android:name="android.intent.action.PICK"/>
                <category android:name="android.intent.category.DEFAULT"/>
			</intent-filter>
        </activity>
		
		<activity
			android:name="com.opendoorstudios.ds4droid.NDSScanner.CollectionActivity"
			android:label="@string/app_name" >
			
			<intent-filter>
                <action android:name="android.intent.action.PICK"/>
                <category android:name="android.intent.category.DEFAULT"/>
			</intent-filter>
		</activity>
        
        <activity android:name=".Settings">
        </activity>
        
        <activity android:name=".ButtonLayoutEditor">
        </activity>
        
        <activity android:name=".KeyMapSettings"/>
        
        <activity android:name=".Cheats"/>
        
        <activity android:name=".About" />
        
    </application>

</manifest>

================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/About.java
================================================
package com.opendoorstudios.ds4droid;

import android.app.Activity;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.widget.TextView;

public class About extends Activity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.about);
		
		final TextView textVersion = (TextView)findViewById(R.id.about_versionstring);
		
		final StringBuilder build = new StringBuilder();
		
		String family, library;
		
		DeSmuME.load();
		
		switch(DeSmuME.getCPUFamily()) {
		case 1: family = "ARM"; break;
		case 2: family = "x86"; break;
		default: family = "unknown"; break;
		}
		
		switch(DeSmuME.getCPUType()) {
		case DeSmuME.CPUTYPE_COMPAT: library = "compat"; break;
		case DeSmuME.CPUTYPE_V7: library = "v7"; break;
		case DeSmuME.CPUTYPE_NEON: library = "neon"; break;
		default: library = "unknown";
		}
		
		String version = null;
		try {
			version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(version == null)
			version = "unknown";
		
		build.append(getString(R.string.app_name)).append(" ").append(version).append(
						" ").append(family).append("/").append(library);
		
		textVersion.setText(build.toString());
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/Button.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.util.HashMap;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.preference.PreferenceManager;

class Button {
	
	Button(int id) {
		this.id = id;
		this.position = null;
		this.bitmap = null;
	}
	
	Button(Rect position, int id) {
		this.position = position;
		this.id = id;
		this.bitmap = null;
	}
	
	Button(Rect position, int id, Bitmap bitmap) {
		this.position = position;
		this.id = id;
		this.bitmap = bitmap;
	}
	
	static final Button L_PORT_DEFAULT = new Button(new Rect(0, 590, 160, 680), Button.BUTTON_L);
	static final Button R_PORT_DEFAULT = new Button(new Rect(610, 590, 768, 680), Button.BUTTON_R);
	static final Button TOUCH_PORT_DEFAULT = new Button(new Rect(320, 590, 441, 659), Button.BUTTON_TOUCH);
	static final Button DPAD_PORT_DEFAULT = new Button(new Rect(0, 760, 334, 1074), Button.BUTTON_DPAD);
	static final Button ABXY_PORT_DEFAULT = new Button(new Rect(397, 755, 759, 1072), Button.BUTTON_ABXY);
	static final Button START_PORT_DEFAULT = new Button(new Rect(270, 1082, 366, 1147), Button.BUTTON_START);
	static final Button SELECT_PORT_DEFAULT = new Button(new Rect(400, 1082, 485, 1145), Button.BUTTON_SELECT);
	//static final Button FASTFORWARD_PORT_DEFAULT = new Button(new Rect(595, 1190, 713, 1281), Button.BUTTON_FASTFORWARD);
	static final Button OPTIONS_DEFAULT = new Button(new Rect(620, 1068, 768, 1152), Button.BUTTON_OPTIONS);
	
	static final Button L_LAND_DEFAULT = new Button(new Rect(0, 0, 160, 90), Button.BUTTON_L);
	static final Button R_LAND_DEFAULT = new Button(new Rect(994, 0, 1152, 90), Button.BUTTON_R);
	static final Button DPAD_LAND_DEFAULT = new Button(new Rect(0, 454, 334, 768), Button.BUTTON_DPAD);
	static final Button ABXY_LAND_DEFAULT = new Button(new Rect(770, 451, 1132, 768), Button.BUTTON_ABXY);
	static final Button START_LAND_DEFAULT = new Button(new Rect(380, 703, 476, 768), Button.BUTTON_START);
	static final Button TOUCH_LAND_DEFAULT = new Button(new Rect(506, 703, 627, 768), Button.BUTTON_TOUCH);
	static final Button SELECT_LAND_DEFAULT = new Button(new Rect(667, 703, 752, 768), Button.BUTTON_SELECT);
	//static final Button FASTFORWARD_LAND_DEFAULT = new Button(new Rect(487, 0, 645, 90), Button.BUTTON_FASTFORWARD);
	static final Button OPTIONS_LAND_DEFAULT = new Button(new Rect(502, 0, 650, 84), Button.BUTTON_OPTIONS);
	
	
	static final HashMap<Integer, Button> portraitToDefault;
	static final HashMap<Integer, Button> landscapeToDefault;
	
	static {
		portraitToDefault = new HashMap<Integer, Button>();
		portraitToDefault.put(Button.BUTTON_L, L_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_R, R_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_TOUCH, TOUCH_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_DPAD, DPAD_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_ABXY, ABXY_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_START, START_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_SELECT, SELECT_PORT_DEFAULT);
		//portraitToDefault.put(Button.BUTTON_FASTFORWARD, FASTFORWARD_PORT_DEFAULT);
		portraitToDefault.put(Button.BUTTON_OPTIONS, OPTIONS_DEFAULT);
		
		landscapeToDefault = new HashMap<Integer, Button>();
		landscapeToDefault.put(Button.BUTTON_L, L_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_R, R_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_TOUCH, TOUCH_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_DPAD, DPAD_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_ABXY, ABXY_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_START, START_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_SELECT, SELECT_LAND_DEFAULT);
		//landscapeToDefault.put(Button.BUTTON_FASTFORWARD, FASTFORWARD_LAND_DEFAULT);
		landscapeToDefault.put(Button.BUTTON_OPTIONS, OPTIONS_LAND_DEFAULT);
	}
	
	static Button load(Context context, int id, int resId, boolean landscape, boolean is565, Rect screen, Rect space, boolean forceLoad) {
		
		final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
		final String prefLayoutBase = "Controls." + (landscape ? "Landscape." : "Portrait.");
		final String prefBase = prefLayoutBase + getButtonName(id) + "." ;
		final Button template = landscape ? landscapeToDefault.get(id) : portraitToDefault.get(id);
		if(forceLoad || prefs.getBoolean(prefLayoutBase + "Draw" , true)) {
			float controlxscale = (float)screen.width() / (float)space.width();
			float controlyscale = (float)screen.height() / (float)space.height();

			final Rect finalRect = new Rect(prefs.getInt(prefBase + "Left", (int) (template.position.left * controlxscale)),
					prefs.getInt(prefBase + "Top", (int) (template.position.top * controlyscale)),
					prefs.getInt(prefBase + "Right", (int) (template.position.right * controlxscale)),
					prefs.getInt(prefBase + "Bottom", (int) (template.position.bottom * controlyscale)));
	
			final BitmapFactory.Options controlOptions = new BitmapFactory.Options();
			if(is565)
				controlOptions.inPreferredConfig = Bitmap.Config.RGB_565;
			final Bitmap originalControls = BitmapFactory.decodeResource(context.getResources(), resId, controlOptions);
			final Bitmap controls = Bitmap.createScaledBitmap(originalControls, finalRect.width(), finalRect.height(), true);
			return new Button(finalRect, id, controls);
		}
		else
			return new Button(template.position, id);
		
	}
	
	static String getButtonName(int id) {
		switch(id) {
		case BUTTON_RIGHT: return "Right";
		case BUTTON_DOWN: return "Down";
		case BUTTON_UP: return "Up";
		case BUTTON_LEFT: return "Left";
		case BUTTON_A: return "A";
		case BUTTON_B: return "B";
		case BUTTON_X: return "X";
		case BUTTON_Y: return "Y";
		case BUTTON_L: return "L";
		case BUTTON_R: return "R";
		case BUTTON_START: return "Start";
		case BUTTON_SELECT: return "Select";
		case BUTTON_TOUCH: return "Touch";
		case BUTTON_DPAD: return "DPad";
		case BUTTON_ABXY: return "ABXY";
		case BUTTON_UPLEFT: return "UpLeft";
		case BUTTON_UPRIGHT: return "UpRight";
		case BUTTON_DOWNLEFT: return "DownLeft";
		case BUTTON_DOWNRIGHT: return "DownRight";
		case BUTTON_OPTIONS: return "Options";
		//case BUTTON_FASTFORWARD: return "Fast forward";
		default: return "Unknown";
		}
	}
	
	void apply(int[] states, boolean on) {
		final int val = on ? 1 : 0;
		switch(id) {
		case BUTTON_UPLEFT:
			states[Button.BUTTON_UP] = states[Button.BUTTON_LEFT] = val;
			break;
		case BUTTON_UPRIGHT:
			states[Button.BUTTON_UP] = states[Button.BUTTON_RIGHT] = val;
			break;
		case BUTTON_DOWNLEFT:
			states[Button.BUTTON_DOWN] = states[Button.BUTTON_LEFT] = val;
			break;
		case BUTTON_DOWNRIGHT:
			states[Button.BUTTON_DOWN] = states[Button.BUTTON_RIGHT] = val;
			break;
		default:
			if(id >= 0 && id < states.length)
				states[id] = val;
			break;
		}
	}
	
	void applyToPrefs(SharedPreferences prefs, boolean landscape, boolean overwrite) {
		final String prefLayoutBase = "Controls." + (landscape ? "Landscape." : "Portrait.");
		final String prefBase = prefLayoutBase + getButtonName(id) + "." ;
		if(prefs.contains(prefBase + "Left") && !overwrite)
			return;
		prefs.edit().putInt(prefBase + "Left", position.left).putInt(prefBase + "Top", position.top).putInt(prefBase + "Right", position.right).putInt(prefBase + "Bottom", position.bottom).apply();
	}
	
	static final int BUTTON_RIGHT = 0;
	static final int BUTTON_DOWN = 1;
	static final int BUTTON_UP = 2;
	static final int BUTTON_LEFT = 3;
	static final int BUTTON_A = 4;
	static final int BUTTON_B = 5;
	static final int BUTTON_X = 6;
	static final int BUTTON_Y = 7;
	static final int BUTTON_L = 8;
	static final int BUTTON_R = 9;
	static final int BUTTON_START = 10;
	static final int BUTTON_SELECT = 11;
	
	//meta buttons, aren't actually passed down
	static final int BUTTON_TOUCH = 12;
	static final int BUTTON_DPAD = 13;
	static final int BUTTON_ABXY = 14;
	static final int BUTTON_UPLEFT = 15;
	static final int BUTTON_UPRIGHT = 16;
	static final int BUTTON_DOWNLEFT = 17;
	static final int BUTTON_DOWNRIGHT = 18;
	static final int BUTTON_OPTIONS = 19;
	//static final int BUTTON_FASTFORWARD = 20;
	
	final Bitmap bitmap;
	Rect position;
	final int id;
}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/ButtonLayoutEditor.java
================================================
package com.opendoorstudios.ds4droid;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class ButtonLayoutEditor extends Activity {
	
	final int[] buttonsToLoad = { Button.BUTTON_L, Button.BUTTON_R, Button.BUTTON_TOUCH, Button.BUTTON_SELECT,
			Button.BUTTON_START, Button.BUTTON_DPAD, Button.BUTTON_ABXY, Button.BUTTON_OPTIONS };
	final int[] buttonResIds = { R.drawable.l, R.drawable.r, R.drawable.touch, R.drawable.select,
			R.drawable.start, R.drawable.dpad, R.drawable.abxy, R.drawable.menu	};
	
	Bundle savedValues = null;
	ButtonEditorView view = null;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(view = new ButtonEditorView(this));
		savedValues = savedInstanceState;
	}
	
	@Override
	public void onStop() {
		super.onStop();
		final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
		for(Editing button : view.buttons) {
			if(!button.position.equals(button.button.position)) {
				button.button.position = button.position;
				button.button.applyToPrefs(prefs, view.landscape, true);
			}
		}
	}
	
	static class Editing {
		Editing(Button button) {
			this.button = button;
			sourceBitmapRect = new Rect(0, 0, button.bitmap.getWidth(), button.bitmap.getHeight());
			position = new Rect(button.position.left, button.position.top, button.position.right, button.position.bottom);
		}
		final Button button;
		int startX;
		int startY;
		final Rect sourceBitmapRect;
		Rect startRect;
		Rect position;
	}
	
	class ButtonEditorView extends SurfaceView implements Callback {

		public ButtonEditorView(Context context) {
			super(context);
			setWillNotDraw(false);
			getHolder().addCallback(this);
			
			scaleDetector = new ScaleGestureDetector(ButtonLayoutEditor.this, new ScaleListener());
		}
		
		final ScaleGestureDetector scaleDetector;
		
		class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
			
			@Override
			public boolean onScaleBegin(ScaleGestureDetector detector) {
				int x = (int)detector.getFocusX();
				int y = (int)detector.getFocusY();
				for(Editing button : buttons) {
					if(button.position.contains(x, y)) {
						scaling = button;
						invalidate();
						break;
					}
				}
				handledScaleEvent = true;
				return true;
			}
			
			@Override
			public boolean onScale(ScaleGestureDetector detector) {
				if(scaling == null)
					return false;
				//Log.i(MainActivity.TAG, "Scale factor: " + detector.getScaleFactor());
				
				final int scaleX = (int) (scaling.position.width() * (detector.getScaleFactor() - 1.0f));
				final int scaleY = (int) (scaling.position.height() * (detector.getScaleFactor() - 1.0f));
				//TODO: weigh the initial spot
				scaling.position.left -= (scaleX / 2);
				scaling.position.right += (scaleX / 2);
				scaling.position.top -= (scaleY / 2);
				scaling.position.bottom += (scaleY / 2);
				invalidate();
				handledScaleEvent = true;
				return true;
			}
			
			@Override
			public void onScaleEnd(ScaleGestureDetector detector) {
				scaling = null;
				handledScaleEvent = true;
			}
			
		}
		
		final ArrayList<Editing> buttons = new ArrayList<Editing>();
		boolean landscape;
		
		@Override
		public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
			
			landscape = width > height;
			boolean is565 = format == PixelFormat.RGB_565;
			
			for(int i = 0 ; i < buttonsToLoad.length ; ++i) {
				final int id = buttonsToLoad[i];
				final Button button = Button.load(ButtonLayoutEditor.this, id, buttonResIds[i], 
						landscape, is565, new Rect(0, 0, width, height), landscape ? Controls.defaultLandSpace : Controls.defaultPortSpace, true);
				
				if(savedValues != null) {
					final Object saved = savedValues.get(Button.getButtonName(id));
					if(saved != null && saved instanceof Rect) 
						button.position = (Rect)saved;
				}
				buttons.add(new Editing(button));
			}
			savedValues = null;
			invalidate();
			
		}
		
		@Override
		public void onDraw(Canvas canvas) {
			for(Editing button : buttons) {
				if(button.button.bitmap != null)
					canvas.drawBitmap(button.button.bitmap, button.sourceBitmapRect, button.position, null);
			}
		}

		@Override
		public void surfaceCreated(SurfaceHolder holder) {
	
		}

		@Override
		public void surfaceDestroyed(SurfaceHolder holder) {
		}
		
		
		final HashMap<Integer, Editing> editing = new HashMap<Integer, Editing>();
		Editing scaling = null;
		boolean handledScaleEvent = false;
		
		@Override
		public boolean onTouchEvent(MotionEvent event) {
			scaleDetector.onTouchEvent(event);
			if(handledScaleEvent) {
				handledScaleEvent = false;
				return true;
			}
				
			
			int i = event.getActionIndex();
			int id = event.getPointerId(i);
			int x = (int) event.getX(i);
			int y = (int) event.getY(i);
			final Editing edit = editing.get(id);
			switch(event.getActionMasked()) {
			case MotionEvent.ACTION_DOWN:
			case MotionEvent.ACTION_POINTER_DOWN:
				for(Editing button : buttons) {
					if(button.position.contains(x, y)) {
						button.startX = x;
						button.startY = y;
						button.startRect = new Rect(button.position.left, button.position.top, button.position.right, button.position.bottom);
						editing.put(id, button);
						invalidate();
						break;
					}
				}
				break;
			case MotionEvent.ACTION_MOVE:
			case MotionEvent.ACTION_UP:
				if(edit != null) {
					final int deltaX = x - edit.startX;
					final int deltaY = y - edit.startY;
					edit.position.left = edit.startRect.left + deltaX;
					edit.position.right = edit.startRect.right + deltaX;
					edit.position.top = edit.startRect.top + deltaY;
					edit.position.bottom = edit.startRect.bottom + deltaY;
					if(event.getActionMasked() == MotionEvent.ACTION_UP) {
						editing.remove(id);
					}
					invalidate();
				}
				break;
			case MotionEvent.ACTION_CANCEL:
				if(edit != null)
					editing.remove(edit);
				invalidate();
				break;
			}
			return true;
		}

		
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/Cheats.java
================================================
package com.opendoorstudios.ds4droid;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.TextView;

public class Cheats extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.cheats);
		
		inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
		
		cheatList = (ListView) findViewById(R.id.cheatList);
		cheatList.setAdapter(adapter = new CheatAdapter());
		
		final android.widget.Button addButton = (android.widget.Button)findViewById(R.id.addcheat);
		addButton.setOnClickListener(new android.view.View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				currentlyEditing = -1;
				showEditDialog();
			}
		});
		
		
	}
	
	CheatAdapter adapter = null;
	ListView cheatList = null;
	LayoutInflater inflater;
	int currentlyEditing = -1;
	TextView editingDescription, editingCode;
	boolean editingCheckedState = false;
	
	void showEditDialog() {
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);
		View cheatEditView;
		final AlertDialog dialog = builder.setPositiveButton(R.string.OK, new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				if(currentlyEditing == -1) 
					DeSmuME.addCheat(editingDescription.getText().toString(), editingCode.getText().toString());
				else
					DeSmuME.updateCheat(editingDescription.getText().toString(), editingCode.getText().toString(), currentlyEditing);
				DeSmuME.saveCheats();
				adapter.notifyDataSetChanged();
				dialog.dismiss();
			}
			
		}).setNegativeButton(R.string.cancel, new OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
			}
			
		}).setView(cheatEditView = inflater.inflate(R.layout.cheatedit, null)).create();
		
		editingDescription = (TextView) cheatEditView.findViewById(R.id.cheatDesc);
		editingCode = (TextView) cheatEditView.findViewById(R.id.cheatCode);
		
		if(currentlyEditing != -1) {
			
			editingDescription.setText(DeSmuME.getCheatName(currentlyEditing));
			editingCode.setText(DeSmuME.getCheatCode(currentlyEditing));
		}
		dialog.show();
	}
	
	class CheatAdapter extends BaseAdapter {

		@Override
		public int getCount() {
			return DeSmuME.getNumberOfCheats();
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			if(convertView == null) {
				convertView = inflater.inflate(R.layout.cheatrow, null);
				final android.widget.Button edit = (Button) convertView.findViewById(R.id.cheatEdit);
				final android.widget.Button delete = (Button) convertView.findViewById(R.id.cheatDelete);
				edit.setOnClickListener(new android.view.View.OnClickListener() {

					@Override
					public void onClick(View v) {
						final Object tag = v.getTag();
						if(tag != null && tag instanceof Integer) {
							currentlyEditing = (Integer)tag;
							showEditDialog();
						}
					}
	
				});
				delete.setOnClickListener(new android.view.View.OnClickListener() {
					
					@Override
					public void onClick(View v) {
						final Object tag = v.getTag();
						if(tag != null && tag instanceof Integer) {
							DeSmuME.deleteCheat((Integer)tag);
							notifyDataSetChanged();
						}
					}
				});
			}
			
			final CheckBox cheatEnabled = (CheckBox) convertView.findViewById(R.id.cheatEnabled);
			cheatEnabled.setText(DeSmuME.getCheatName(position));
			editingCheckedState = true;
			cheatEnabled.setChecked(DeSmuME.getCheatEnabled(position));
			editingCheckedState = false; //dunno if we need to do this or not
			cheatEnabled.setOnCheckedChangeListener(new OnCheckedChangeListener() {

				@Override
				public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
					if(editingCheckedState)
						return;
					final Object tag = buttonView.getTag();
					if(tag != null && tag instanceof Integer)
						DeSmuME.setCheatEnabled((Integer)tag, isChecked);					
				}
				
			});
			cheatEnabled.setTag(Integer.valueOf(position));
			
			final android.widget.Button edit = (Button) convertView.findViewById(R.id.cheatEdit);
			edit.setTag(Integer.valueOf(position));
			edit.setEnabled(DeSmuME.getCheatType(position) == 1); //only support editing AR codes for now
			
			final android.widget.Button delete = (Button) convertView.findViewById(R.id.cheatDelete);
			delete.setTag(Integer.valueOf(position));
			
			return convertView;
		}
		
	}
	
	@Override
	public void onStop() {
		super.onStop();
		DeSmuME.saveCheats();
	}
	
	
}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/Controls.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map.Entry;

import com.opendoorstudios.ds4droid.MainActivity.NDSView;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.preference.PreferenceManager;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
import android.view.MotionEvent;

class Controls {
	
	float xscale = 0, yscale = 0;
	final Paint controlsPaint = new Paint();
	NDSView view;
	boolean landscape;
	int currentAlpha = -1;
	Rect screen;
	int screenWidth = 0, screenHeight = 0;
	int xBlack = 0, yBlack = 0;
	
	Controls(NDSView view) {
		this.view = view;
	}
	
	public void setView(NDSView view) {
		this.view = view;
	}
	
	Button touchButton;
	//Button fastForwardButton;
	Button optionsButton;
	
	final SparseArray<int[]> keyMappings = new SparseArray<int[]>();
	
	public static final int[] KEYS_WITH_MAPPINGS = new int[] { Button.BUTTON_UP, Button.BUTTON_DOWN, Button.BUTTON_LEFT, Button.BUTTON_RIGHT,
			Button.BUTTON_A, Button.BUTTON_B, Button.BUTTON_X, Button.BUTTON_Y, Button.BUTTON_START, Button.BUTTON_SELECT,
			Button.BUTTON_TOUCH, Button.BUTTON_L, Button.BUTTON_R, Button.BUTTON_OPTIONS };
	
	void loadMappings(Context context) {
		keyMappings.clear();
		
		final HashMap<Integer, LinkedList<Integer>> buildKey = new HashMap<Integer, LinkedList<Integer>>();
		
		final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
		for(int id : KEYS_WITH_MAPPINGS) {
			int map = prefs.getInt("Controls.KeyMap." + Button.getButtonName(id), 0);
			if(map != 0) {
				if(!buildKey.containsKey(map))
					buildKey.put(map, new LinkedList<Integer>());
				buildKey.get(map).add(id);
			}	
		}
		
		//iterating over hashmaps is like 10x more complicated than it needs to be
		final Iterator<Entry<Integer, LinkedList<Integer>>> it = buildKey.entrySet().iterator();
		while(it.hasNext()) {
			final Entry<Integer, LinkedList<Integer>> entry = it.next();
			final int[] thisKeysMappings = new int[entry.getValue().size()];
			int counter = 0;
			for(Integer mapping : entry.getValue()) 
				thisKeysMappings[counter++] = mapping.intValue();
			keyMappings.put(entry.getKey(), thisKeysMappings);
		}

	}
	
	void loadControls(Context context, int screenWidth, int screenHeight, int xBlack, int yBlack, int screenOption, boolean is565, boolean landscape) {
		
		screen = new Rect(0, 0, this.screenWidth = screenWidth, this.screenHeight = screenHeight);
		
		this.xBlack = xBlack;
		this.yBlack = yBlack;
		xscale = (float)(screen.width() - (xBlack * 2)) / (screenOption == 0 ? (landscape ? 512.0f : 256.0f) : 256.0f);
		yscale = (float)(screen.height() - (yBlack*2)) / (screenOption == 0 ? (landscape ? 192.0f : 384.0f) : 192.0f);
		
		for(int i = 0 ; i < buttonStates.length ; ++i)
			buttonStates[i] = 0;
		
		buttonsToDraw.clear();
		buttonsToProcess.clear();
		activeTouches.clear();
		
		this.landscape = landscape;
		
		final Rect space = landscape ? defaultLandSpace : defaultPortSpace;
		
		final Button l = Button.load(context, Button.BUTTON_L, R.drawable.l, landscape, is565, screen, space, false);
		if(l.bitmap != null) {
			buttonsToDraw.add(l);
			buttonsToProcess.add(l);
		}
		
		final Button r = Button.load(context, Button.BUTTON_R, R.drawable.r, landscape, is565, screen, space, false);
		if(r.bitmap != null) {
			buttonsToDraw.add(r);
			buttonsToProcess.add(r);
		}
		
		touchButton = Button.load(context, Button.BUTTON_TOUCH, R.drawable.touch, landscape, is565, screen, space, false);
		if(touchButton.bitmap != null) 
			buttonsToDraw.add(touchButton);
		
		
		final Button start = Button.load(context, Button.BUTTON_START, R.drawable.start, landscape, is565, screen, space, false);
		if(start.bitmap != null) {
			buttonsToDraw.add(start);
			buttonsToProcess.add(start);
		}
		
		final Button select = Button.load(context, Button.BUTTON_SELECT, R.drawable.select, landscape, is565, screen, space, false);
		if(select.bitmap != null) {
			buttonsToDraw.add(select);
			buttonsToProcess.add(select);
		}
		
		/*
		fastForwardButton = Button.load(context, Button.BUTTON_FASTFORWARD, R.drawable.ff, landscape, is565, space, space, false);
		if(fastForwardButton.bitmap != null) 
			buttonsToDraw.add(fastForwardButton);
		*/
		
		optionsButton = Button.load(context, Button.BUTTON_OPTIONS, R.drawable.menu, landscape, is565, screen, space, false);
		if(optionsButton.bitmap != null)
			buttonsToDraw.add(optionsButton);
		
		final Button dpad = Button.load(context, Button.BUTTON_DPAD, R.drawable.dpad, landscape, is565, screen, space, false);
		if(dpad.bitmap != null) {
			buttonsToDraw.add(dpad);
			
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.334f, 0.0f, 0.647f, 0.353f), Button.BUTTON_UP));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.631f, 0.35f, 0.973f, 0.643f), Button.BUTTON_RIGHT));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.0f, 0.35f, 0.356f, 0.643f), Button.BUTTON_LEFT));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.334f, 0.643f, 0.647f, 1.0f), Button.BUTTON_DOWN));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.026f, 0.047f, 0.344f, 0.334f), Button.BUTTON_UPLEFT));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.64f, 0.047f, 0.862f, 0.334f), Button.BUTTON_UPRIGHT));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.026f, 0.65f, 0.344f, 0.926f), Button.BUTTON_DOWNLEFT));
			buttonsToProcess.add(new Button(getRatioRect(dpad.position, 0.64f, 0.65f, 0.862f, 0.926f), Button.BUTTON_DOWNRIGHT));
		}
		
		final Button abxy = Button.load(context, Button.BUTTON_ABXY, R.drawable.abxy, landscape, is565, screen, space, false);
		if(abxy.bitmap != null) {
			buttonsToDraw.add(abxy);
			
			buttonsToProcess.add(new Button(getRatioRect(abxy.position, 0.317f, 0.0f, 0.676f, 0.378f), Button.BUTTON_X));
			buttonsToProcess.add(new Button(getRatioRect(abxy.position, 0.662f, 0.293f, 1.0f, 0.681f), Button.BUTTON_A));
			buttonsToProcess.add(new Button(getRatioRect(abxy.position, 0.317f, 0.611f, 0.676f, 1.0f), Button.BUTTON_B));
			buttonsToProcess.add(new Button(getRatioRect(abxy.position, 0.0f, 0.293f, 0.334f, 0.681f), Button.BUTTON_Y));
		}
		
	}
	
	static Rect getRatioRect(Rect base, float left, float top, float right, float bottom) {
		final int width = base.width();
		final int height = base.height();
		return new Rect(
				(int)(base.left + (width * left)),
				(int)(base.top + (height * top)),
				(int)(base.left + (width * right)),
				(int)(base.top + (height * bottom))
				);
	}
	
	
	//These coordinates are in our "native" coordinate space, which was arbitrarily chosen to be 768x1152 (exactly three times the DS native resolution)
	public static final Rect defaultPortSpace = new Rect(0, 0, 768, 1152);
	public static final Rect defaultLandSpace = new Rect(0, 0, 1152, 768);
	
	
	//These are the final on/off values that will get sent to the emulator.
	//They go from BUTTON_RIGHT to BUTTON_SELECT
	final int[] buttonStates = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	
	//This map goes from pointer id (from the android os) to the different buttons we have
	final SparseArray<Button> activeTouches = new SparseArray<Button>(); 
	
	final ArrayList<Button> buttonsToDraw = new ArrayList<Button>();
	final ArrayList<Button> buttonsToProcess = new ArrayList<Button>();
	
	boolean touchScreenProcess(MotionEvent event) {
		switch(event.getAction()) {
		case MotionEvent.ACTION_DOWN:
		case MotionEvent.ACTION_MOVE:
			float x = event.getX();
			float y = event.getY();
			if( x < xBlack || x > screenWidth - xBlack)
				return true;
			if( y < yBlack || y > screenHeight - yBlack)
				return true;
			x -= xBlack;
			y -= yBlack;
			x /= xscale;
			y /= yscale;
			//convert to bottom touch screen coordinates
			if(landscape && view.dontRotate) {
				final float newy = x / 1.33f;
				final float newx = (192 - y) * 1.33f;
				x = newx;
				y = newy;
			}
			if(landscape && !view.dontRotate) {
				if(!view.lcdSwap) {
					if(view.screenOption != 2) // 2 is "touch only"
						x -= 256;
					if(x >= 0)
						DeSmuME.touchScreenTouch((int)x, (int)y);
				}
				else {
					if(x < 256)
						DeSmuME.touchScreenTouch((int)x, (int)y);
				}
			}
			else {
				if(!view.lcdSwap) {
					if(view.screenOption != 2) // 2 is "touch only"
						y -= 192;
					if(y >= 0)
						DeSmuME.touchScreenTouch((int)x, (int)y);
				}
				else {
					if(y < 192)
						DeSmuME.touchScreenTouch((int)x, (int)y);
				}
			}
		
			break;
		case MotionEvent.ACTION_UP:
		case MotionEvent.ACTION_CANCEL:
			DeSmuME.touchScreenRelease();
			if(touchButton.bitmap != null && !view.forceTouchScreen && touchButton.position.contains((int)event.getX(), (int)event.getY())) {
				DeSmuME.touchScreenMode = false;
			}
			break;
		default:
			return false;
		}
		return true;		
	}
	
	boolean onTouchEvent(MotionEvent event) {
		if(xscale == 0 || yscale == 0)
			return false;
		if(DeSmuME.touchScreenMode || view.forceTouchScreen) 
			return touchScreenProcess(event);	
		else
		{
			switch(event.getActionMasked()) {
			case MotionEvent.ACTION_DOWN:
			case MotionEvent.ACTION_POINTER_DOWN:
			case MotionEvent.ACTION_MOVE:
			{
				int i = event.getActionIndex();
				int id = event.getPointerId(i);
				
				final Button existingTouch = activeTouches.get(id);
				if(existingTouch != null) {
					//reset touch, it may get re-set below but we need to deal with sliding off a button
					existingTouch.apply(buttonStates, false);
				}
				int x = (int) event.getX(i);
				int y = (int) event.getY(i);
				
				boolean pressedButton = false;
				for(Button process : buttonsToProcess) {
					if(process.position.contains(x, y)) {
						process.apply(buttonStates, true);
						activeTouches.put(id, process);
						if(view.haptic && (event.getActionMasked() != MotionEvent.ACTION_MOVE))
							view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
						pressedButton = true;
						break;
					}
				}
				/*
				if(fastForwardButton.bitmap != null && fastForwardButton.position.contains(x, y))
					DeSmuME.fastForwardMode = true;
				*/
				
				if(!pressedButton && view.alwaysTouch) 
					return touchScreenProcess(event);
					
			}
				break;
			case MotionEvent.ACTION_UP:
			case MotionEvent.ACTION_POINTER_UP:
				if(touchButton.bitmap != null && touchButton.position.contains((int)event.getX(), (int)event.getY())) {
					DeSmuME.touchScreenMode = true;
					activeTouches.clear();
					break;
				}
				/*
				if(fastForwardButton.bitmap != null && fastForwardButton.position.contains((int)event.getX(), (int)event.getY()))
					DeSmuME.fastForwardMode = false;
				*/
				if(view.alwaysTouch)
					touchScreenProcess(event);
				if(optionsButton.bitmap != null && optionsButton.position.contains((int)event.getX(), (int)event.getY()))
					view.showMenu();
				//FT
			case MotionEvent.ACTION_CANCEL:
			{
				int i = event.getActionIndex();
				int id = event.getPointerId(i);
				Button button = activeTouches.get(id);
				if(button == null)
					break;
				button.apply(buttonStates, false);
				activeTouches.remove(id);
				/*
				if(fastForwardButton.bitmap != null && fastForwardButton.position.contains((int)event.getX(), (int)event.getY()))
					DeSmuME.fastForwardMode = false;
				*/
			}
				break;
			default:
				return false;
			}
			sendStates();
			return true;
		}
	}
	
	boolean onKeyDown(int keyCode, KeyEvent event) {
		final int[] mappings = keyMappings.get(keyCode, null);
		if(mappings == null)
			return false;
		for(int button : mappings) {
			if(button >=0 && button < buttonStates.length)
				buttonStates[button] = 1;
		}
		sendStates();
		return true;
	}
	
	boolean onKeyUp(int keyCode, KeyEvent event) {
		final int[] mappings = keyMappings.get(keyCode, null);
		if(mappings == null)
			return false;
		for(int button : mappings) {
			if(button >=0 && button < buttonStates.length)
				buttonStates[button] = 0;
			else if(button == Button.BUTTON_TOUCH)
				DeSmuME.touchScreenMode = !DeSmuME.touchScreenMode;
			else if(button == Button.BUTTON_OPTIONS)
				view.showMenu();
		}
		sendStates();
		return true;
	}
	
	void sendStates() {
		DeSmuME.setButtons(buttonStates[Button.BUTTON_L], buttonStates[Button.BUTTON_R], buttonStates[Button.BUTTON_UP], buttonStates[Button.BUTTON_DOWN], buttonStates[Button.BUTTON_LEFT], buttonStates[Button.BUTTON_RIGHT], 
				buttonStates[Button.BUTTON_A], buttonStates[Button.BUTTON_B], buttonStates[Button.BUTTON_X], buttonStates[Button.BUTTON_Y], 
				buttonStates[Button.BUTTON_START], buttonStates[Button.BUTTON_SELECT], DeSmuME.lidOpen ? 1 : 0);

	}
	
	void drawControls(Canvas canvas) {
		if(view.forceTouchScreen)
			return;
		if(currentAlpha != view.buttonAlpha)
			controlsPaint.setAlpha(currentAlpha = view.buttonAlpha);
		if(DeSmuME.touchScreenMode) {
			if(touchButton.bitmap != null)
				canvas.drawBitmap(touchButton.bitmap, touchButton.position.left, touchButton.position.top, controlsPaint);
		}
		else {
			for(Button button : buttonsToDraw)  {
				if(button.bitmap != null && button.position != null)
					canvas.drawBitmap(button.bitmap, button.position.left, button.position.top, controlsPaint);
			}
		}
			
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/DeSmuME.java
================================================
package com.opendoorstudios.ds4droid;

/*
	Copyright (C) 2012 Jeffrey Quesnelle

	This file is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.preference.PreferenceManager;
import android.util.Log;

class DeSmuME {
	
	public static Context context;
	
	static boolean loaded = false;
	
	static final int CPUTYPE_COMPAT =  0;
	static final int CPUTYPE_V7 = 1;
	static final int CPUTYPE_NEON = 2;
	
	static void load()
	{
		if(loaded)
			return;
		System.loadLibrary("cpudetect");
		final int cpuType = getCPUType();
		switch(cpuType) {
		case CPUTYPE_NEON:
			System.loadLibrary("desmumeneon");
			Log.i(MainActivity.TAG, "Using NEON enhanced native library");
			break;
		case CPUTYPE_V7:
			System.loadLibrary("desmumev7");
			Log.i(MainActivity.TAG, "Using ARMv7 native library");
			break;
		default:
			System.loadLibrary("desmumecompat");
			Log.i(MainActivity.TAG, "Using compatibility native library");
			break;
		}
		loaded = true;
	}
	
	static native int getCPUType();
	static native int getCPUFamily();
	static native void init();
	static native void runCore();
	static native void resize(Bitmap bitmap);
	static native int draw(Bitmap bitmapMain, Bitmap bitmapTouch, boolean rotate);
	static native void touchScreenTouch(int x, int y);
	static native void touchScreenRelease();
	static native void setButtons(int l, int r, int up, int down, int left, int right, int a, int b, int x, int y, int start, int select, int lid);
	static native boolean loadRom(String path);
	static native void setWorkingDir(String path, String temp);
	static native void saveState(int slot);
	static native void restoreState(int slot);
	static native void loadSettings();
	static native int getNativeWidth();
	static native int getNativeHeight();
	static native void setFilter(int index);
	static native void change3D(int set);
	static native void changeSound(int set);
	static native void setSoundPaused(int set);
	static native void reloadFirmware();
	static native int getNumberOfCheats();
	static native String getCheatName(int pos);
	static native boolean getCheatEnabled(int pos);
	static native String getCheatCode(int pos);
	static native int getCheatType(int pos);
	static native void addCheat(String description, String code);
	static native void updateCheat(String description, String code, int pos);
	static native void saveCheats();
	static native void setCheatEnabled(int pos, boolean enabled);
	static native void deleteCheat(int pos);
	static native void setMicPaused(int set);
	static native void closeRom();
	static native void exit();
	static native void changeCpuMode(int mode);
	static native void changeSoundSynchMode(int mode);
	
	static boolean touchScreenMode = false;
	static boolean fastForwardMode = false;
	static boolean inited = false;
	static boolean romLoaded = false;
	static boolean lidOpen = true;
	static String loadedRom = null;
	
	public static int getSettingInt(String name, int def)
	{
		SharedPreferences pm = PreferenceManager.getDefaultSharedPreferences(context);
		if(!pm.contains(name))
			return def;
		try {
			return pm.getInt(name, def);
		}
		catch(ClassCastException e) {
		}
		try {
			String ret = pm.getString(name, String.valueOf(def));
			return Integer.valueOf(ret);
		}
		catch(ClassCastException e) {
		}
		try {
			Boolean ret = pm.getBoolean(name, def == 0 ? false : true);
			return ret.booleanValue() ? 1 : 0;
		}
		catch(ClassCastException e) {
		}
		return def;
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/EmulatorThread.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.io.File;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import android.os.Environment;
import android.preference.PreferenceManager;

class EmulatorThread extends Thread {
	
	public EmulatorThread(MainActivity activity) {
		super("EmulatorThread");
		this.activity = activity;
	}
	
	public void setCurrentActivity(MainActivity activity) {
		this.activity = activity;
	}
	
	boolean soundPaused = true;
	boolean frameFinished = false;
	long lastDraw = 0;
	final AtomicBoolean finished = new AtomicBoolean(false);
	final AtomicBoolean paused = new AtomicBoolean(false);
	String pendingRomLoad = null;
	Integer pending3DChange = null;
	Integer pendingSoundChange = null;
	Integer pendingCPUChange = null;
	Integer pendingSoundSyncModeChange = null;
	
	public void loadRom(String path) {
		pendingRomLoad = path;
		synchronized(dormant) {
			dormant.notifyAll();
		}
	}
	
	public void change3D(int set) {
		pending3DChange = set;
	}
	
	public void changeSound(int set) {
		pendingSoundChange = set;
	}
	
	public void changeCPUMode(int set) {
		pendingCPUChange = set;
	}
	
	public void changeSoundSyncMode(int set) {
		pendingSoundSyncModeChange = set;
	}
	
	public void setCancel(boolean set) {
		finished.set(set);
		synchronized(dormant) {
			dormant.notifyAll();
		}
	}
	
	public void setPause(boolean set) {
		paused.set(set);
		if(DeSmuME.inited) {
			DeSmuME.setSoundPaused(set ? 1 : 0);
			DeSmuME.setMicPaused(set ? 1 : 0);
			soundPaused = set;
		}
		synchronized(dormant) {
			dormant.notifyAll();
		}
	}
	
	Object dormant = new Object();
	
	public Lock inFrameLock = new ReentrantLock();
	int fps = 1;
	MainActivity activity = null;
	long frameCounter = 0;
	
	@Override
	public void run() {
		if(!DeSmuME.inited) {
			DeSmuME.context = activity;
			DeSmuME.load();
			
			final String defaultWorkingDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/nds4droid";
			final String path = PreferenceManager.getDefaultSharedPreferences(activity).getString(Settings.DESMUME_PATH, defaultWorkingDir);
			final File workingDir = new File(path);
			final File tempDir = new File(path + "/Temp");
			tempDir.mkdir();
			DeSmuME.setWorkingDir(workingDir.getAbsolutePath(), tempDir.getAbsolutePath() + "/");
			workingDir.mkdir();
			new File(path + "/States").mkdir();
			new File(path + "/Battery").mkdir();
			new File(path + "/Cheats").mkdir();
			
			//clear any previously extracted ROMs
			
			final File[] cacheFiles = tempDir.listFiles();
			if(cacheFiles != null) {
				for(File cacheFile : cacheFiles) {
					if(cacheFile.getAbsolutePath().toLowerCase().endsWith(".nds"))
						cacheFile.delete();
				}
			}
			
			DeSmuME.init();
			DeSmuME.inited = true;
		}
		
		while(!finished.get()) {
			if(pendingRomLoad != null) {
				activity.msgHandler.sendEmptyMessage(MainActivity.LOADING_START);
				if(DeSmuME.romLoaded)
					DeSmuME.closeRom();
				if(!DeSmuME.loadRom(pendingRomLoad)) {
					activity.msgHandler.sendEmptyMessage(MainActivity.LOADING_END);
					activity.msgHandler.sendEmptyMessage(MainActivity.ROM_ERROR);
					DeSmuME.romLoaded = false;
					DeSmuME.loadedRom = null;
				}
				else {
					activity.msgHandler.sendEmptyMessage(MainActivity.LOADING_END);
					DeSmuME.romLoaded = true;
					DeSmuME.loadedRom = pendingRomLoad;
					setPause(false);
				}
				pendingRomLoad = null;
			}
			if(pending3DChange != null) {
				DeSmuME.change3D(pending3DChange.intValue());
				pending3DChange = null;
			}
			if(pendingSoundChange != null) {
				DeSmuME.changeSound(pendingSoundChange.intValue());
				pendingSoundChange = null;
			}
			if(pendingCPUChange != null) {
				DeSmuME.changeCpuMode(pendingCPUChange.intValue());
				pendingCPUChange = null;
			}
			if(pendingSoundSyncModeChange != null) {
				DeSmuME.changeSoundSynchMode(pendingSoundSyncModeChange.intValue());
				pendingSoundSyncModeChange = null;
			}
			
			if(!paused.get()) {
				
				if(soundPaused) {
					DeSmuME.setSoundPaused(0);
					DeSmuME.setMicPaused(0);
					soundPaused = false;
				}
				
				inFrameLock.lock();
				do {
					DeSmuME.runCore();
				} while(DeSmuME.fastForwardMode); 
				inFrameLock.unlock();
				frameFinished = true;

			} 
			else {
				//hacky, but keeps thread alive so we don't lose contexts
				try {
					synchronized(dormant) {
						dormant.wait();
					}
				} 
				catch (InterruptedException e) {
				} 
			}
		}
	}
}

================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/FileDialog.java
================================================
package com.opendoorstudios.ds4droid;

/*
	Copyright (C) 2012 Jeffrey Quesnelle

	This file is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


//This originally came from http://code.google.com/p/android-file-dialog/

public class FileDialog extends ListActivity {
	
	public static class SelectionMode {
		public static final int MODE_CREATE = 0;

		public static final int MODE_OPEN = 1;
	}


	private static final String ITEM_KEY = "key";


	private static final String ITEM_IMAGE = "image";


	private static final String ROOT = "/";


	public static final String START_PATH = "START_PATH";


	public static final String FORMAT_FILTER = "FORMAT_FILTER";


	public static final String RESULT_PATH = "RESULT_PATH";


	public static final String SELECTION_MODE = "SELECTION_MODE";


	public static final String CAN_SELECT_DIR = "CAN_SELECT_DIR";

	private List<String> path = null;
	private TextView myPath;
	private EditText mFileName;
	private ArrayList<HashMap<String, Object>> mList;

	private String parentPath;
	private String currentPath = ROOT;

	private int selectionMode = SelectionMode.MODE_CREATE;

	private String[] formatFilter = null;

	private boolean canSelectDir = false;

	private File selectedFile;
	private HashMap<String, Integer> lastPositions = new HashMap<String, Integer>();


	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setResult(RESULT_CANCELED, getIntent());

		setContentView(R.layout.file_dialog_main);
		myPath = (TextView) findViewById(R.id.path);


		selectionMode = getIntent().getIntExtra(SELECTION_MODE, SelectionMode.MODE_CREATE);

		formatFilter = getIntent().getStringArrayExtra(FORMAT_FILTER);

		canSelectDir = getIntent().getBooleanExtra(CAN_SELECT_DIR, false);


		String startPath = getIntent().getStringExtra(START_PATH);
		startPath = startPath != null ? startPath : ROOT;
		if (canSelectDir) {
			File file = new File(startPath);
			selectedFile = file;
		}
		getDir(startPath);
	}

	private void getDir(String dirPath) {

		boolean useAutoSelection = dirPath.length() < currentPath.length();

		Integer position = lastPositions.get(parentPath);

		getDirImpl(dirPath);

		if (position != null && useAutoSelection) {
			getListView().setSelection(position);
		}

	}


	private void getDirImpl(final String dirPath) {

		currentPath = dirPath;

		final List<String> item = new ArrayList<String>();
		path = new ArrayList<String>();
		mList = new ArrayList<HashMap<String, Object>>();

		File f = new File(currentPath);
		File[] files = f.listFiles();
		if (files == null) {
			currentPath = ROOT;
			f = new File(currentPath);
			files = f.listFiles();
		}
		StringBuilder pathString = new StringBuilder(getText(R.string.location) + ": " + currentPath);
		if(formatFilter != null) {
			if(formatFilter.length > 0) {
				pathString.append(" (");
				for(int i = 0 ; i < formatFilter.length ; ++i) {
					pathString.append(formatFilter[i]);
					if(i != formatFilter.length - 1)
						pathString.append(", ");
				}
				pathString.append(")");
			}
		}
		myPath.setText(pathString.toString());

		if (!currentPath.equals(ROOT)) {

			item.add(ROOT);
			addItem(ROOT, R.drawable.folder);
			path.add(ROOT);

			item.add("../");
			addItem("../", R.drawable.updirectory);
			path.add(f.getParent());
			parentPath = f.getParent();

		}

		TreeMap<String, String> dirsMap = new TreeMap<String, String>();
		TreeMap<String, String> dirsPathMap = new TreeMap<String, String>();
		TreeMap<String, String> filesMap = new TreeMap<String, String>();
		TreeMap<String, String> filesPathMap = new TreeMap<String, String>();
		for (File file : files) {
			if (file.isDirectory()) {
				String dirName = file.getName();
				dirsMap.put(dirName, dirName);
				dirsPathMap.put(dirName, file.getPath());
			} else {
				final String fileName = file.getName();
				final String fileNameLwr = fileName.toLowerCase();
				
				if (formatFilter != null) {
					boolean contains = false;
					for (int i = 0; i < formatFilter.length; i++) {
						final String formatLwr = formatFilter[i].toLowerCase();
						if (fileNameLwr.endsWith(formatLwr)) {
							contains = true;
							break;
						}
					}
					if (contains) {
						filesMap.put(fileName, fileName);
						filesPathMap.put(fileName, file.getPath());
					}
					
				} else {
					filesMap.put(fileName, fileName);
					filesPathMap.put(fileName, file.getPath());
				}
			}
		}
		item.addAll(dirsMap.tailMap("").values());
		item.addAll(filesMap.tailMap("").values());
		path.addAll(dirsPathMap.tailMap("").values());
		path.addAll(filesPathMap.tailMap("").values());

		SimpleAdapter fileList = new SimpleAdapter(this, mList, R.layout.file_dialog_row, new String[] {
				ITEM_KEY, ITEM_IMAGE }, new int[] { R.id.fdrowtext, R.id.fdrowimage });

		for (String dir : dirsMap.tailMap("").values()) {
			addItem(dir, R.drawable.folder);
		}

		for (String file : filesMap.tailMap("").values()) {
			addItem(file, R.drawable.file);
		}

		fileList.notifyDataSetChanged();

		setListAdapter(fileList);

	}

	private void addItem(String fileName, int imageId) {
		HashMap<String, Object> item = new HashMap<String, Object>();
		item.put(ITEM_KEY, fileName);
		item.put(ITEM_IMAGE, imageId);
		mList.add(item);
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {

		File file = new File(path.get(position));


		if (file.isDirectory()) {
			if (file.canRead()) {
				lastPositions.put(currentPath, position);
				getDir(path.get(position));
				if (canSelectDir) {
					selectedFile = file;
					v.setSelected(true);
				}
			} else {
				new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
						.setTitle("[" + file.getName() + "] " + getText(R.string.cant_read_folder))
						.setPositiveButton("OK", new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog, int which) {

							}
						}).show();
			}
		} else {
			selectedFile = file;
			v.setSelected(true);
			getIntent().putExtra(RESULT_PATH, selectedFile.getPath());
			setResult(RESULT_OK, getIntent());
			finish();
		}
	}

	

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/KeyMapPreference.java
================================================
package com.opendoorstudios.ds4droid;


import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.RelativeLayout;
import android.widget.TextView;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

public class KeyMapPreference extends DialogPreference implements OnKeyListener {

	public KeyMapPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
		currentValuePreface = context.getResources().getString(R.string.KeymapValuePreface);
	}
	
	int currentValue;
	TextView currentValueDesc;
	final String currentValuePreface;
	
	static String getKeyDesc(int value) {
		if(value == 0)
			return "(none)";
		else {
			final String ret = KEYCODE_SYMBOLIC_NAMES.get(value, "(none)");
			return ret == null ? "(unknown)" : ret;
		}
	}
	
	void sync() {
		currentValueDesc.setText(currentValuePreface + " " + getKeyDesc(currentValue));
	}
	
	@Override
	protected View onCreateDialogView() {
		currentValue = getPersistedInt(0);
		
		LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		RelativeLayout layout = (RelativeLayout)inflater.inflate(R.layout.keymap, null);
		layout.setOnKeyListener(this);
		layout.requestFocus();
		currentValueDesc = (TextView)layout.findViewById(R.id.keymap_value);
		sync();
		
		return layout;
	}
	
	@Override
	public CharSequence getSummary() {
		String summary = super.getSummary().toString();
		int value = getPersistedInt(currentValue);
		return summary + " " + getKeyDesc(value);
	}
	
	
	@Override
	public boolean onKey(View v, int keyCode, KeyEvent event) {
		/*switch(keyCode) {
		case KeyEvent.KEYCODE_HOME:
		case KeyEvent.KEYCODE_BACK:
		case KeyEvent.KEYCODE_SETTINGS:
		case KeyEvent.KEYCODE_SEARCH:
			return false;
		}*/
		currentValue = keyCode;
		sync();
		return true;
	};
	
	@Override
	protected void onDialogClosed(boolean positiveResult) {
		super.onDialogClosed(positiveResult);

		if (!positiveResult) {
			return;
		}

		if (shouldPersist()) {
			persistInt(currentValue);
		}

		notifyChanged();
	}
	
	static {
		KEYCODE_SYMBOLIC_NAMES = new SparseArray<String>();
		populateKeycodeSymbolicNames();
	}
	
	//This actually comes straight from the Android source code (android.view.KeyEvent) but it isn't in until ICS
	private static final SparseArray<String> KEYCODE_SYMBOLIC_NAMES;
    private static void populateKeycodeSymbolicNames() {
        SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES;
        names.append(KeyEvent.KEYCODE_UNKNOWN, "UNKNOWN");
        names.append(KeyEvent.KEYCODE_SOFT_LEFT, "SOFT_LEFT");
        names.append(KeyEvent.KEYCODE_SOFT_RIGHT, "SOFT_RIGHT");
        names.append(KeyEvent.KEYCODE_HOME, "HOME");
        names.append(KeyEvent.KEYCODE_BACK, "BACK");
        names.append(KeyEvent.KEYCODE_CALL, "CALL");
        names.append(KeyEvent.KEYCODE_ENDCALL, "ENDCALL");
        names.append(KeyEvent.KEYCODE_0, "0");
        names.append(KeyEvent.KEYCODE_1, "1");
        names.append(KeyEvent.KEYCODE_2, "2");
        names.append(KeyEvent.KEYCODE_3, "3");
        names.append(KeyEvent.KEYCODE_4, "4");
        names.append(KeyEvent.KEYCODE_5, "5");
        names.append(KeyEvent.KEYCODE_6, "6");
        names.append(KeyEvent.KEYCODE_7, "7");
        names.append(KeyEvent.KEYCODE_8, "8");
        names.append(KeyEvent.KEYCODE_9, "9");
        names.append(KeyEvent.KEYCODE_STAR, "STAR");
        names.append(KeyEvent.KEYCODE_POUND, "POUND");
        names.append(KeyEvent.KEYCODE_DPAD_UP, "DPAD_UP");
        names.append(KeyEvent.KEYCODE_DPAD_DOWN, "DPAD_DOWN");
        names.append(KeyEvent.KEYCODE_DPAD_LEFT, "DPAD_LEFT");
        names.append(KeyEvent.KEYCODE_DPAD_RIGHT, "DPAD_RIGHT");
        names.append(KeyEvent.KEYCODE_DPAD_CENTER, "DPAD_CENTER");
        names.append(KeyEvent.KEYCODE_VOLUME_UP, "VOLUME_UP");
        names.append(KeyEvent.KEYCODE_VOLUME_DOWN, "VOLUME_DOWN");
        names.append(KeyEvent.KEYCODE_POWER, "POWER");
        names.append(KeyEvent.KEYCODE_CAMERA, "CAMERA");
        names.append(KeyEvent.KEYCODE_CLEAR, "CLEAR");
        names.append(KeyEvent.KEYCODE_A, "A");
        names.append(KeyEvent.KEYCODE_B, "B");
        names.append(KeyEvent.KEYCODE_C, "C");
        names.append(KeyEvent.KEYCODE_D, "D");
        names.append(KeyEvent.KEYCODE_E, "E");
        names.append(KeyEvent.KEYCODE_F, "F");
        names.append(KeyEvent.KEYCODE_G, "G");
        names.append(KeyEvent.KEYCODE_H, "H");
        names.append(KeyEvent.KEYCODE_I, "I");
        names.append(KeyEvent.KEYCODE_J, "J");
        names.append(KeyEvent.KEYCODE_K, "K");
        names.append(KeyEvent.KEYCODE_L, "L");
        names.append(KeyEvent.KEYCODE_M, "M");
        names.append(KeyEvent.KEYCODE_N, "N");
        names.append(KeyEvent.KEYCODE_O, "O");
        names.append(KeyEvent.KEYCODE_P, "P");
        names.append(KeyEvent.KEYCODE_Q, "Q");
        names.append(KeyEvent.KEYCODE_R, "R");
        names.append(KeyEvent.KEYCODE_S, "S");
        names.append(KeyEvent.KEYCODE_T, "T");
        names.append(KeyEvent.KEYCODE_U, "U");
        names.append(KeyEvent.KEYCODE_V, "V");
        names.append(KeyEvent.KEYCODE_W, "W");
        names.append(KeyEvent.KEYCODE_X, "X");
        names.append(KeyEvent.KEYCODE_Y, "Y");
        names.append(KeyEvent.KEYCODE_Z, "Z");
        names.append(KeyEvent.KEYCODE_COMMA, "COMMA");
        names.append(KeyEvent.KEYCODE_PERIOD, "PERIOD");
        names.append(KeyEvent.KEYCODE_ALT_LEFT, "ALT_LEFT");
        names.append(KeyEvent.KEYCODE_ALT_RIGHT, "ALT_RIGHT");
        names.append(KeyEvent.KEYCODE_SHIFT_LEFT, "SHIFT_LEFT");
        names.append(KeyEvent.KEYCODE_SHIFT_RIGHT, "SHIFT_RIGHT");
        names.append(KeyEvent.KEYCODE_TAB, "TAB");
        names.append(KeyEvent.KEYCODE_SPACE, "SPACE");
        names.append(KeyEvent.KEYCODE_SYM, "SYM");
        names.append(KeyEvent.KEYCODE_EXPLORER, "EXPLORER");
        names.append(KeyEvent.KEYCODE_ENVELOPE, "ENVELOPE");
        names.append(KeyEvent.KEYCODE_ENTER, "ENTER");
        names.append(KeyEvent.KEYCODE_DEL, "DEL");
        names.append(KeyEvent.KEYCODE_GRAVE, "GRAVE");
        names.append(KeyEvent.KEYCODE_MINUS, "MINUS");
        names.append(KeyEvent.KEYCODE_EQUALS, "EQUALS");
        names.append(KeyEvent.KEYCODE_LEFT_BRACKET, "LEFT_BRACKET");
        names.append(KeyEvent.KEYCODE_RIGHT_BRACKET, "RIGHT_BRACKET");
        names.append(KeyEvent.KEYCODE_BACKSLASH, "BACKSLASH");
        names.append(KeyEvent.KEYCODE_SEMICOLON, "SEMICOLON");
        names.append(KeyEvent.KEYCODE_APOSTROPHE, "APOSTROPHE");
        names.append(KeyEvent.KEYCODE_SLASH, "SLASH");
        names.append(KeyEvent.KEYCODE_AT, "AT");
        names.append(KeyEvent.KEYCODE_NUM, "NUM");
        names.append(KeyEvent.KEYCODE_HEADSETHOOK, "HEADSETHOOK");
        names.append(KeyEvent.KEYCODE_FOCUS, "FOCUS");
        names.append(KeyEvent.KEYCODE_PLUS, "PLUS");
        names.append(KeyEvent.KEYCODE_MENU, "MENU");
        names.append(KeyEvent.KEYCODE_NOTIFICATION, "NOTIFICATION");
        names.append(KeyEvent.KEYCODE_SEARCH, "SEARCH");
        names.append(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, "MEDIA_PLAY_PAUSE");
        names.append(KeyEvent.KEYCODE_MEDIA_STOP, "MEDIA_STOP");
        names.append(KeyEvent.KEYCODE_MEDIA_NEXT, "MEDIA_NEXT");
        names.append(KeyEvent.KEYCODE_MEDIA_PREVIOUS, "MEDIA_PREVIOUS");
        names.append(KeyEvent.KEYCODE_MEDIA_REWIND, "MEDIA_REWIND");
        names.append(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD, "MEDIA_FAST_FORWARD");
        names.append(KeyEvent.KEYCODE_MUTE, "MUTE");
        names.append(KeyEvent.KEYCODE_PAGE_UP, "PAGE_UP");
        names.append(KeyEvent.KEYCODE_PAGE_DOWN, "PAGE_DOWN");
        names.append(KeyEvent.KEYCODE_PICTSYMBOLS, "PICTSYMBOLS");
        names.append(KeyEvent.KEYCODE_SWITCH_CHARSET, "SWITCH_CHARSET");
        
        if(!MainActivity.IS_OUYA) {
	        names.append(KeyEvent.KEYCODE_BUTTON_A, "BUTTON_A");
	        names.append(KeyEvent.KEYCODE_BUTTON_B, "BUTTON_B");
	        names.append(KeyEvent.KEYCODE_BUTTON_X, "BUTTON_X");
	        names.append(KeyEvent.KEYCODE_BUTTON_Y, "BUTTON_Y");
	        names.append(KeyEvent.KEYCODE_BUTTON_L1, "BUTTON_L1");
	        names.append(KeyEvent.KEYCODE_BUTTON_R1, "BUTTON_R1");
	        names.append(KeyEvent.KEYCODE_BUTTON_L2, "BUTTON_L2");
	        names.append(KeyEvent.KEYCODE_BUTTON_R2, "BUTTON_R2");
	        names.append(KeyEvent.KEYCODE_BUTTON_THUMBL, "BUTTON_THUMBL");
	        names.append(KeyEvent.KEYCODE_BUTTON_THUMBR, "BUTTON_THUMBR");
        }
        else {
        	//The OUYA interface guidelines wants us to call the buttons by these names
        	names.append(KeyEvent.KEYCODE_BUTTON_A, "O");
	        names.append(KeyEvent.KEYCODE_BUTTON_B, "A");
	        names.append(KeyEvent.KEYCODE_BUTTON_X, "U");
	        names.append(KeyEvent.KEYCODE_BUTTON_Y, "Y");
	        names.append(KeyEvent.KEYCODE_BUTTON_L1, "L1");
	        names.append(KeyEvent.KEYCODE_BUTTON_R1, "R1");
	        names.append(KeyEvent.KEYCODE_BUTTON_L2, "L2");
	        names.append(KeyEvent.KEYCODE_BUTTON_R2, "R2");
	        names.append(KeyEvent.KEYCODE_BUTTON_THUMBL, "L3");
	        names.append(KeyEvent.KEYCODE_BUTTON_THUMBR, "R3");
        }
        
        names.append(KeyEvent.KEYCODE_BUTTON_START, "BUTTON_START");
        names.append(KeyEvent.KEYCODE_BUTTON_SELECT, "BUTTON_SELECT");
        names.append(KeyEvent.KEYCODE_BUTTON_MODE, "BUTTON_MODE");
        names.append(KeyEvent.KEYCODE_BUTTON_Z, "BUTTON_Z");
        names.append(KeyEvent.KEYCODE_BUTTON_C, "BUTTON_C");
	    names.append(188, "KEYCODE_BUTTON_1"); //KEYCODE_BUTTON_1
    }



}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/KeyMapSettings.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class KeyMapSettings extends PreferenceActivity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.keymap);
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/MainActivity.java
================================================
package com.opendoorstudios.ds4droid;

/*
	Copyright (C) 2012 Jeffrey Quesnelle

	This file is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.io.File;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.WindowManager;

public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {

	static EmulatorThread coreThread;
	static Controls controls;
	NDSView view;
	static final String TAG = "nds4droid";
	Dialog loadingDialog = null;
	
	Handler msgHandler = new Handler() {
		
		@Override
		public
		void dispatchMessage(Message msg) {
			switch(msg.what) {
			case PICK_ROM:
				pickRom();
				break;
			case LOADING_START:
				if(loadingDialog == null) {
					final String loadingMsg = getResources().getString(R.string.loading);
					loadingDialog = ProgressDialog.show(MainActivity.this, null, loadingMsg, true);
					break;
				}
				break;
			case LOADING_END:
				if(loadingDialog != null) {
					loadingDialog.dismiss();
					loadingDialog = null;
				}
				break;
			case ROM_ERROR:
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setMessage(R.string.rom_error).setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						arg0.dismiss();
						pickRom();
					}
				}).setOnCancelListener(new OnCancelListener() {

					@Override
					public void onCancel(DialogInterface arg0) {
						arg0.dismiss();
						pickRom();
					}
					
				});
				builder.create().show();
			}
		}
		
	};
	
	public static final int PICK_ROM = 1338;
	public static final int LOADING_START = 1339;
	public static final int LOADING_END = 1340;
	public static final int ROM_ERROR = 1341;
	
	public static boolean IS_OUYA = tv.ouya.console.api.OuyaFacade.getInstance().isRunningOnOUYAHardware();
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		if(IS_OUYA)
			Log.i(TAG, "Starting in OUYA mode");

		view = new NDSView(this);
		setContentView(view);
		
		controls = new Controls(view);

		Settings.applyDefaults(this);
		prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
		prefs.registerOnSharedPreferenceChangeListener(this);
		loadJavaSettings(null);
		
		if(savedInstanceState != null) 
			timeAtLastAutosave = savedInstanceState.getLong(LASTSAVE_KEY);
		
		
		if(!DeSmuME.inited) 
			pickRom();
		
	}
	
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
	    super.onConfigurationChanged(newConfig);
	    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
	}
	
	void runEmulation() {
		boolean created = false;
		if(coreThread == null) {
			coreThread = new EmulatorThread(this);
			created = true;
		}
		else
			coreThread.setCurrentActivity(this);
		coreThread.setPause(!DeSmuME.romLoaded);
		if(created)
			coreThread.start();
	}
	
	void pauseEmulation() {
		if(coreThread != null) {
			coreThread.setPause(true);
		}
	}
	
	void pickRom() {
		Intent i = new Intent(this, prefs.getBoolean(Settings.DISABLE_ROM_BROWSER, false) ? 
				FileDialog.class : com.opendoorstudios.ds4droid.NDSScanner.CollectionActivity.class);
		i.setAction(Intent.ACTION_PICK);
		
		String startPath = Environment.getExternalStorageDirectory().getPath();
		final File path = new File(prefs.getString(Settings.LAST_ROM_DIR, startPath));
		if(path.exists()) //make sure this path actually exists -- otherwise default back to /mnt/sdcard/
			startPath = path.getPath();
		
		i.putExtra(FileDialog.START_PATH, startPath);
		i.putExtra(FileDialog.FORMAT_FILTER, new String[] {".nds", ".zip", ".7z", ".rar"});
		startActivityForResult(i, PICK_ROM);
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if(requestCode != PICK_ROM || resultCode != Activity.RESULT_OK)
			return;
		String romPath = data.getStringExtra(FileDialog.RESULT_PATH);
		if(romPath != null) {
			final File romDir = new File(romPath);
			prefs.edit().putString(Settings.LAST_ROM_DIR, romDir.getParent()).apply();
			runEmulation();
			coreThread.loadRom(romPath);
			timeAtLastAutosave = System.currentTimeMillis();
			scheduleAutosave();
		}
			
	}
	
	private static final String LASTSAVE_KEY = "LASTSAVE_KEY";
	
	@Override
	public void onSaveInstanceState(Bundle out) {
		out.putLong(LASTSAVE_KEY, timeAtLastAutosave);
	}
	
	@Override
	public void onResume() {
		super.onResume();
		runEmulation();
		startDrawTimer();
		if(DeSmuME.romLoaded)
			scheduleAutosave();
	}
	
	@Override
	public void onPause() {
		super.onPause();
		pauseEmulation();
		stopDrawTimer();
		cancelAutosave();
	}
	
	Timer drawtimer;
	void startDrawTimer() { 
		drawtimer = new Timer();
		drawtimer.schedule(new TimerTask() {
			public void run(){
				if(coreThread.frameFinished) {
					coreThread.frameFinished = false;
					view.postInvalidate();
				}
					
			}
		}, 12, 12);
	}
	
	void stopDrawTimer() {
		if (drawtimer != null)
			drawtimer.cancel();
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.activity_main, menu);
	    return true;
	}
	
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		pauseEmulation();
		menu.findItem(R.id.cheats).setVisible(DeSmuME.romLoaded);
		menu.findItem(R.id.lid).setChecked(DeSmuME.lidOpen);
		
		final String defaultWorkingDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/nds4droid";
		final String statesPath = prefs.getString(Settings.DESMUME_PATH, defaultWorkingDir) + "/States/";
		
		String romSaveName = DeSmuME.loadedRom != null ? new File(DeSmuME.loadedRom).getName() : null;
		if(romSaveName != null)
			romSaveName = romSaveName.substring(0, romSaveName.lastIndexOf('.'));
		
		for(int i = 1 ; i <= 10 ; ++i) {
			
			MenuItem saveItem = null, loadItem = null;
			switch(i) {
			case 1: saveItem = menu.findItem(R.id.save1); loadItem = menu.findItem(R.id.restore1); break;
			case 2: saveItem = menu.findItem(R.id.save2); loadItem = menu.findItem(R.id.restore2); break;
			case 3: saveItem = menu.findItem(R.id.save3); loadItem = menu.findItem(R.id.restore3); break;
			case 4: saveItem = menu.findItem(R.id.save4); loadItem = menu.findItem(R.id.restore4); break;
			case 5: saveItem = menu.findItem(R.id.save5); loadItem = menu.findItem(R.id.restore5); break;
			case 6: saveItem = menu.findItem(R.id.save6); loadItem = menu.findItem(R.id.restore6); break;
			case 7: saveItem = menu.findItem(R.id.save7); loadItem = menu.findItem(R.id.restore7); break;
			case 8: saveItem = menu.findItem(R.id.save8); loadItem = menu.findItem(R.id.restore8); break;
			case 9: saveItem = menu.findItem(R.id.save9); loadItem = menu.findItem(R.id.restore9); break;
			case 10: loadItem = menu.findItem(R.id.restoreauto); break;
			}
			
			String newTitle = i == 10 ? "Autosave" : String.valueOf(i);
			
			if(romSaveName != null) {
				final File thisSave = new File(statesPath + romSaveName + ".ds" + i);
				if(thisSave.exists()) {
					final String date = new Date(thisSave.lastModified()).toString();
					if(i == 10)
						newTitle = "Autosave - " + date;
					else
						newTitle = String.format("%d - %s", i, date);
				}
			}
			
			if(i != 10)
				saveItem.setTitle(newTitle);
			loadItem.setTitle(newTitle);
		}
		
		return true;
	}
	
	@Override
	public void onOptionsMenuClosed(Menu menu) {
		runEmulation();
	}
	
	@Override
	public boolean onMenuItemSelected (int featureId, MenuItem item) {
		switch(item.getItemId()) {
		case R.id.load:
			pickRom();
			break;
		case R.id.quicksave:
			saveState(0);
			break;
		case R.id.quickrestore:
			restoreState(0);
			break;
		case R.id.restore1: case R.id.restore2: case R.id.restore3: case R.id.restore4: case R.id.restore5:
		case R.id.restore6: case R.id.restore7: case R.id.restore8: case R.id.restore9: case R.id.restoreauto:
		{
			String title = item.getTitle().toString();
			final int spacePos = title.indexOf(' ');
			if(spacePos != -1)
				title = title.substring(0, spacePos);
			final int state = title.equals("Autosave") ? 10 : Integer.valueOf(title);
			restoreState(state);
			
		}
			break;
		case R.id.save1: case R.id.save2: case R.id.save3: case R.id.save4: case R.id.save5:
		case R.id.save6: case R.id.save7: case R.id.save8: case R.id.save9:
		{
			String title = item.getTitle().toString();
			final int spacePos = title.indexOf(' ');
			if(spacePos != -1)
				title = title.substring(0, spacePos);
			final int state = Integer.valueOf(title);
			saveState(state);
		}
			break;
		case R.id.settings:
			startActivity(new Intent(this, Settings.class));
			break;
		case R.id.cheats:
			startActivity(new Intent(this, Cheats.class));
			break;
		case R.id.exit:
			DeSmuME.exit();
			finish();
			break;
		case R.id.lid:
			if(coreThread != null) {
				boolean newState = !DeSmuME.lidOpen;
				DeSmuME.lidOpen = newState;
				item.setChecked(newState);
			}
			break;
		case R.id.about:
			startActivity(new Intent(this, About.class));
			break;
		default:
			return false;
		}
		runEmulation();
		return true;
	}
	
	static String getStateName(int slot) {
		switch(slot) {
		case 0: return "quick state";
		case 10: return "autosave";
		default: return "state " + slot;
		}
	}
	
	void restoreState(int slot) {
		if(DeSmuME.romLoaded) {
			coreThread.inFrameLock.lock();
				DeSmuME.restoreState(slot);
			coreThread.inFrameLock.unlock();
			view.stateText = "Restored " + getStateName(slot);
			view.stateDrawStart = System.currentTimeMillis();
		}
	}
	
	void saveState(int slot) {
		if(DeSmuME.romLoaded) {
			coreThread.inFrameLock.lock();
				DeSmuME.saveState(slot);
			coreThread.inFrameLock.unlock();
			view.stateText = "Saved " + getStateName(slot);
			view.stateDrawStart = System.currentTimeMillis();
		}
	}

	
	SharedPreferences prefs = null;
	
	@Override
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

		if(DeSmuME.inited)
			DeSmuME.loadSettings();
		loadJavaSettings(key);
			
	}
	
	void loadJavaSettings(String key)
	{
		if(key != null) {
			if(DeSmuME.inited && key.equals(Settings.LANGUAGE))
				DeSmuME.reloadFirmware();
		}
		
		if(view != null) {
			view.showfps = prefs.getBoolean(Settings.SHOW_FPS, false);
			view.showTouchMessage = prefs.getBoolean(Settings.SHOW_TOUCH_MESSAGE, true);
			view.showSoundMessage = prefs.getBoolean(Settings.SHOW_SOUND_MESSAGE, true);
			view.lcdSwap = prefs.getBoolean(Settings.LCD_SWAP, false);
			view.buttonAlpha = (int)(prefs.getInt(Settings.BUTTON_TRANSPARENCY, 78) * 2.55f);
			view.haptic = prefs.getBoolean(Settings.HAPTIC, false);
			view.dontRotate = prefs.getBoolean(Settings.DONT_ROTATE_LCDS, false);
			view.alwaysTouch = prefs.getBoolean(Settings.ALWAYS_TOUCH, false);
			
			controls.loadMappings(this);
			
			if(key != null) {
				if(key.equals(Settings.SCREEN_FILTER)) {
					int newFilter = DeSmuME.getSettingInt(Settings.SCREEN_FILTER, 0);
					DeSmuME.setFilter(newFilter);
					view.forceResize();
				}
				else if(key.equals(Settings.RENDERER)) {
					int new3D = DeSmuME.getSettingInt(Settings.RENDERER, 2);
					if(coreThread != null)
						coreThread.change3D(new3D);
				}
				else if(key.equals(Settings.ENABLE_SOUND)) {
					int newSound = DeSmuME.getSettingInt(Settings.ENABLE_SOUND, 0);
					if(coreThread != null)
						coreThread.changeSound(newSound);
				}
				else if(key.equals(Settings.CPU_MODE) || key.equals(Settings.JIT_SIZE)) {
					int newCpuMode = DeSmuME.getSettingInt(Settings.CPU_MODE, 1);
					if(coreThread != null)
						coreThread.changeCPUMode(newCpuMode);
				}
				else if(key.equals(Settings.SOUND_SYNC_MODE)) {
					int newSoundSyncMode = DeSmuME.getSettingInt(Settings.SOUND_SYNC_MODE, 0);
					if(coreThread != null)
						coreThread.changeSoundSyncMode(newSoundSyncMode);
				}
				else if(key.equals(Settings.ENABLE_AUTOSAVE) || key.equals(Settings.AUTOSVAE_FREQUENCY)) {
					cancelAutosave();
					if(coreThread != null) {
						if(DeSmuME.romLoaded)
							scheduleAutosave();
					}
				}
			}
		}
	}
	
	long timeAtLastAutosave = 0;
	Timer autosaveTask;
	
	void cancelAutosave() {
		if(autosaveTask != null) {
			autosaveTask.cancel();
			autosaveTask = null;
		}
	}
	
	void scheduleAutosave() {
		cancelAutosave();
		if(prefs.getBoolean(Settings.ENABLE_AUTOSAVE, true)) {
			final int freqSel = Integer.valueOf(prefs.getString(Settings.AUTOSVAE_FREQUENCY, "1"));
			long autosaveDelay = 0;
			switch(freqSel) {
			case 0: autosaveDelay = 1 * 60 * 1000; break; //1 minute
			case 2: autosaveDelay = 15 * 60 * 1000; break; //15 minutes
			case 3: autosaveDelay = 30 * 60 * 1000; break; //30 minutes
			case 4: autosaveDelay = 60 * 60 * 1000; break; //1 hour
			default: autosaveDelay = 5 * 60 * 1000; break; //5 minutes
			}
			long timeSinceLastAuto = System.currentTimeMillis() - timeAtLastAutosave;
			if(timeSinceLastAuto >= autosaveDelay) 
				timeSinceLastAuto = autosaveDelay;
			autosaveTask = new Timer();
			autosaveTask.scheduleAtFixedRate(new TimerTask() {

				@Override
				public void run() {
					if(!coreThread.paused.get()) {
						saveState(10);
						timeAtLastAutosave = System.currentTimeMillis();
					}
				}
				
			}, autosaveDelay - timeSinceLastAuto, autosaveDelay);
		}
	}
	
	class NDSView extends SurfaceView implements Callback {
		Bitmap emuBitmapMain, emuBitmapTouch;
		
		final Paint emuPaint = new Paint();
		final Paint hudPaint = new Paint();
		final float defhudsize = 15;
		float curhudsize = defhudsize;
		public boolean showfps = false;
		public boolean showTouchMessage = false;
		public boolean showSoundMessage = false;
		public boolean lcdSwap = false;
		public boolean forceTouchScreen = false;
		public int buttonAlpha = 78;
		public boolean haptic = true;
		public boolean alwaysTouch = false;
		
		public NDSView(Context context) {
			super(context);
			getHolder().addCallback(this);
			setKeepScreenOn(true);
			setWillNotDraw(false);
			setFocusable(true);
			setFocusableInTouchMode(true);
			
			hudPaint.setColor(Color.WHITE);
			hudPaint.setShadowLayer(1, 0, 0, Color.BLACK);
			hudPaint.setTextSize(defhudsize);
			hudPaint.setAntiAlias(false);
		}
		
		boolean doForceResize = false;
		public void forceResize() {
			doForceResize = true;
		}
		
		
		
		@Override
		public void onDraw(Canvas canvas) {
			canvas.drawColor(Color.BLACK);
			
			if(showTouchMessage) {
				prefs.edit().putBoolean(Settings.SHOW_TOUCH_MESSAGE, showTouchMessage = false).apply();
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setPositiveButton(R.string.OK, null).setMessage(R.string.touchnotify).create().show();
			}
			
			if(showSoundMessage) {
				prefs.edit().putBoolean(Settings.SHOW_SOUND_MESSAGE, showSoundMessage = false).apply();
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setMessage(R.string.soundmsg).setPositiveButton(R.string.yes, new Dialog.OnClickListener() {

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						prefs.edit().putBoolean(Settings.ENABLE_SOUND, true).apply();
						arg0.dismiss();
					}
					
				}).setNegativeButton(R.string.no, null).create().show();
			}

			synchronized(view) {
				if(!DeSmuME.inited)
					return;
				
				if(doForceResize)
					view.resize(width, height, pixelFormat);
				
				if(emuBitmapMain == null)
					return;
				
				
				int data = DeSmuME.fastForwardMode ? fpsData : DeSmuME.draw(emuBitmapMain, emuBitmapTouch, landscape && dontRotate);
				
				final boolean drawTouch = destTouch.left != 0 || destTouch.right != 0;

				if(lcdSwap) {
					if(drawTouch) {
						canvas.drawBitmap(emuBitmapTouch, srcMain, destMain, emuPaint);
						canvas.drawBitmap(emuBitmapMain, srcTouch, destTouch, emuPaint);
					}
					else
						canvas.drawBitmap(emuBitmapMain, srcMain, destMain, emuPaint);
				}
				else {
					canvas.drawBitmap(emuBitmapMain, srcMain, destMain, emuPaint);
					if(drawTouch)
						canvas.drawBitmap(emuBitmapTouch, srcTouch, destTouch, emuPaint);
				}
				
				controls.drawControls(canvas);
				
				if(stateText != null) {
					final long fadeHoldMs = 1000;
					final float fadeAwayMs = 750.0f;
					
					final long time = System.currentTimeMillis();
					final long fadeDiff = time - stateDrawStart;
					
					if(fadeDiff >= (fadeHoldMs + fadeAwayMs))
						stateText = null;
					else {
						final boolean fading = fadeDiff > fadeHoldMs;
						if(fading) {
							final float fadeTime = (fadeDiff - fadeHoldMs) / fadeAwayMs;
							final int fadeColor = Color.argb(255 - (int) (fadeTime * 255), 255, 255, 255);
							hudPaint.setColor(fadeColor);
						}
						canvas.drawText(stateText, 10, curhudsize * 2, hudPaint);
						if(fading)
							hudPaint.setColor(Color.WHITE);
					}
				}
				
				if (showfps)
				{
					if(data != fpsData || fpsText == null) {
						int fps = (data >> 24) & 0xFF;
						int fps3d = (data >> 16) & 0xFF;
						int cpuload0 = (data >> 8) & 0xFF;
						int cpuload1 = data & 0xFF;
						
						fpsText = "Fps:"+fps+"/"+fps3d+"("+cpuload0+"%/"+cpuload1+"%)";
						fpsData = data;
					}
					canvas.drawText(fpsText, 10, curhudsize, hudPaint);
				}
			}
			
		}
		
		
		@Override
		public boolean onTouchEvent(MotionEvent event) {
			return controls.onTouchEvent(event);
		}
		
		boolean resized = false;
		boolean sized = false;
		boolean landscape = false;
		boolean dontRotate = false;
		int sourceWidth;
		int sourceHeight;
		Rect srcMain, destMain, srcTouch, destTouch;
		int width = 0, height = 0, pixelFormat;
		String stateText = null;
		long stateDrawStart = 0;
		int fpsData = 0;
		int screenOption = 0;
		String fpsText = null;
		
		
		void resize(int newWidth, int newHeight, int newPixelFormat) {
			
			synchronized(view) {
				sourceWidth = DeSmuME.getNativeWidth();
				sourceHeight = DeSmuME.getNativeHeight();
				resized = true;
				
				screenOption = Integer.valueOf(prefs.getString(Settings.SPECIFIC_SCREEN_ONLY, "0"));
				final boolean hasScreenFilter = DeSmuME.getSettingInt(Settings.SCREEN_FILTER, 0) != 0;
				final boolean is565 = newPixelFormat == PixelFormat.RGB_565 && !hasScreenFilter;
				final boolean stretch = !prefs.getBoolean(Settings.MAINTAIN_ASPECT_RATIO, false);
				landscape = newWidth > newHeight;
				controls.setView(this);
				int xBlack = 0, yBlack = 0;
				
				forceTouchScreen = !prefs.getBoolean("Controls." + (landscape ? "Landscape." : "Portrait.") + "Draw", false);
				
				final Rect emptyRect = new Rect(0, 0, 0, 0);
				
				if(landscape) {
					if(stretch) {
						if(screenOption > 0) {
							final Rect full = new Rect(0, 0, newWidth, newHeight);
							destMain = screenOption == 1 ? full : emptyRect;
							destTouch = screenOption == 1 ? emptyRect : full;
						}
						else {
							destMain = new Rect(0, 0, newWidth / 2, newHeight);
							destTouch = new Rect(newWidth / 2, 0, newWidth, newHeight);
						}
					}
					else {
						final float dsAspect = (screenOption > 0) ? (float)(sourceWidth) / (float)(sourceHeight / 2) :
							(float)(sourceWidth * 2) / (float)(sourceHeight / 2);
						final float screenAspect = (float)newWidth / (float)newHeight;
						if(dsAspect > screenAspect) {
							//the DS is "wider" than our screen -- match to the width
							final int aspectHeight = (int)((float)newWidth / dsAspect);
							final int black = yBlack = (newHeight - aspectHeight) / 2;
							if(screenOption > 0) {
								final Rect full = new Rect(0,black,newWidth,newHeight - black);
								destMain = screenOption == 1 ? full : emptyRect;
								destTouch = screenOption == 1 ? emptyRect : full;
							}
							else {
								destMain = new Rect(0,black,newWidth / 2,newHeight - black);
								destTouch = new Rect(newWidth / 2,black,newWidth,newHeight-black);
							}
						}
						else {
							//match to the height
							final int aspectWidth = (int)((float)newHeight * dsAspect);
							final int black = xBlack = (newWidth - aspectWidth) / 2;
							if(screenOption > 0) {
								final Rect full = new Rect(black, 0, newWidth - black, newHeight);
								destMain = screenOption == 1 ? full : emptyRect;
								destTouch = screenOption == 1 ? emptyRect : full;
							}
							else {
								destMain = new Rect(black, 0, aspectWidth / 2 + black, newHeight);
								destTouch = new Rect(aspectWidth / 2 + black, 0, newWidth - black, newHeight);
							}
						}
					}
				}
				else {
					if(stretch) {
						if(screenOption > 0) {
							final Rect full = new Rect(0, 0, newWidth, newHeight);
							destMain = screenOption == 1 ? full : emptyRect;
							destTouch = screenOption == 1 ? emptyRect : full;
						}
						else {
							destMain = new Rect(0, 0, newWidth, newHeight / 2);
							destTouch = new Rect(0, newHeight / 2, newWidth, newHeight);
						}
					}
					else {
						final float dsAspect = (screenOption > 0) ? (float)sourceWidth / (float)(sourceHeight / 2) : 
							(float)sourceWidth / (float)sourceHeight;
						final float screenAspect = (float)newWidth / (float)newHeight;
						if(dsAspect > screenAspect) {
							//the DS is "wider" than our screen -- match to the width
							final int aspectHeight = (int)((float)newWidth / dsAspect);
							final int black = yBlack = (newHeight - aspectHeight) / 2;
							if(screenOption > 0) {
								final Rect full = new Rect(0, black, newWidth, newHeight - black);
								destMain = screenOption == 1 ? full : emptyRect;
								destTouch = screenOption == 1 ? emptyRect : full;
							}
							else {
								destMain = new Rect(0,black,newWidth,aspectHeight / 2 + black);
								destTouch = new Rect(0,aspectHeight / 2 + black,newWidth,newHeight-black);
							}
						}
						else {
							//match to the height
							final int aspectWidth = (int)((float)newHeight * dsAspect);
							final int black = xBlack = (newWidth - aspectWidth) / 2;
							if(screenOption > 0) {
								final Rect full = new Rect(black, 0, newWidth - black, newHeight);
								destMain = screenOption == 1 ? full : emptyRect;
								destTouch = screenOption == 1 ? emptyRect : full;
							}
							else {
								destMain = new Rect(black, 0, aspectWidth + black, newHeight / 2);
								destTouch = new Rect(black, newHeight / 2, aspectWidth + black, newHeight);
							}
						}
					}
				}
				
				controls.loadControls(MainActivity.this, newWidth, newHeight, xBlack, yBlack, screenOption, is565, landscape);
				
				if(landscape && dontRotate) {
					emuBitmapMain = Bitmap.createBitmap(sourceHeight / 2, sourceWidth, is565 ? Config.RGB_565 : Config.ARGB_8888);
					emuBitmapTouch = Bitmap.createBitmap(sourceHeight / 2, sourceWidth, is565 ? Config.RGB_565 : Config.ARGB_8888);
					srcMain = new Rect(0, 0, sourceHeight / 2, sourceWidth);
					srcTouch = new Rect(0, 0, sourceHeight / 2, sourceWidth);
				}
				else {
					emuBitmapMain = Bitmap.createBitmap(sourceWidth, sourceHeight / 2, is565 ? Config.RGB_565 : Config.ARGB_8888);
					emuBitmapTouch = Bitmap.createBitmap(sourceWidth, sourceHeight / 2, is565 ? Config.RGB_565 : Config.ARGB_8888);
					srcMain = new Rect(0, 0, sourceWidth, sourceHeight / 2);
					srcTouch = new Rect(0, 0, sourceWidth, sourceHeight / 2);
				}
				DeSmuME.resize(emuBitmapMain);
				
				requestFocus();
				
				width = newWidth;
				height = newHeight;
				pixelFormat = newPixelFormat;
				sized = true;
				doForceResize = false;
				
				float max_wh = newWidth > newHeight ? newWidth : newHeight;
				curhudsize = (max_wh / 384.0f) * defhudsize;
				hudPaint.setTextSize(curhudsize);
				
			}
		}


		@Override
		public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
			synchronized(view) {
				if(width > 0 && height > 0) //not sure why, but some devices are sending 0s for these values sometimes
					view.resize(width, height, format);
			}
		}


		@Override
		public void surfaceCreated(SurfaceHolder arg0) {
		}


		@Override
		public void surfaceDestroyed(SurfaceHolder arg0) {
		}
		
		@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			return controls.onKeyDown(keyCode, event);
		}
		
		@Override
		public boolean onKeyUp(int keyCode, KeyEvent event) {
			return controls.onKeyUp(keyCode, event);
		}
		
		public void showMenu() {
			MainActivity.this.openOptionsMenu();
		}
		
	}
	
}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/CollectionActivity.java
================================================
package com.opendoorstudios.ds4droid.NDSScanner;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import com.opendoorstudios.ds4droid.R;
import com.opendoorstudios.ds4droid.FileDialog;
import com.opendoorstudios.ds4droid.Settings;

import java.io.File;

//==============================================================================
public class CollectionActivity extends Activity implements GridView.OnItemClickListener {
	//--------------------------------------------------------------------------

	private GridView      grid;
	private RomAdapter    adapter;
	private static RomCollection collection;
	
	private String browserRoot;
	private String[] browserFilter;

	//--------------------------------------------------------------------------

	@Override
	protected void onCreate( Bundle savedInstanceState ) {
		super.onCreate( savedInstanceState );

		// nds4droid compatibility
		setResult( RESULT_CANCELED );
		

		browserFilter = getIntent().getStringArrayExtra(FileDialog.FORMAT_FILTER);
		browserRoot = getIntent().getStringExtra(FileDialog.START_PATH);

		setContentView( R.layout.fragment_list );
		grid = (GridView)findViewById( R.id.list );
		adapter = new RomAdapter();
		grid.setAdapter( adapter );
		grid.setOnItemClickListener( this );
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(adapter != null)
			collection.removeListener(adapter);
	}

	//--------------------------------------------------------------------------

	@Override
	public boolean onCreateOptionsMenu( Menu menu ) {
		getMenuInflater().inflate( R.menu.activity_collection, menu );
		return true;
	}
	
	private void showFileBrowser() {
		Intent i = new Intent(this, FileDialog.class);
		i.setAction(Intent.ACTION_PICK);
		i.putExtra(FileDialog.START_PATH, browserRoot);
		i.putExtra(FileDialog.FORMAT_FILTER, browserFilter);
		startActivityForResult(i, 0);
	}
	
	@Override
	public boolean onMenuItemSelected (int featureId, MenuItem item) {
		switch(item.getItemId()) {
		case R.id.scanner_rescan:
			collection.clear();
			adapter.onScanFinished(collection);
			collection.update( CollectionActivity.this );
			return true;
		case R.id.scanner_filebrowser:
			showFileBrowser();
			return true;
		case R.id.scanner_settings:
			startActivity(new Intent(this, Settings.class));
			break;
		}
		return false;
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if( resultCode != Activity.RESULT_OK)
			return;
		String romPath = data.getStringExtra(FileDialog.RESULT_PATH);
		if(romPath != null) {
			getIntent().putExtra(FileDialog.RESULT_PATH, romPath);
			setResult(RESULT_OK, getIntent());
			finish();
		}
			
	}
	
	//--------------------------------------------------------------------------

	@Override
	public void onItemClick( AdapterView<?> parent, View view, int index, long id ) {
		Log.d( "NDS", "onItemClick()" );

		File FILE = collection.getRoms()[index].getFile();
		
		getIntent().putExtra(FileDialog.RESULT_PATH, FILE.getAbsolutePath());
		setResult(RESULT_OK, getIntent());
		finish();
	}
	
	//--------------------------------------------------------------------------
	
	//==========================================================================
	private class RomAdapter extends BaseAdapter implements RomCollection.ScanListener {
		//----------------------------------------------------------------------
		
		public RomAdapter() {
			// TODO Check shared preference for user's desired scanner root
			File file = new File( Environment.getExternalStorageDirectory().getAbsolutePath() );
			if(collection == null)
				collection = new RomCollection( CollectionActivity.this, file );
			collection.addListener( this );
			collection.update( CollectionActivity.this );
		}
		
		//----------------------------------------------------------------------
		
		@Override
		public int getCount() {
			return collection.getRoms().length;
		}
		
		//----------------------------------------------------------------------
		
		@Override
		public Object getItem( int index ) {
			return collection.getRoms()[index];
		}
		
		//----------------------------------------------------------------------
		
		@Override
		public long getItemId( int index ) {
			return collection.getRoms()[index].getGameCode();
		}
		
		//----------------------------------------------------------------------
		
		@Override
		public View getView( final int index, View view, ViewGroup parent ) {
			final NdsRom rom = collection.getRoms()[index];
			
			if ( view == null ) {
				view = getLayoutInflater().inflate( R.layout.griditem_rom, parent, false );
			}
			
			final ImageView image_view = ( (ImageView)view.findViewById( R.id.icon ));
			if ( rom.isIconLoaded() ) {
				image_view.setImageBitmap( rom.getIcon() );
				image_view.getDrawable().setFilterBitmap( false );
				
			// Delegate icon loading to an AsyncTask
			} else {
				image_view.setImageDrawable( null );
				new AsyncTask<Void,Void,Bitmap>() {
					protected Bitmap doInBackground( Void... xx ) {
						return rom.getIcon();
					}
					protected void onPostExecute( Bitmap result ) {
						Drawable[] transition = new Drawable[] { new ColorDrawable( 0 ), new BitmapDrawable( getResources(), result ) };
						transition[1].setFilterBitmap( false );
						TransitionDrawable drawable = new TransitionDrawable( transition );
						image_view.setImageDrawable( drawable );
						drawable.startTransition( 100 );
					}
				}.execute();
			}
			
			( (TextView )view.findViewById( R.id.title )).setText( rom.getTitle() );
			return view;
		}
		
		//----------------------------------------------------------------------
		
		private ProgressDialog pd;
		
		@Override
		public void onScanStarted( RomCollection collection ) {
			pd = new ProgressDialog(CollectionActivity.this);
			pd.setTitle(getString(R.string.ScanningForROMs));
			pd.setIndeterminate(true);
			pd.setCancelable(true);
			pd.show();
		}
		
		//----------------------------------------------------------------------
		
		@Override
		public void onScanFinished( RomCollection collection ) {
			pd.dismiss();
			if(collection.getRoms().length == 0)
				showFileBrowser();
			else
				notifyDataSetChanged();
		}

		//----------------------------------------------------------------------
	}
	//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/NdsRom.java
================================================
package com.opendoorstudios.ds4droid.NDSScanner;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;

import java.io.*;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Collections;
import java.util.Locale;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

//==============================================================================
public class NdsRom {
	// Data from http://nocash.emubase.de/gbatek.htm
	//--------------------------------------------------------------------------
	
	// title, gamecode, makercode are tightly packed; no offset needed until info
	private static final int INFO_OFFSET = 0x56, INFO_ADDRESS = 0x68, ICON_OFFSET = 0x20;
	
	protected final byte[] TITLE_BYTES = new byte[12],
	                    GAMECODE_BYTES = new byte[ 4],
	                   MAKERCODE_BYTES = new byte[ 2],
	                        INFO_BYTES = new byte[ 4],
	                        
	                   // Below only used if INFO_BYTES > 0
	                        ICON_BYTES = new byte[512],
	                     PALETTE_BYTES = new byte[ 32],
	                    TITLE_JP_BYTES = new byte[256], // Japanese
	                    TITLE_EN_BYTES = new byte[256], // English
	                    TITLE_FR_BYTES = new byte[256], // French
	                    TITLE_DE_BYTES = new byte[256], // German
	    	            TITLE_IT_BYTES = new byte[256], // Italian
	                    TITLE_ES_BYTES = new byte[256]; // Spanish
	
	private long   game_code;
	private Bitmap icon;
	private String title_jp, title_en, title_fr, title_de, title_it, title_es;

	static final String ROM_PATTERN = "^.*\\.(NDS|nds)$",
	                    ZIP_PATTERN = "^.*\\.(ZIP|zip)$",
	                    RAR_PATTERN = "^.*\\.(RAR|rar)$";
	
	private final File FILE;
	
	//--------------------------------------------------------------------------

	public static NdsRom MakeRom(File f) {
		final InputStream stream = NdsRom.getRomStream(f);
		if(f == null)
			return null;
		return new NdsRom(f,stream);
	}
	
	private NdsRom(File file, InputStream stream ) {
		FILE = file;
		try {
			stream.read( TITLE_BYTES );
			stream.read( GAMECODE_BYTES );
			stream.read( MAKERCODE_BYTES );
			stream.skip( INFO_OFFSET );
			stream.read( INFO_BYTES );

			// Load info iff a valid address was provided in INFO_BYTES
			int info_skip = composeInt( INFO_BYTES ) - INFO_ADDRESS - INFO_BYTES.length;

			if ( info_skip > 0 ) {

				longSkip( stream, info_skip );

				stream.skip( ICON_OFFSET ); // Some junk data before the icon

				// Also iterate to read large sections
				int read_index = 0;
				while ( read_index < ICON_BYTES.length ) {
					read_index += stream.read( ICON_BYTES, read_index, ICON_BYTES.length - read_index );
				}

				stream.read( PALETTE_BYTES );
				stream.read( TITLE_JP_BYTES );
				stream.read( TITLE_EN_BYTES );
				stream.read( TITLE_FR_BYTES );
				stream.read( TITLE_DE_BYTES );
				stream.read( TITLE_IT_BYTES );
				stream.read( TITLE_ES_BYTES );
			}

		} catch ( IOException e ) {
			e.printStackTrace();
		}
		finally {
			try {
				stream.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	//--------------------------------------------------------------------------

	// Iterate to skip large sections, in case we're reading an archive
	private void longSkip( InputStream stream, int skip ) throws IOException {
		long skipped_total = 0;
		while ( skipped_total < skip ) {
			skipped_total += stream.skip( skip - skipped_total );
		}
	}

	//--------------------------------------------------------------------------

	private static int composeInt( byte[] bytes ) {
		return ByteBuffer.wrap( bytes ).order( ByteOrder.LITTLE_ENDIAN ).getInt();
	}

	//--------------------------------------------------------------------------
	
	public long getGameCode() {
		if ( game_code == 0 ) game_code = composeInt( GAMECODE_BYTES );
		return game_code;
	}
	
	//--------------------------------------------------------------------------
	
	public Bitmap getIcon() {
		if ( icon == null && composeInt( INFO_BYTES ) > 0 ) {
			icon = Bitmap.createBitmap( 32, 32, Bitmap.Config.ARGB_8888 );
			Canvas canvas = new Canvas( icon );
			Paint paint = new Paint();
			
			int x, y, index_a, index_b, color_a, color_b;
			ByteBuffer palette = ByteBuffer.wrap( PALETTE_BYTES ).order( ByteOrder.LITTLE_ENDIAN );
			
			for ( int i = 0; i < 512; i ++ ) {
				index_a = ( ICON_BYTES[i]       ) & 15;
				index_b = ( ICON_BYTES[i] >>> 4 ) & 15;
				
				color_a = palette.getShort( index_a * 2 );
				color_b = palette.getShort( index_b * 2 );
				
				// Oh fuck me
				x = ( 2 * (  i         % 4 )) 
				  + ( 8 * (( i /  32 ) % 4 ));
				y = (     (  i /   4 ) % 8  )
				  + ( 8 * (  i / 128 )      );
				
				// X b b b b b g g|g g g r r r r r
				paint.setARGB( index_a != 0    ? 255 : 0,
					         ( color_a <<  3 ) & 255, 
					         ( color_a >>> 2 ) & 255,
					         ( color_a >>> 7 ) & 255 );
				canvas.drawPoint( x, y, paint );
				paint.setARGB( index_b != 0    ? 255 : 0,
						     ( color_b <<  3 ) & 255, 
						     ( color_b >>> 2 ) & 255,
						     ( color_b >>> 7 ) & 255 );
				canvas.drawPoint( x + 1, y, paint );
			}
		}
		return icon;
	}
	
	//--------------------------------------------------------------------------
	
	public boolean isIconLoaded() {
		return icon != null;
	}
	
	//--------------------------------------------------------------------------
	
	public String getTitle() {
		return getTitle( null );
	}
	
	//--------------------------------------------------------------------------
	
	public String getTitle( String lang ) {
		try {
			if ( Locale.JAPANESE.getLanguage().equals( lang )) {
				if ( title_jp == null ) title_jp = new String( TITLE_JP_BYTES, "UTF-8" );
				return title_jp;
				
			} else if ( Locale.FRENCH.getLanguage().equals( lang )) {
				if ( title_fr == null ) title_fr = new String( TITLE_FR_BYTES, "UTF-8" );
				return title_fr;
				
			} else if ( Locale.GERMAN.getLanguage().equals( lang )) {
				if ( title_de == null ) title_de = new String( TITLE_DE_BYTES, "UTF-8" );
				return title_de;
				
			} else if ( Locale.ITALIAN.getLanguage().equals( lang )) {
				if ( title_it == null ) title_it = new String( TITLE_IT_BYTES, "UTF-8" );
				return title_it;
				
			} else if ( "es".equals( lang )) { // Spanish not in Android?
				if ( title_es == null ) title_es = new String( TITLE_ES_BYTES, "UTF-8" );
				return title_es;
				
			} else {
				if ( title_en == null ) title_en = new String( TITLE_EN_BYTES, "UTF-8" );
				return title_en;
			}
			
		} catch ( UnsupportedEncodingException e ) {
			return null;
		}
	}
	
	//--------------------------------------------------------------------------
	
	public File getFile() { return FILE; }
	
	//--------------------------------------------------------------------------

	static boolean isRomArchive( ZipFile file ) {
		for ( ZipEntry entry : Collections.list( file.entries() )) {
			if ( entry.getName().matches( ROM_PATTERN )) return true;
		}
		return false;
	}
	
	//--------------------------------------------------------------------------
	/*
	private static boolean isRomArchive( RARFile file ) {
		for ( RARArchivedFile entry : file.getArchivedFiles() ) {
			if ( entry.getName().matches( ROM_PATTERN )) return true;
		}
		return false;
	}
	*/
	//--------------------------------------------------------------------------
	
	private static InputStream getRomStream( File file ) {
		if ( file.getName().matches( ROM_PATTERN )) {
			try { return new FileInputStream( file ); }
			catch ( FileNotFoundException e ) { return null; }
		}
		
		if ( file.getName().matches( ZIP_PATTERN )) {
			try { return getRomStream( new ZipFile( file )); }
			catch ( IOException e ) { return null; }
		}
		/*
		if ( file.getName().matches( RAR_PATTERN )) {
			Log.d( "NDS", "\nLoading RAR file " + file.getName() );
			try { return getRomStream( new RARFile( file )); }
			catch ( IOException e ) { return null; }
		}
		*/
		return null;
	}
	
	//--------------------------------------------------------------------------
	
	private static InputStream getRomStream( ZipFile file ) {
		for ( ZipEntry entry : Collections.list( file.entries() )){
			if ( entry.getName().matches( ROM_PATTERN )) {
				try { return file.getInputStream( entry ); }
				catch ( IOException e ) { return null; }
			}
		}
		return null;
	}
	
	//--------------------------------------------------------------------------
	/*
	private static InputStream getRomStream( RARFile file ) {
		for ( RARArchivedFile entry : file.getArchivedFiles() ) {
			if ( entry.getName().matches( ROM_PATTERN )) {
				return file.extract( entry );
			}
		}
		return null;
	}
	*/
	//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------

================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomCollection.java
================================================
package com.opendoorstudios.ds4droid.NDSScanner;

import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.util.Log;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;
import java.util.zip.ZipFile;

//==============================================================================
public class RomCollection {
	// NOTE: Rar archives weren't working for some reason. Probably need to plug in a new library.
	//--------------------------------------------------------------------------
	
	private static final FileFilter
		
		DIR_FILTER = new FileFilter() { @Override public boolean accept( File file ) {
			return file.isDirectory();
		}},

	NDS_FILTER = new FileFilter() {
		@Override
		public boolean accept( File file ) {
			return !file.isDirectory() && file.getName().matches( NdsRom.ROM_PATTERN );
		}
	},

	ZIP_FILTER = new FileFilter() {
		@Override
		public boolean accept( File file ) {
			if ( file.getName().matches( NdsRom.ZIP_PATTERN ) ) {
				try {
					return NdsRom.isRomArchive( new ZipFile( file ) );
				} catch ( IOException e ) { return false; }
			}
			return false;
		}
	},
	/*
	RAR_FILTER = new FileFilter() { @Override public boolean accept( File file ) {
		if ( file.getName().matches( "^.*\\.(RAR|rar)$" )) {
			try { return isRomArchive( new RARFile( file )); }
			catch ( IOException e ) { return false; }
		}
		return false;
	}},
	*/
	ALL_ROMS_FILTER = new FileFilter() {
		@Override
		public boolean accept( File file ) {
			return NDS_FILTER.accept( file )
					|| ZIP_FILTER.accept( file )
			    /*|| RAR_FILTER.accept( file )*/;
		}
	};

	private SQLiteDatabase DB;
	private final File           ROOT;

	private final Set<ScanListener> LISTENERS = new HashSet<ScanListener>();

	private NdsRom[] roms;

	//--------------------------------------------------------------------------

	public RomCollection( Context context, File root ) {
		try {
			DB = new RomDatabaseHelper( context ).getWritableDatabase();
		}
		catch(Exception e) {
			//for some reason, this is failing sometimes with a "SQLiteDatabaseLockedException".
			//I can't get this to happen on my device, but I see on the Google Play ANR reports.
			//I think it may have something to do with a previous instance of the activity not having
			//closed the connection yet. I made the actual collection instance static, but just as
			//an extra fallback we'll wait a bit here and try to reopen the DB
			try {
				Thread.sleep(500);
			} catch (InterruptedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			DB = new RomDatabaseHelper( context ).getWritableDatabase();
		}
		ROOT = root;
	}

	//--------------------------------------------------------------------------

	public void update( final Context context ) {
		new AsyncTask<Void,Void,Void>() {
			
			@Override
			public void onPreExecute() {
				for ( ScanListener listener : LISTENERS ) {
					listener.onScanStarted( RomCollection.this );
				}
			}
			
			@Override
			public Void doInBackground( Void... x ) {
				SharedPreferences prefs = context.getSharedPreferences( "ndsscanner", Context.MODE_PRIVATE );
		
				// Delete first, ask questions later
				Cursor cursor = DB.query( "roms", new String[]{ "path" }, null, null, null, null, null );
				DB.beginTransaction();
				while ( cursor.moveToNext() ) {
					if ( !new File( cursor.getString( 0 ) ).exists() ) {
						DB.delete( "roms", "path=?", new String[]{ cursor.getString( 0 ) } );
					}
				}
				DB.setTransactionSuccessful();
				DB.endTransaction();
				cursor.close();
		
				long    last_scan = prefs.getLong(    "last_scan", 0 );
				boolean recursive = prefs.getBoolean( "recursive", true );
		
				DB.beginTransaction();
				scanDirectory( ROOT, last_scan, recursive, 0 );
				DB.setTransactionSuccessful();
				DB.endTransaction();
				prefs.edit().putLong( "last_scan", System.currentTimeMillis() ).commit();
				return null;
			}
			
			@Override
			public void onPostExecute( Void x ) {
				roms = null;
				for ( ScanListener listener : LISTENERS ) {
					listener.onScanFinished( RomCollection.this );
				}
			}
			
		}.execute();
	}
	
	public void clear() {
		DB.beginTransaction();
		DB.delete( "roms", null, null );
		DB.setTransactionSuccessful();
		DB.endTransaction();
	}
	
	//--------------------------------------------------------------------------
	
	private void scanDirectory( File file, long last_scan, boolean recursive, int recursionLevel ) {
		
		ContentValues vals = new ContentValues();
		NdsRom rom;
		InputStream stream;
		
		if(recursionLevel > 5)
			return; //if the ROMs are more than 5 layers deep... well... they'll just have to use the file browser
		
		try
		{
			// Insert DB entries for all matching rom files
			for ( File f : file.listFiles( ALL_ROMS_FILTER )) {
				vals.clear();
				
				rom = NdsRom.MakeRom(f);
				if(f == null)
					continue;
				
				vals.put( "path",     f.getAbsolutePath() );
				vals.put( "title",    rom.getTitle()      );
				vals.put( "gamecode", rom.getGameCode()   );
				
				DB.insertWithOnConflict( "roms", null, vals, SQLiteDatabase.CONFLICT_IGNORE );
			}
			
			// Subdirectories
			if ( recursive ) for ( File dir : file.listFiles( DIR_FILTER )) {
				if ( dir.lastModified() > last_scan ) scanDirectory( dir, last_scan, recursive, recursionLevel + 1 );
			}
		}
		catch(Exception e)
		{
			//on my x86 emulator I'm not allowed to read /mnt/sdcard/.android_secure
			//if we get this, just skip the directory
			Log.d("nds4droid", "Unable to scan " + file.getAbsolutePath());
		}
		
	}

	//--------------------------------------------------------------------------
	
	public void addListener( ScanListener listener ) {
		LISTENERS.add( listener );
	}
	
	//--------------------------------------------------------------------------
	
	public void removeListener( ScanListener listener ) {
		LISTENERS.remove( listener );
	}
	
	//--------------------------------------------------------------------------
	
	public void clearListeners() {
		LISTENERS.clear();
	}
	
	//--------------------------------------------------------------------------
	
	public NdsRom[] getRoms() {
		if ( roms == null ) {
			final LinkedList<NdsRom> list = new LinkedList<NdsRom>(); 
			Cursor c = DB.query( "roms", new String[]{ "path" },
			                     null, null, null, null, "title" );
			while ( c.moveToNext() ) {
				final NdsRom rom = NdsRom.MakeRom(new File( c.getString( 0 )));
				if(rom == null)
					continue;
				list.add(rom);
			}
			roms = new NdsRom[list.size()];
			list.toArray(roms);
			c.close();
		}
		return roms;
	}
	
	//--------------------------------------------------------------------------
	
	//==========================================================================
	public interface ScanListener {
		//----------------------------------------------------------------------
		
		public void onScanStarted(  RomCollection collection );
		public void onScanFinished( RomCollection collection );
		
		//----------------------------------------------------------------------
	}
	//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomDatabaseHelper.java
================================================
package com.opendoorstudios.ds4droid.NDSScanner;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

//==============================================================================
public class RomDatabaseHelper extends SQLiteOpenHelper {
	//--------------------------------------------------------------------------
	
	public static final String DB_NAME    = "roms.db";
	public static final int    DB_VERSION = 1;
	
	//--------------------------------------------------------------------------
	
	public RomDatabaseHelper( Context context ) {
		super( context, DB_NAME, null, DB_VERSION );
	}

	//--------------------------------------------------------------------------

	@Override
	public void onCreate( SQLiteDatabase db ) {
		db.execSQL(
			"CREATE TABLE roms            ( " +
				"path     TEXT PRIMARY KEY, " +
				"title    TEXT            , " +
				"gamecode TEXT              " +
			");" );
	}

	//--------------------------------------------------------------------------
	
	@Override
	public void onUpgrade( SQLiteDatabase db, int old_version, int new_version ) {
		switch ( old_version ) {
		}	
	}
	
	//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------

================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/Settings.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.util.Locale;
import java.util.Map.Entry;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Environment;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.KeyEvent;

public class Settings extends PreferenceActivity {

	
	static final int EDIT_LAYOUT_ID = 1337;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.settings);
		
		final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
		findPreference(EDIT_LAYOUT).setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference pref) {
				startActivityForResult(new Intent(Settings.this, ButtonLayoutEditor.class), EDIT_LAYOUT_ID);
				return true;
			}
			
		});
		
		findPreference(RESET_LAYOUT).setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				applyLayoutDefaults(prefs, true);
				return true;
			}
			
		});
		
		findPreference(EDIT_MAPPINGS).setOnPreferenceClickListener(new OnPreferenceClickListener() {

			@Override
			public boolean onPreferenceClick(Preference preference) {
				startActivity(new Intent(Settings.this, KeyMapSettings.class));
				return true;
			}
			
		});
			
	}
	
	static void applyLayoutDefaults(SharedPreferences prefs, boolean overwrite) {
		SharedPreferences.Editor edit = prefs.edit();
		for(Entry<Integer, Button> button : Button.portraitToDefault.entrySet()) {
			final String prefBase = "Controls.Portrait." + Button.getButtonName(button.getValue().id);
			if(!overwrite && prefs.contains(prefBase + ".Left"))
				continue;
			edit.remove(prefBase + ".Left");
			edit.remove(prefBase + ".Right");
			edit.remove(prefBase + ".Top");
			edit.remove(prefBase + ".Bottom");
		}
		if(overwrite || !prefs.contains("Controls.Portrait.Draw"))
				edit.putBoolean("Controls.Portrait.Draw", true);
		for(Entry<Integer, Button> button : Button.landscapeToDefault.entrySet()) {
			final String prefBase = "Controls.Landscape." + Button.getButtonName(button.getValue().id);
			if(!overwrite && prefs.contains(prefBase + ".Left"))
				continue;
			edit.remove(prefBase + ".Left");
			edit.remove(prefBase + ".Right");
			edit.remove(prefBase + ".Top");
			edit.remove(prefBase + ".Bottom");
		}
		if(overwrite || !prefs.contains("Controls.Landscape.Draw"))
			edit.putBoolean("Controls.Landscape.Draw", true);
		if(overwrite || !prefs.contains(BUTTON_TRANSPARENCY))
			edit.putInt(BUTTON_TRANSPARENCY, 78);
		if(overwrite || !prefs.contains(HAPTIC))
			edit.putBoolean(HAPTIC, false);
		if(overwrite || !prefs.contains(ALWAYS_TOUCH))
			edit.putBoolean(ALWAYS_TOUCH, false);
		edit.apply();
	}
	
	public static final String SHOW_TOUCH_MESSAGE = "ShowTouchMessage";
	public static final String DESMUME_PATH = "DeSmuMEPath";
	public static final String SHOW_FPS = "DisplayFps";
	public static final String FRAME_SKIP = "FrameSkip";
	public static final String SCREEN_FILTER = "Filter";
	public static final String RENDERER = "Renderer";
	public static final String ENABLE_SOUND = "SoundCore2";
	public static final String SHOW_SOUND_MESSAGE = "ShowSoundMessage";
	public static final String INSTALLED_RELEASE = "InstalledRelease";
	public static final String EDIT_LAYOUT = "Controls.EditLayout";
	public static final String RESET_LAYOUT = "Controls.ResetLayout";
	public static final String LCD_SWAP = "LCDsSwap";
	public static final String BUTTON_TRANSPARENCY = "Controls.Transparency";
	public static final String HAPTIC = "Controls.Haptic";
	public static final String EDIT_MAPPINGS = "Controls.EditMappings";
	public static final String MAPPING_UP = "Controls.KeyMap.Up";
	public static final String MAPPING_DOWN = "Controls.KeyMap.Down";
	public static final String MAPPING_LEFT = "Controls.KeyMap.Left";
	public static final String MAPPING_RIGHT = "Controls.KeyMap.Right";
	public static final String MAPPING_A = "Controls.KeyMap.A";
	public static final String MAPPING_B = "Controls.KeyMap.B";
	public static final String MAPPING_X = "Controls.KeyMap.X";
	public static final String MAPPING_Y = "Controls.KeyMap.Y";
	public static final String MAPPING_START = "Controls.KeyMap.Start";
	public static final String MAPPING_SELECT = "Controls.KeyMap.Select";
	public static final String MAPPING_L = "Controls.KeyMap.L";
	public static final String MAPPING_R = "Controls.KeyMap.R";
	public static final String MAPPING_TOUCH = "Controls.KeyMap.Touch";
	public static final String MAPPING_OPTIONS = "Controls.KeyMap.Options";
	public static final String DONT_ROTATE_LCDS = "WindowRotate";
	public static final String LANGUAGE = "Language";
	public static final String ENABLE_MICROPHONE = "EnableMicrophone";
	public static final String ALWAYS_TOUCH = "Controls.AlwaysTouch";
	public static final String MAINTAIN_ASPECT_RATIO = "MaintainAspectRatio";
	public static final String MAIN_SCREEN_ONLY = "MainScreenOnly";
	public static final String SPECIFIC_SCREEN_ONLY = "SpecificScreenOnly";
	public static final String FIRST_OUYA_RUN = "FirstOUYARun";
	public static final String LAST_ROM_DIR = "LastROMDir";
	public static final String CPU_MODE = "CpuMode";
	public static final String SOUND_SYNC_MODE = "SynchMode";
	public static final String JIT_SIZE ="JitSize";
	public static final String ENABLE_FOG = "EnableFog";
	public static final String ENABLE_AUTOSAVE = "EnableAutosave";
	public static final String AUTOSVAE_FREQUENCY = "AutosaveFrequency";
	public static final String DISABLE_ROM_BROWSER = "DisableROMBrowser";
	
	static void applyMappingDefaults(SharedPreferences prefs, boolean overwrite) {
		final SharedPreferences.Editor editor = prefs.edit();
		if(overwrite || !prefs.contains(MAPPING_UP))
			editor.putInt(MAPPING_UP, KeyEvent.KEYCODE_DPAD_UP);
		if(overwrite || !prefs.contains(MAPPING_DOWN))
			editor.putInt(MAPPING_DOWN, KeyEvent.KEYCODE_DPAD_DOWN);
		if(overwrite || !prefs.contains(MAPPING_LEFT))
			editor.putInt(MAPPING_LEFT, KeyEvent.KEYCODE_DPAD_LEFT);
		if(overwrite || !prefs.contains(MAPPING_RIGHT))
			editor.putInt(MAPPING_RIGHT, KeyEvent.KEYCODE_DPAD_RIGHT);
		if(overwrite || !prefs.contains(MAPPING_A))
			editor.putInt(MAPPING_A, KeyEvent.KEYCODE_BUTTON_B);
		if(overwrite || !prefs.contains(MAPPING_B))
			editor.putInt(MAPPING_B, KeyEvent.KEYCODE_BUTTON_A);
		if(overwrite || !prefs.contains(MAPPING_X))
			editor.putInt(MAPPING_X, KeyEvent.KEYCODE_BUTTON_Y);
		if(overwrite || !prefs.contains(MAPPING_Y))
			editor.putInt(MAPPING_Y, KeyEvent.KEYCODE_BUTTON_X);
		if(overwrite || !prefs.contains(MAPPING_START))
			editor.putInt(MAPPING_START, KeyEvent.KEYCODE_BUTTON_THUMBR);
		if(overwrite || !prefs.contains(MAPPING_SELECT))
			editor.putInt(MAPPING_SELECT, KeyEvent.KEYCODE_BUTTON_THUMBL);
		if(overwrite || !prefs.contains(MAPPING_L))
			editor.putInt(MAPPING_L, KeyEvent.KEYCODE_BUTTON_L1);
		if(overwrite || !prefs.contains(MAPPING_R))
			editor.putInt(MAPPING_R, KeyEvent.KEYCODE_BUTTON_R1);
		if(overwrite || !prefs.contains(MAPPING_TOUCH))
			editor.putInt(MAPPING_TOUCH, KeyEvent.KEYCODE_T);
		if(overwrite || !prefs.contains(MAPPING_OPTIONS))
			editor.putInt(MAPPING_OPTIONS, KeyEvent.KEYCODE_BUTTON_START);
		editor.apply();
	}
	
	public static void applyDefaults(Context context) {
		final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
		SharedPreferences.Editor editor = prefs.edit();
		
		if(MainActivity.IS_OUYA) {
			//check if we should overwrite settings with the OUYA defaults
			if(!prefs.contains(FIRST_OUYA_RUN)) {
				editor.putBoolean(FIRST_OUYA_RUN, true);
				
				editor.putBoolean("Controls.Landscape.Draw", false);
				editor.putBoolean("Controls.Portrait.Draw", false);
				editor.putBoolean(SHOW_TOUCH_MESSAGE, false);
				editor.putBoolean(ALWAYS_TOUCH, true);
				editor.putBoolean(ENABLE_SOUND, true);
				editor.putBoolean(ENABLE_MICROPHONE, false);
				editor.putBoolean(SHOW_SOUND_MESSAGE, false);
				
				editor.apply();
				
			}
		}
		
		if(prefs.contains(INSTALLED_RELEASE)) {
			int currentInstall = prefs.getInt(INSTALLED_RELEASE, 0);
			if(prefs.contains(FRAME_SKIP)) {
				int currentFS = Integer.valueOf(prefs.getString(FRAME_SKIP, "0"));
				//from version 20->21 the default frameskip changed from 1 to 3
				if(currentInstall <= 20 && currentFS == 1)
					editor.putString(FRAME_SKIP, "3");
			}
			if(prefs.contains(CPU_MODE)) {
				//the new default cpu engine in 35 is "lightning jit"
				if(currentInstall <= 34)
					editor.putString(CPU_MODE, "2");
			}
		}
		
		if(!prefs.contains(SHOW_TOUCH_MESSAGE))
			editor.putBoolean(SHOW_TOUCH_MESSAGE, true);
		if(!prefs.contains(SHOW_FPS))
			editor.putBoolean(SHOW_FPS, false);
		if(!prefs.contains(FRAME_SKIP))
			editor.putString(FRAME_SKIP, "3");
		if(!prefs.contains(SCREEN_FILTER))
			editor.putString(SCREEN_FILTER, "0");
		if(!prefs.contains(RENDERER))
			editor.putString(RENDERER, "2");
		if(!prefs.contains(ENABLE_SOUND))
			editor.putBoolean(ENABLE_SOUND, false);
		if(!prefs.contains(SHOW_SOUND_MESSAGE))
			editor.putBoolean(SHOW_SOUND_MESSAGE, true);
		if(!prefs.contains(LCD_SWAP))
			editor.putBoolean(LCD_SWAP, false);
		if(!prefs.contains(DONT_ROTATE_LCDS))
			editor.putBoolean(DONT_ROTATE_LCDS, false);
		if(!prefs.contains(ENABLE_MICROPHONE))
			editor.putBoolean(ENABLE_MICROPHONE, true);
		if(!prefs.contains(MAINTAIN_ASPECT_RATIO))
			editor.putBoolean(MAINTAIN_ASPECT_RATIO, true);
		if(!prefs.contains(MAIN_SCREEN_ONLY))
			editor.putBoolean(MAIN_SCREEN_ONLY, false);
		if(!prefs.contains(SPECIFIC_SCREEN_ONLY))
			editor.putString(SPECIFIC_SCREEN_ONLY, "0");
		if(!prefs.contains(LAST_ROM_DIR))
			editor.putString(LAST_ROM_DIR, Environment.getExternalStorageDirectory().getPath() );
		if(!prefs.contains(CPU_MODE))
			editor.putString(CPU_MODE, "2");
		if(!prefs.contains(SOUND_SYNC_MODE))
			editor.putString(SOUND_SYNC_MODE, "0");
		if(!prefs.contains(ENABLE_FOG))
			editor.putBoolean(ENABLE_FOG, true);
		if(!prefs.contains(JIT_SIZE))
			editor.putInt(JIT_SIZE,10);
		if(!prefs.contains(ENABLE_AUTOSAVE))
			editor.putBoolean(ENABLE_AUTOSAVE, true);
		if(!prefs.contains(AUTOSVAE_FREQUENCY))
			editor.putString(AUTOSVAE_FREQUENCY, "1");
		if(!prefs.contains(DISABLE_ROM_BROWSER))
			editor.putBoolean(DISABLE_ROM_BROWSER, false);
		if(!prefs.contains(LANGUAGE)) {
			final String userLanguage = Locale.getDefault().getISO3Language();
			int lang = 1; //english
			if(userLanguage.equals("jpn")) 
				lang = 0;			
			else if(userLanguage.equals("fra")) 
				lang = 2;
			else if(userLanguage.equals("deu"))
				lang = 3;
			else if(userLanguage.equals("ita"))
				lang = 4;
			else if(userLanguage.equals("spa"))
				lang = 5;
			editor.putString(LANGUAGE, String.valueOf(lang));
		}
		applyLayoutDefaults(prefs, false);
		applyMappingDefaults(prefs, false);
		try {
			PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
			editor.putInt(INSTALLED_RELEASE, info.versionCode);
		} catch (NameNotFoundException e) {
		}
		editor.apply();
	}
	
}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/SliderPreference.java
================================================
package com.opendoorstudios.ds4droid;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SliderPreference extends DialogPreference implements OnSeekBarChangeListener {

	public SliderPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
		
	}
	
	private SeekBar seek;
	private int currentValue;
	private static final int defaultValue = 10;
	private TextView currentValueDisplay;
	
	@Override
	protected View onCreateDialogView() {

		currentValue = getPersistedInt(defaultValue);

		LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View view = inflater.inflate(R.layout.dialog_slider_noimg, null);

		((TextView) view.findViewById(R.id.min_value_noimg)).setText("0");
		((TextView) view.findViewById(R.id.max_value_noimg)).setText("100");
		currentValueDisplay = (TextView)view.findViewById(R.id.current_value_noimg);
		currentValueDisplay.setText(String.valueOf(currentValue));

		seek = (SeekBar) view.findViewById(R.id.seek_bar_noimg);
		seek.setMax(100);
		seek.setProgress(currentValue);
		seek.setOnSeekBarChangeListener(this);

		return view;
	}
	
	@Override
	protected void onDialogClosed(boolean positiveResult) {
		super.onDialogClosed(positiveResult);

		if (!positiveResult) {
			return;
		}

		if (shouldPersist()) {
			persistInt(currentValue);
		}

		notifyChanged();
	}
	
	@Override
	public CharSequence getSummary() {

		String summary = super.getSummary().toString();
		int value = getPersistedInt(currentValue);
		return summary + " (currently " + value + ")";
	}
	
	public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {
		currentValueDisplay.setText(String.valueOf(currentValue = value));
	}

	@Override
	public void onStartTrackingTouch(SeekBar paramSeekBar) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onStopTrackingTouch(SeekBar paramSeekBar) {
		// TODO Auto-generated method stub
		
	}

}


================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/TransparencyPreference.java
================================================
package com.opendoorstudios.ds4droid;

/*
Copyright (C) 2012 Jeffrey Quesnelle

This file is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.preference.DialogPreference;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class TransparencyPreference extends DialogPreference implements OnSeekBarChangeListener {

	final Drawable example;
	
	public TransparencyPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
		
		example = context.getResources().getDrawable(R.drawable.dpad);
	}

	private SeekBar seek;
	private ImageView img;
	private DisplayMetrics metrics;

	static final int defaultValue = 78;
	private int currentValue;

	@Override
	protected View onCreateDialogView() {

		currentValue = getPersistedInt(defaultValue);

		LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View view = inflater.inflate(R.layout.dialog_slider, null);

		((TextView) view.findViewById(R.id.min_value)).setText("0");
		((TextView) view.findViewById(R.id.max_value)).setText("100");

		seek = (SeekBar) view.findViewById(R.id.seek_bar);
		seek.setMax(100);
		seek.setProgress(currentValue);
		seek.setOnSeekBarChangeListener(this);

		img = (ImageView) view.findViewById(R.id.current_value);
		img.setImageDrawable(example);
		img.setAlpha((int)(currentValue * 2.55f));

		return view;
	}
	


	

	@Override
	protected void onDialogClosed(boolean positiveResult) {
		super.onDialogClosed(positiveResult);

		if (!positiveResult) {
			return;
		}

		if (shouldPersist()) {
			persistInt(currentValue);
		}

		notifyChanged();
	}

	@Override
	public CharSequence getSummary() {

		String summary = super.getSummary().toString();
		int value = getPersistedInt(currentValue);
		return summary + " (currently " + value + "%)";
	}

	public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {
		currentValue = value;
		img.setAlpha((int)(currentValue * 2.55f));
	}

	@Override
	public void onStartTrackingTouch(SeekBar arg0) {
		// TODO Auto-generated method stub
	}

	@Override
	public void onStopTrackingTouch(SeekBar arg0) {
		// TODO Auto-generated method stub
	}

}

================================================
FILE: app/src/main/java/com/opendoorstudios/ds4droid/ds4droidApplication.java
================================================
package com.opendoorstudios.ds4droid;

/*
	Copyright (C) 2012 Jeffrey Quesnelle

	This file is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/



import android.app.Application;

public class ds4droidApplication extends Application {
	
	@Override
	public void onCreate() {
		super.onCreate();
	}

}


================================================
FILE: app/src/main/jni/Android.mk
================================================
# Android ndk makefile for ds4droid

LOCAL_BUILD_PATH := $(call my-dir)

include $(CLEAR_VARS)

include $(LOCAL_BUILD_PATH)/cpudetect/cpudetect.mk

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
include $(LOCAL_BUILD_PATH)/desmume_neon.mk
include $(LOCAL_BUILD_PATH)/desmume_v7.mk
endif

include $(LOCAL_BUILD_PATH)/desmume_compat.mk
include $(LOCAL_BUILD_PATH)/desmume/src/android/7z/7z.mk



================================================
FILE: app/src/main/jni/Application.mk
================================================
# Android ndk makefile for nds4droid

APP_STL := gnustl_static
APP_ABI := armeabi armeabi-v7a x86

# For releases
APP_CFLAGS := -Ofast -ftree-vectorize -fsingle-precision-constant -fprefetch-loop-arrays -fvariable-expansion-in-unroller -ffast-math -funroll-loops -fomit-frame-pointer -fno-math-errno -funsafe-math-optimizations -ffinite-math-only -fdata-sections -fbranch-target-load-optimize2 -fno-exceptions -fno-stack-protector -fforce-addr -funswitch-loops -ftree-loop-im -ftree-loop-ivcanon -fivopts -ftree-loop-if-convert-stores -ftree-loop-distribution -floop-interchange -ftree-loop-linear -floop-block -Wno-psabi

# For profiling
#APP_CFLAGS := -Ofast -ftree-vectorize -fsingle-precision-constant -fprefetch-loop-arrays -fvariable-expansion-in-unroller -ffast-math -funroll-loops -fno-math-errno -funsafe-math-optimizations -ffinite-math-only -fdata-sections -fbranch-target-load-optimize2 -fno-exceptions -fno-stack-protector -fforce-addr -funswitch-loops -ftree-loop-im -ftree-loop-ivcanon -fivopts -ftree-loop-if-convert-stores -ftree-loop-distribution -floop-interchange -ftree-loop-linear -floop-block -Wno-psabi

# To generate data for profile guided optimizations
#APP_CFLAGS += -fprofile-generate=/sdcard/profile
#APP_LDFLAGS := -fprofile-generate=/sdcard/profile

# To use profile guide optimizaions
#APP_CFLAGS += -Wno-coverage-mismatch -fprofile-correction -fprofile-use=d:/ds/profile
#APP_LDFLAGS := -fprofile-use=d:/ds/profile

# For debugging
#APP_CFLAGS := -Wno-psabi

NDK_TOOLCHAIN_VERSION=4.9
APP_PLATFORM := android-9


================================================
FILE: app/src/main/jni/android-ndk-profiler/Android.mk
================================================
TARGET_thumb_release_CFLAGS := $(filter-out -ffunction-sections,$(TARGET_thumb_release_CFLAGS))
TARGET_thumb_release_CFLAGS := $(filter-out -fomit-frame-pointer,$(TARGET_thumb_release_CFLAGS))
TARGET_arm_release_CFLAGS := $(filter-out -ffunction-sections,$(TARGET_arm_release_CFLAGS))
TARGET_arm_release_CFLAGS := $(filter-out -fomit-frame-pointer,$(TARGET_arm_release_CFLAGS))
TARGET_CFLAGS := $(filter-out -ffunction-sections,$(TARGET_CFLAGS))

LOCAL_PATH := $(call my-dir)

# include libandprof.a in the build
include $(CLEAR_VARS)
LOCAL_MODULE := android-ndk-profiler
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libandroid-ndk-profiler.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_EXPORT_LDLIBS := -llog
include $(PREBUILT_STATIC_LIBRARY)


================================================
FILE: app/src/main/jni/android-ndk-profiler/prof.h
================================================
/*
 * Part of the android-ndk-profiler library.
 * Copyright (C) Richard Quirk
 *
 * This library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 */
#ifndef prof_h_seen
#define prof_h_seen
#ifdef __cplusplus
extern "C" {
#endif

void monstartup(const char *libname);
void moncleanup(void);

#ifdef __cplusplus
}
#endif
#endif


================================================
FILE: app/src/main/jni/cpudetect/cpu.cpp
================================================
/*
	Copyright (C) 2012 Jeffrey Quesnelle

	This file is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 2 of the License, or
	(at your option) any later version.

	This file is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with the this software.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <cpu-features.h>
#include <jni.h>

#define JNI_NOARGS(X) Java_com_opendoorstudios_ds4droid_DeSmuME_##X(JNIEnv* env, jclass* clazz)

#define CPUTYPE_COMPAT 0
#define CPUTYPE_V7 1
#define CPUTYPE_NEON 2

extern "C"
{

jint JNI_NOARGS(getCPUType)
{
	AndroidCpuFamily cpuFamily = android_getCpuFamily();
	uint64_t cpuFeatures = android_getCpuFeatures();
	if (cpuFamily == ANDROID_CPU_FAMILY_ARM &&
        (cpuFeatures & ANDROID_CPU_ARM_FEATURE_NEON) != 0)
    {
		return CPUTYPE_NEON;
    }
	else if (cpuFamily == ANDROID_CPU_FAMILY_ARM &&
        (cpuFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7) != 0)
	{
		return CPUTYPE_V7;
	}
    else
    {
        return CPUTYPE_COMPAT;
    }
}

jint JNI_NOARGS(getCPUFamily)
{
	return (int)android_getCpuFamily();
}

}

================================================
FILE: app/src/main/jni/cpudetect/cpudetect.mk
================================================
# Android ndk makefile for cpudetect

LOCAL_PATH := $(call my-dir)

MY_LOCAL_PATH := $(LOCAL_PATH)

include $(CLEAR_VARS)


LOCAL_MODULE    		:= 	libcpudetect				   
LOCAL_SRC_FILES			:= 	cpu.cpp
LOCAL_ARM_MODE 			:= thumb
LOCAL_ARM_NEON 			:= false
LOCAL_CFLAGS			:= -fexceptions
LOCAL_STATIC_LIBRARIES := cpufeatures

include $(BUILD_SHARED_LIBRARY)

$(call import-module,cpufeatures)

================================================
FILE: app/src/main/jni/desmume/AUTHORS
================================================
Original author
---------------
yopyop

Current team
------------
Guillaume Duhamel
Normmatt
Bernat Muoz (shash)
Riccardo Magliocchetti
Max Tabachenko (CrazyMax)
zeromus
rogerman
Luigi__

Contributors
------------
Allustar
amponzi
Anthony Molinaro
ape
Damien Nozay (damdoum)
delfare
Romain Vallet
snkmad
Theo Berkau
thoduv
Tim Seidel (Mighty Max)
Pascal Giard (evilynux)
Ben Jaques (masscat)
Jeff Bland
Bernat Muoz (shash)
matusz
nitsuja
gocha
pa__
adelikat
hi-coder
WinterMute
pengvado
dormito
ldesnogue

Thanks to our super testers for this release
------------
nash679
pokefan999
dottorleo


================================================
FILE: app/src/main/jni/desmume/COPYING
================================================
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that
Download .txt
gitextract_wy7erldf/

├── .gitignore
├── .idea/
│   ├── gradle.xml
│   └── runConfigurations.xml
├── LICENSE
├── README.md
├── app/
│   ├── build.gradle
│   ├── libs/
│   │   └── ouya-sdk.jar
│   ├── lint.xml
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── java/
│           │   └── com/
│           │       └── opendoorstudios/
│           │           └── ds4droid/
│           │               ├── About.java
│           │               ├── Button.java
│           │               ├── ButtonLayoutEditor.java
│           │               ├── Cheats.java
│           │               ├── Controls.java
│           │               ├── DeSmuME.java
│           │               ├── EmulatorThread.java
│           │               ├── FileDialog.java
│           │               ├── KeyMapPreference.java
│           │               ├── KeyMapSettings.java
│           │               ├── MainActivity.java
│           │               ├── NDSScanner/
│           │               │   ├── CollectionActivity.java
│           │               │   ├── NdsRom.java
│           │               │   ├── RomCollection.java
│           │               │   └── RomDatabaseHelper.java
│           │               ├── Settings.java
│           │               ├── SliderPreference.java
│           │               ├── TransparencyPreference.java
│           │               └── ds4droidApplication.java
│           ├── jni/
│           │   ├── Android.mk
│           │   ├── Application.mk
│           │   ├── android-ndk-profiler/
│           │   │   ├── Android.mk
│           │   │   ├── armeabi/
│           │   │   │   └── libandroid-ndk-profiler.a
│           │   │   ├── armeabi-v7a/
│           │   │   │   └── libandroid-ndk-profiler.a
│           │   │   └── prof.h
│           │   ├── cpudetect/
│           │   │   ├── cpu.cpp
│           │   │   └── cpudetect.mk
│           │   ├── desmume/
│           │   │   ├── AUTHORS
│           │   │   ├── COPYING
│           │   │   ├── ChangeLog
│           │   │   ├── INSTALL
│           │   │   ├── Makefile.am
│           │   │   ├── Makefile.in
│           │   │   ├── NEWS
│           │   │   ├── README
│           │   │   ├── README.LIN
│           │   │   ├── README.MAC
│           │   │   ├── README.WIN
│           │   │   ├── aclocal.m4
│           │   │   ├── autogen.sh
│           │   │   ├── compile
│           │   │   ├── config.guess
│           │   │   ├── config.sub
│           │   │   ├── configure
│           │   │   ├── configure.ac
│           │   │   ├── depcomp
│           │   │   ├── dsm.txt
│           │   │   ├── dsv.txt
│           │   │   ├── install-sh
│           │   │   ├── missing
│           │   │   ├── src/
│           │   │   │   ├── ArmAnalyze.cpp
│           │   │   │   ├── ArmAnalyze.h
│           │   │   │   ├── ArmAnalyze_tabdef.inc
│           │   │   │   ├── ArmCJit.cpp
│           │   │   │   ├── ArmCJit.h
│           │   │   │   ├── ArmLJit.cpp
│           │   │   │   ├── ArmLJit.h
│           │   │   │   ├── ArmThreadedInterpreter.cpp
│           │   │   │   ├── ArmThreadedInterpreter.h
│           │   │   │   ├── CpuBase.cpp
│           │   │   │   ├── CpuBase.h
│           │   │   │   ├── Disassembler.cpp
│           │   │   │   ├── Disassembler.h
│           │   │   │   ├── FIFO.cpp
│           │   │   │   ├── FIFO.h
│           │   │   │   ├── GPU.cpp
│           │   │   │   ├── GPU.h
│           │   │   │   ├── GPU_osd.cpp
│           │   │   │   ├── GPU_osd.h
│           │   │   │   ├── GPU_osd_stub.cpp
│           │   │   │   ├── JitCommon.cpp
│           │   │   │   ├── JitCommon.h
│           │   │   │   ├── MMU.cpp
│           │   │   │   ├── MMU.h
│           │   │   │   ├── MMU_timing.h
│           │   │   │   ├── Makefile.am
│           │   │   │   ├── Makefile.in
│           │   │   │   ├── NDSSystem.cpp
│           │   │   │   ├── NDSSystem.h
│           │   │   │   ├── OGLES2Render.cpp
│           │   │   │   ├── OGLES2Render.h
│           │   │   │   ├── OGLRender.cpp
│           │   │   │   ├── OGLRender.h
│           │   │   │   ├── OGLRender_3_2.cpp
│           │   │   │   ├── OGLRender_3_2.h
│           │   │   │   ├── PACKED.h
│           │   │   │   ├── PACKED_END.h
│           │   │   │   ├── ROMReader.cpp
│           │   │   │   ├── ROMReader.h
│           │   │   │   ├── SPU.cpp
│           │   │   │   ├── SPU.h
│           │   │   │   ├── addons/
│           │   │   │   │   ├── slot1_none.cpp
│           │   │   │   │   ├── slot1_r4.cpp
│           │   │   │   │   ├── slot1_retail.cpp
│           │   │   │   │   ├── slot1_retail_nand.cpp
│           │   │   │   │   ├── slot2_expMemory.cpp
│           │   │   │   │   ├── slot2_gbagame.cpp
│           │   │   │   │   ├── slot2_guitarGrip.cpp
│           │   │   │   │   ├── slot2_mpcf.cpp
│           │   │   │   │   ├── slot2_none.cpp
│           │   │   │   │   ├── slot2_paddle.cpp
│           │   │   │   │   ├── slot2_piano.cpp
│           │   │   │   │   └── slot2_rumblepak.cpp
│           │   │   │   ├── addons.cpp
│           │   │   │   ├── addons.h
│           │   │   │   ├── agg2d.h
│           │   │   │   ├── agg2d.inl
│           │   │   │   ├── aggdraw.cpp
│           │   │   │   ├── aggdraw.h
│           │   │   │   ├── android/
│           │   │   │   │   ├── 7z/
│           │   │   │   │   │   ├── 7z.mk
│           │   │   │   │   │   ├── Asm/
│           │   │   │   │   │   │   ├── x64/
│           │   │   │   │   │   │   │   └── 7zCrcT8U.asm
│           │   │   │   │   │   │   └── x86/
│           │   │   │   │   │   │       └── 7zCrcT8U.asm
│           │   │   │   │   │   ├── C/
│           │   │   │   │   │   │   ├── 7zCrc.c
│           │   │   │   │   │   │   ├── 7zCrc.h
│           │   │   │   │   │   │   ├── 7zCrcT8.c
│           │   │   │   │   │   │   ├── 7zVersion.h
│           │   │   │   │   │   │   ├── Aes.c
│           │   │   │   │   │   │   ├── Aes.h
│           │   │   │   │   │   │   ├── Alloc.h
│           │   │   │   │   │   │   ├── Bra.c
│           │   │   │   │   │   │   ├── Bra.h
│           │   │   │   │   │   │   ├── Bra86.c
│           │   │   │   │   │   │   ├── BraIA64.c
│           │   │   │   │   │   │   ├── BwtSort.c
│           │   │   │   │   │   │   ├── BwtSort.h
│           │   │   │   │   │   │   ├── CpuArch.h
│           │   │   │   │   │   │   ├── HuffEnc.c
│           │   │   │   │   │   │   ├── HuffEnc.h
│           │   │   │   │   │   │   ├── LzFind.c
│           │   │   │   │   │   │   ├── LzFind.h
│           │   │   │   │   │   │   ├── LzFindMt.c
│           │   │   │   │   │   │   ├── LzFindMt.h
│           │   │   │   │   │   │   ├── LzHash.h
│           │   │   │   │   │   │   ├── LzmaDec.c
│           │   │   │   │   │   │   ├── LzmaDec.h
│           │   │   │   │   │   │   ├── LzmaEnc.c
│           │   │   │   │   │   │   ├── LzmaEnc.h
│           │   │   │   │   │   │   ├── LzmaUtil/
│           │   │   │   │   │   │   │   ├── Lzma86Dec.c
│           │   │   │   │   │   │   │   ├── Lzma86Dec.h
│           │   │   │   │   │   │   │   ├── Lzma86Enc.c
│           │   │   │   │   │   │   │   └── Lzma86Enc.h
│           │   │   │   │   │   │   ├── RotateDefs.h
│           │   │   │   │   │   │   ├── Sha256.c
│           │   │   │   │   │   │   ├── Sha256.h
│           │   │   │   │   │   │   ├── Sort.c
│           │   │   │   │   │   │   ├── Sort.h
│           │   │   │   │   │   │   ├── Threads.c
│           │   │   │   │   │   │   ├── Threads.h
│           │   │   │   │   │   │   └── Types.h
│           │   │   │   │   │   ├── CPP/
│           │   │   │   │   │   │   ├── 7zip/
│           │   │   │   │   │   │   │   ├── Archive/
│           │   │   │   │   │   │   │   │   ├── 7z/
│           │   │   │   │   │   │   │   │   │   ├── 7zCompressionMode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zCompressionMode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zDecode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zEncode.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zEncode.h
│           │   │   │   │   │   │   │   │   │   ├── 7zExtract.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderInStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderInStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderOutStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zFolderOutStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHandler.h
│           │   │   │   │   │   │   │   │   │   ├── 7zHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zHeader.h
│           │   │   │   │   │   │   │   │   │   ├── 7zIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zIn.h
│           │   │   │   │   │   │   │   │   │   ├── 7zItem.h
│           │   │   │   │   │   │   │   │   │   ├── 7zOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zOut.h
│           │   │   │   │   │   │   │   │   │   ├── 7zProperties.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zProperties.h
│           │   │   │   │   │   │   │   │   │   ├── 7zRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zSpecStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── 7zSpecStream.h
│           │   │   │   │   │   │   │   │   │   ├── 7zUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── 7zUpdate.h
│           │   │   │   │   │   │   │   │   ├── ArchiveExports.cpp
│           │   │   │   │   │   │   │   │   ├── ArjHandler.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2/
│           │   │   │   │   │   │   │   │   │   ├── BZip2Handler.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Handler.h
│           │   │   │   │   │   │   │   │   │   ├── BZip2HandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Item.h
│           │   │   │   │   │   │   │   │   │   ├── BZip2Update.cpp
│           │   │   │   │   │   │   │   │   │   ├── BZip2Update.h
│           │   │   │   │   │   │   │   │   │   └── bz2Register.cpp
│           │   │   │   │   │   │   │   │   ├── Cab/
│           │   │   │   │   │   │   │   │   │   ├── CabBlockInStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabBlockInStream.h
│           │   │   │   │   │   │   │   │   │   ├── CabHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabHandler.h
│           │   │   │   │   │   │   │   │   │   ├── CabHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabHeader.h
│           │   │   │   │   │   │   │   │   │   ├── CabIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── CabIn.h
│           │   │   │   │   │   │   │   │   │   ├── CabItem.h
│           │   │   │   │   │   │   │   │   │   └── CabRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Chm/
│           │   │   │   │   │   │   │   │   │   ├── ChmHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ChmHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmHeader.h
│           │   │   │   │   │   │   │   │   │   ├── ChmIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ChmIn.h
│           │   │   │   │   │   │   │   │   │   └── ChmRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Com/
│           │   │   │   │   │   │   │   │   │   ├── ComHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ComHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ComIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ComIn.h
│           │   │   │   │   │   │   │   │   │   └── ComRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2.h
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2MT.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2MT.h
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2ST.cpp
│           │   │   │   │   │   │   │   │   │   ├── CoderMixer2ST.h
│           │   │   │   │   │   │   │   │   │   ├── CrossThreadProgress.cpp
│           │   │   │   │   │   │   │   │   │   ├── CrossThreadProgress.h
│           │   │   │   │   │   │   │   │   │   ├── DummyOutStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── DummyOutStream.h
│           │   │   │   │   │   │   │   │   │   ├── FindSignature.cpp
│           │   │   │   │   │   │   │   │   │   ├── FindSignature.h
│           │   │   │   │   │   │   │   │   │   ├── HandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── HandlerOut.h
│           │   │   │   │   │   │   │   │   │   ├── InStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── InStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   ├── ItemNameUtils.cpp
│           │   │   │   │   │   │   │   │   │   ├── ItemNameUtils.h
│           │   │   │   │   │   │   │   │   │   ├── MultiStream.cpp
│           │   │   │   │   │   │   │   │   │   ├── MultiStream.h
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithSha1.cpp
│           │   │   │   │   │   │   │   │   │   ├── OutStreamWithSha1.h
│           │   │   │   │   │   │   │   │   │   ├── ParseProperties.cpp
│           │   │   │   │   │   │   │   │   │   └── ParseProperties.h
│           │   │   │   │   │   │   │   │   ├── Cpio/
│           │   │   │   │   │   │   │   │   │   ├── CpioHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioHandler.h
│           │   │   │   │   │   │   │   │   │   ├── CpioHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioHeader.h
│           │   │   │   │   │   │   │   │   │   ├── CpioIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── CpioIn.h
│           │   │   │   │   │   │   │   │   │   ├── CpioItem.h
│           │   │   │   │   │   │   │   │   │   └── CpioRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DebHandler.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports2.cpp
│           │   │   │   │   │   │   │   │   ├── DmgHandler.cpp
│           │   │   │   │   │   │   │   │   ├── ElfHandler.cpp
│           │   │   │   │   │   │   │   │   ├── GZip/
│           │   │   │   │   │   │   │   │   │   ├── GZipHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHandler.h
│           │   │   │   │   │   │   │   │   │   ├── GZipHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipHeader.h
│           │   │   │   │   │   │   │   │   │   ├── GZipIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipIn.h
│           │   │   │   │   │   │   │   │   │   ├── GZipItem.h
│           │   │   │   │   │   │   │   │   │   ├── GZipOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipOut.h
│           │   │   │   │   │   │   │   │   │   ├── GZipRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── GZipUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── GZipUpdate.h
│           │   │   │   │   │   │   │   │   ├── Hfs/
│           │   │   │   │   │   │   │   │   │   ├── HfsHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── HfsHandler.h
│           │   │   │   │   │   │   │   │   │   ├── HfsIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── HfsIn.h
│           │   │   │   │   │   │   │   │   │   └── HfsRegister.cpp
│           │   │   │   │   │   │   │   │   ├── IArchive.h
│           │   │   │   │   │   │   │   │   ├── Iso/
│           │   │   │   │   │   │   │   │   │   ├── IsoHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoHandler.h
│           │   │   │   │   │   │   │   │   │   ├── IsoHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoHeader.h
│           │   │   │   │   │   │   │   │   │   ├── IsoIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── IsoIn.h
│           │   │   │   │   │   │   │   │   │   ├── IsoItem.h
│           │   │   │   │   │   │   │   │   │   └── IsoRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzh/
│           │   │   │   │   │   │   │   │   │   ├── LzhCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhCRC.h
│           │   │   │   │   │   │   │   │   │   ├── LzhHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhHandler.h
│           │   │   │   │   │   │   │   │   │   ├── LzhHeader.h
│           │   │   │   │   │   │   │   │   │   ├── LzhIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhIn.h
│           │   │   │   │   │   │   │   │   │   ├── LzhItem.h
│           │   │   │   │   │   │   │   │   │   ├── LzhOutStreamWithCRC.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzhOutStreamWithCRC.h
│           │   │   │   │   │   │   │   │   │   └── LzhRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzma/
│           │   │   │   │   │   │   │   │   │   ├── LzmaArcRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaFiltersDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaFiltersDecode.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaHandler.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaIn.h
│           │   │   │   │   │   │   │   │   │   └── LzmaItem.h
│           │   │   │   │   │   │   │   │   ├── MachoHandler.cpp
│           │   │   │   │   │   │   │   │   ├── MubHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Nsis/
│           │   │   │   │   │   │   │   │   │   ├── NsisDecode.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisDecode.h
│           │   │   │   │   │   │   │   │   │   ├── NsisHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisHandler.h
│           │   │   │   │   │   │   │   │   │   ├── NsisIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── NsisIn.h
│           │   │   │   │   │   │   │   │   │   └── NsisRegister.cpp
│           │   │   │   │   │   │   │   │   ├── PeHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Rar/
│           │   │   │   │   │   │   │   │   │   ├── RarHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarHandler.h
│           │   │   │   │   │   │   │   │   │   ├── RarHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarHeader.h
│           │   │   │   │   │   │   │   │   │   ├── RarIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarIn.h
│           │   │   │   │   │   │   │   │   │   ├── RarItem.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarItem.h
│           │   │   │   │   │   │   │   │   │   ├── RarRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── RarVolumeInStream.cpp
│           │   │   │   │   │   │   │   │   │   └── RarVolumeInStream.h
│           │   │   │   │   │   │   │   │   ├── RpmHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Split/
│           │   │   │   │   │   │   │   │   │   ├── SplitHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── SplitHandler.h
│           │   │   │   │   │   │   │   │   │   ├── SplitHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   └── SplitRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Tar/
│           │   │   │   │   │   │   │   │   │   ├── TarHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHandler.h
│           │   │   │   │   │   │   │   │   │   ├── TarHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarHeader.h
│           │   │   │   │   │   │   │   │   │   ├── TarIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarIn.h
│           │   │   │   │   │   │   │   │   │   ├── TarItem.h
│           │   │   │   │   │   │   │   │   │   ├── TarOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarOut.h
│           │   │   │   │   │   │   │   │   │   ├── TarRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── TarUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── TarUpdate.h
│           │   │   │   │   │   │   │   │   ├── Udf/
│           │   │   │   │   │   │   │   │   │   ├── UdfHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── UdfHandler.h
│           │   │   │   │   │   │   │   │   │   ├── UdfIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── UdfIn.h
│           │   │   │   │   │   │   │   │   │   └── UdfRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Wim/
│           │   │   │   │   │   │   │   │   │   ├── WimHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── WimHandler.h
│           │   │   │   │   │   │   │   │   │   ├── WimIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── WimIn.h
│           │   │   │   │   │   │   │   │   │   └── WimRegister.cpp
│           │   │   │   │   │   │   │   │   ├── XarHandler.cpp
│           │   │   │   │   │   │   │   │   ├── ZHandler.cpp
│           │   │   │   │   │   │   │   │   ├── Zip/
│           │   │   │   │   │   │   │   │   │   ├── ZipAddCommon.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipAddCommon.h
│           │   │   │   │   │   │   │   │   │   ├── ZipCompressionMode.h
│           │   │   │   │   │   │   │   │   │   ├── ZipHandler.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHandler.h
│           │   │   │   │   │   │   │   │   │   ├── ZipHandlerOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHeader.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipHeader.h
│           │   │   │   │   │   │   │   │   │   ├── ZipIn.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipIn.h
│           │   │   │   │   │   │   │   │   │   ├── ZipItem.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipItem.h
│           │   │   │   │   │   │   │   │   │   ├── ZipItemEx.h
│           │   │   │   │   │   │   │   │   │   ├── ZipOut.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipOut.h
│           │   │   │   │   │   │   │   │   │   ├── ZipRegister.cpp
│           │   │   │   │   │   │   │   │   │   ├── ZipUpdate.cpp
│           │   │   │   │   │   │   │   │   │   └── ZipUpdate.h
│           │   │   │   │   │   │   │   │   └── obj/
│           │   │   │   │   │   │   │   │       └── local/
│           │   │   │   │   │   │   │   │           └── armeabi-v7a/
│           │   │   │   │   │   │   │   │               ├── app_process
│           │   │   │   │   │   │   │   │               ├── gdb.setup
│           │   │   │   │   │   │   │   │               └── linker
│           │   │   │   │   │   │   │   ├── Bundles/
│           │   │   │   │   │   │   │   │   ├── Alone/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── Alone7z/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── AloneGCOV/
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── Format7zFree/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   └── SFXCon/
│           │   │   │   │   │   │   │   │       ├── Main.cpp
│           │   │   │   │   │   │   │   │       ├── makefile
│           │   │   │   │   │   │   │   │       ├── makefile.depend
│           │   │   │   │   │   │   │   │       └── makefile.list
│           │   │   │   │   │   │   │   ├── CMAKE/
│           │   │   │   │   │   │   │   │   ├── CMakeLists_Alone.txt
│           │   │   │   │   │   │   │   │   └── generate.sh
│           │   │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   │   ├── CreateCoder.cpp
│           │   │   │   │   │   │   │   │   ├── CreateCoder.h
│           │   │   │   │   │   │   │   │   ├── FilePathAutoRename.cpp
│           │   │   │   │   │   │   │   │   ├── FilePathAutoRename.h
│           │   │   │   │   │   │   │   │   ├── FileStreams.cpp
│           │   │   │   │   │   │   │   │   ├── FileStreams.h
│           │   │   │   │   │   │   │   │   ├── FilterCoder.cpp
│           │   │   │   │   │   │   │   │   ├── FilterCoder.h
│           │   │   │   │   │   │   │   │   ├── InBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── InBuffer.h
│           │   │   │   │   │   │   │   │   ├── InOutTempBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── InOutTempBuffer.h
│           │   │   │   │   │   │   │   │   ├── LimitedStreams.cpp
│           │   │   │   │   │   │   │   │   ├── LimitedStreams.h
│           │   │   │   │   │   │   │   │   ├── LockedStream.cpp
│           │   │   │   │   │   │   │   │   ├── LockedStream.h
│           │   │   │   │   │   │   │   │   ├── MSBFDecoder.h
│           │   │   │   │   │   │   │   │   ├── MSBFEncoder.h
│           │   │   │   │   │   │   │   │   ├── MemBlocks.cpp
│           │   │   │   │   │   │   │   │   ├── MemBlocks.h
│           │   │   │   │   │   │   │   │   ├── MethodId.cpp
│           │   │   │   │   │   │   │   │   ├── MethodId.h
│           │   │   │   │   │   │   │   │   ├── MethodProps.cpp
│           │   │   │   │   │   │   │   │   ├── MethodProps.h
│           │   │   │   │   │   │   │   │   ├── OffsetStream.cpp
│           │   │   │   │   │   │   │   │   ├── OffsetStream.h
│           │   │   │   │   │   │   │   │   ├── OutBuffer.cpp
│           │   │   │   │   │   │   │   │   ├── OutBuffer.h
│           │   │   │   │   │   │   │   │   ├── OutMemStream.cpp
│           │   │   │   │   │   │   │   │   ├── OutMemStream.h
│           │   │   │   │   │   │   │   │   ├── ProgressMt.cpp
│           │   │   │   │   │   │   │   │   ├── ProgressMt.h
│           │   │   │   │   │   │   │   │   ├── ProgressUtils.cpp
│           │   │   │   │   │   │   │   │   ├── ProgressUtils.h
│           │   │   │   │   │   │   │   │   ├── RegisterArc.h
│           │   │   │   │   │   │   │   │   ├── RegisterCodec.h
│           │   │   │   │   │   │   │   │   ├── StreamBinder.cpp
│           │   │   │   │   │   │   │   │   ├── StreamBinder.h
│           │   │   │   │   │   │   │   │   ├── StreamObjects.cpp
│           │   │   │   │   │   │   │   │   ├── StreamObjects.h
│           │   │   │   │   │   │   │   │   ├── StreamUtils.cpp
│           │   │   │   │   │   │   │   │   ├── StreamUtils.h
│           │   │   │   │   │   │   │   │   ├── VirtThread.cpp
│           │   │   │   │   │   │   │   │   └── VirtThread.h
│           │   │   │   │   │   │   │   ├── Compress/
│           │   │   │   │   │   │   │   │   ├── ArjDecoder1.cpp
│           │   │   │   │   │   │   │   │   ├── ArjDecoder1.h
│           │   │   │   │   │   │   │   │   ├── ArjDecoder2.cpp
│           │   │   │   │   │   │   │   │   ├── ArjDecoder2.h
│           │   │   │   │   │   │   │   │   ├── BZip2Const.h
│           │   │   │   │   │   │   │   │   ├── BZip2Crc.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Crc.h
│           │   │   │   │   │   │   │   │   ├── BZip2Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Decoder.h
│           │   │   │   │   │   │   │   │   ├── BZip2Encoder.cpp
│           │   │   │   │   │   │   │   │   ├── BZip2Encoder.h
│           │   │   │   │   │   │   │   │   ├── BZip2Register.cpp
│           │   │   │   │   │   │   │   │   ├── Bcj2Coder.cpp
│           │   │   │   │   │   │   │   │   ├── Bcj2Coder.h
│           │   │   │   │   │   │   │   │   ├── Bcj2Register.cpp
│           │   │   │   │   │   │   │   │   ├── BcjCoder.cpp
│           │   │   │   │   │   │   │   │   ├── BcjCoder.h
│           │   │   │   │   │   │   │   │   ├── BcjRegister.cpp
│           │   │   │   │   │   │   │   │   ├── BitlDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── BitlDecoder.h
│           │   │   │   │   │   │   │   │   ├── BitlEncoder.h
│           │   │   │   │   │   │   │   │   ├── BitmDecoder.h
│           │   │   │   │   │   │   │   │   ├── BitmEncoder.h
│           │   │   │   │   │   │   │   │   ├── BranchCoder.cpp
│           │   │   │   │   │   │   │   │   ├── BranchCoder.h
│           │   │   │   │   │   │   │   │   ├── BranchMisc.cpp
│           │   │   │   │   │   │   │   │   ├── BranchMisc.h
│           │   │   │   │   │   │   │   │   ├── BranchRegister.cpp
│           │   │   │   │   │   │   │   │   ├── ByteSwap.cpp
│           │   │   │   │   │   │   │   │   ├── ByteSwap.h
│           │   │   │   │   │   │   │   │   ├── ByteSwapRegister.cpp
│           │   │   │   │   │   │   │   │   ├── CodecExports.cpp
│           │   │   │   │   │   │   │   │   ├── CopyCoder.cpp
│           │   │   │   │   │   │   │   │   ├── CopyCoder.h
│           │   │   │   │   │   │   │   │   ├── CopyRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Deflate64Register.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateConst.h
│           │   │   │   │   │   │   │   │   ├── DeflateDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateDecoder.h
│           │   │   │   │   │   │   │   │   ├── DeflateEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateEncoder.h
│           │   │   │   │   │   │   │   │   ├── DeflateNsisRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DeflateRegister.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports.cpp
│           │   │   │   │   │   │   │   │   ├── DllExports2.cpp
│           │   │   │   │   │   │   │   │   ├── HuffmanDecoder.h
│           │   │   │   │   │   │   │   │   ├── ImplodeDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ImplodeDecoder.h
│           │   │   │   │   │   │   │   │   ├── ImplodeHuffmanDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ImplodeHuffmanDecoder.h
│           │   │   │   │   │   │   │   │   ├── LZMA_Alone/
│           │   │   │   │   │   │   │   │   │   ├── LzmaAlone.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBench.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBench.h
│           │   │   │   │   │   │   │   │   │   ├── LzmaBenchCon.cpp
│           │   │   │   │   │   │   │   │   │   ├── LzmaBenchCon.h
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── LzOutWindow.cpp
│           │   │   │   │   │   │   │   │   ├── LzOutWindow.h
│           │   │   │   │   │   │   │   │   ├── LzhDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzhDecoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzmaDecoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzmaEncoder.h
│           │   │   │   │   │   │   │   │   ├── LzmaRegister.cpp
│           │   │   │   │   │   │   │   │   ├── Lzx.h
│           │   │   │   │   │   │   │   │   ├── Lzx86Converter.cpp
│           │   │   │   │   │   │   │   │   ├── Lzx86Converter.h
│           │   │   │   │   │   │   │   │   ├── LzxDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── LzxDecoder.h
│           │   │   │   │   │   │   │   │   ├── Mtf8.h
│           │   │   │   │   │   │   │   │   ├── PPMD_Alone/
│           │   │   │   │   │   │   │   │   │   ├── PpmdAlone.cpp
│           │   │   │   │   │   │   │   │   │   └── makefile
│           │   │   │   │   │   │   │   │   ├── PpmdContext.h
│           │   │   │   │   │   │   │   │   ├── PpmdDecode.h
│           │   │   │   │   │   │   │   │   ├── PpmdDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdDecoder.h
│           │   │   │   │   │   │   │   │   ├── PpmdEncode.h
│           │   │   │   │   │   │   │   │   ├── PpmdEncoder.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdEncoder.h
│           │   │   │   │   │   │   │   │   ├── PpmdRegister.cpp
│           │   │   │   │   │   │   │   │   ├── PpmdSubAlloc.h
│           │   │   │   │   │   │   │   │   ├── PpmdType.h
│           │   │   │   │   │   │   │   │   ├── QuantumDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── QuantumDecoder.h
│           │   │   │   │   │   │   │   │   ├── RangeCoder.h
│           │   │   │   │   │   │   │   │   ├── RangeCoderBit.h
│           │   │   │   │   │   │   │   │   ├── Rar/
│           │   │   │   │   │   │   │   │   │   ├── makefile
│           │   │   │   │   │   │   │   │   │   ├── makefile.depend
│           │   │   │   │   │   │   │   │   │   └── makefile.list
│           │   │   │   │   │   │   │   │   ├── Rar1Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar1Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar2Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar2Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar3Decoder.cpp
│           │   │   │   │   │   │   │   │   ├── Rar3Decoder.h
│           │   │   │   │   │   │   │   │   ├── Rar3Vm.cpp
│           │   │   │   │   │   │   │   │   ├── Rar3Vm.h
│           │   │   │   │   │   │   │   │   ├── RarCodecsRegister.cpp
│           │   │   │   │   │   │   │   │   ├── ShrinkDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ShrinkDecoder.h
│           │   │   │   │   │   │   │   │   ├── ZDecoder.cpp
│           │   │   │   │   │   │   │   │   ├── ZDecoder.h
│           │   │   │   │   │   │   │   │   ├── ZlibDecoder.cpp
│           │   │   │   │   │   │   │   │   └── ZlibDecoder.h
│           │   │   │   │   │   │   │   ├── Crypto/
│           │   │   │   │   │   │   │   │   ├── 7zAes.cpp
│           │   │   │   │   │   │   │   │   ├── 7zAes.h
│           │   │   │   │   │   │   │   │   ├── 7zAesRegister.cpp
│           │   │   │   │   │   │   │   │   ├── HmacSha1.cpp
│           │   │   │   │   │   │   │   │   ├── HmacSha1.h
│           │   │   │   │   │   │   │   │   ├── MyAes.cpp
│           │   │   │   │   │   │   │   │   ├── MyAes.h
│           │   │   │   │   │   │   │   │   ├── Pbkdf2HmacSha1.cpp
│           │   │   │   │   │   │   │   │   ├── Pbkdf2HmacSha1.h
│           │   │   │   │   │   │   │   │   ├── RandGen.cpp
│           │   │   │   │   │   │   │   │   ├── RandGen.h
│           │   │   │   │   │   │   │   │   ├── Rar20Crypto.cpp
│           │   │   │   │   │   │   │   │   ├── Rar20Crypto.h
│           │   │   │   │   │   │   │   │   ├── RarAes.cpp
│           │   │   │   │   │   │   │   │   ├── RarAes.h
│           │   │   │   │   │   │   │   │   ├── Sha1.cpp
│           │   │   │   │   │   │   │   │   ├── Sha1.h
│           │   │   │   │   │   │   │   │   ├── WzAes.cpp
│           │   │   │   │   │   │   │   │   ├── WzAes.h
│           │   │   │   │   │   │   │   │   ├── ZipCrypto.cpp
│           │   │   │   │   │   │   │   │   ├── ZipCrypto.h
│           │   │   │   │   │   │   │   │   ├── ZipStrong.cpp
│           │   │   │   │   │   │   │   │   └── ZipStrong.h
│           │   │   │   │   │   │   │   ├── ICoder.h
│           │   │   │   │   │   │   │   ├── IDecl.h
│           │   │   │   │   │   │   │   ├── IPassword.h
│           │   │   │   │   │   │   │   ├── IProgress.h
│           │   │   │   │   │   │   │   ├── IStream.h
│           │   │   │   │   │   │   │   ├── MyVersion.h
│           │   │   │   │   │   │   │   ├── PropID.h
│           │   │   │   │   │   │   │   └── UI/
│           │   │   │   │   │   │   │       ├── Agent/
│           │   │   │   │   │   │   │       │   ├── Agent.cpp
│           │   │   │   │   │   │   │       │   ├── Agent.h
│           │   │   │   │   │   │   │       │   ├── AgentOut.cpp
│           │   │   │   │   │   │   │       │   ├── AgentProxy.cpp
│           │   │   │   │   │   │   │       │   ├── AgentProxy.h
│           │   │   │   │   │   │   │       │   ├── ArchiveFolder.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveFolderOpen.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveFolderOut.cpp
│           │   │   │   │   │   │   │       │   ├── IFolderArchive.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackAgent.cpp
│           │   │   │   │   │   │   │       │   └── UpdateCallbackAgent.h
│           │   │   │   │   │   │   │       ├── Client7z/
│           │   │   │   │   │   │   │       │   ├── Client7z.cpp
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── ClientCodec/
│           │   │   │   │   │   │   │       │   ├── ClientCodec.cpp
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── Common/
│           │   │   │   │   │   │   │       │   ├── ArchiveCommandLine.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveCommandLine.h
│           │   │   │   │   │   │   │       │   ├── ArchiveExtractCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── ArchiveName.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveName.h
│           │   │   │   │   │   │   │       │   ├── ArchiveOpenCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ArchiveOpenCallback.h
│           │   │   │   │   │   │   │       │   ├── CompressCall.cpp
│           │   │   │   │   │   │   │       │   ├── CompressCall.h
│           │   │   │   │   │   │   │       │   ├── DefaultName.cpp
│           │   │   │   │   │   │   │       │   ├── DefaultName.h
│           │   │   │   │   │   │   │       │   ├── DirItem.h
│           │   │   │   │   │   │   │       │   ├── EnumDirItems.cpp
│           │   │   │   │   │   │   │       │   ├── EnumDirItems.h
│           │   │   │   │   │   │   │       │   ├── ExitCode.h
│           │   │   │   │   │   │   │       │   ├── Extract.cpp
│           │   │   │   │   │   │   │       │   ├── Extract.h
│           │   │   │   │   │   │   │       │   ├── ExtractMode.h
│           │   │   │   │   │   │   │       │   ├── ExtractingFilePath.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractingFilePath.h
│           │   │   │   │   │   │   │       │   ├── HandlerLoader.h
│           │   │   │   │   │   │   │       │   ├── IFileExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── LoadCodecs.cpp
│           │   │   │   │   │   │   │       │   ├── LoadCodecs.h
│           │   │   │   │   │   │   │       │   ├── OpenArchive.cpp
│           │   │   │   │   │   │   │       │   ├── OpenArchive.h
│           │   │   │   │   │   │   │       │   ├── PropIDUtils.cpp
│           │   │   │   │   │   │   │       │   ├── PropIDUtils.h
│           │   │   │   │   │   │   │       │   ├── Property.h
│           │   │   │   │   │   │   │       │   ├── SetProperties.cpp
│           │   │   │   │   │   │   │       │   ├── SetProperties.h
│           │   │   │   │   │   │   │       │   ├── SortUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SortUtils.h
│           │   │   │   │   │   │   │       │   ├── TempFiles.cpp
│           │   │   │   │   │   │   │       │   ├── TempFiles.h
│           │   │   │   │   │   │   │       │   ├── Update.cpp
│           │   │   │   │   │   │   │       │   ├── Update.h
│           │   │   │   │   │   │   │       │   ├── UpdateAction.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateAction.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallback.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallback.h
│           │   │   │   │   │   │   │       │   ├── UpdatePair.cpp
│           │   │   │   │   │   │   │       │   ├── UpdatePair.h
│           │   │   │   │   │   │   │       │   ├── UpdateProduce.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateProduce.h
│           │   │   │   │   │   │   │       │   ├── WorkDir.cpp
│           │   │   │   │   │   │   │       │   ├── WorkDir.h
│           │   │   │   │   │   │   │       │   ├── ZipRegistry.cpp
│           │   │   │   │   │   │   │       │   └── ZipRegistry.h
│           │   │   │   │   │   │   │       ├── Console/
│           │   │   │   │   │   │   │       │   ├── ConsoleClose.cpp
│           │   │   │   │   │   │   │       │   ├── ConsoleClose.h
│           │   │   │   │   │   │   │       │   ├── ExtractCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── List.cpp
│           │   │   │   │   │   │   │       │   ├── List.h
│           │   │   │   │   │   │   │       │   ├── Main.cpp
│           │   │   │   │   │   │   │       │   ├── MainAr.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── PercentPrinter.cpp
│           │   │   │   │   │   │   │       │   ├── PercentPrinter.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackConsole.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallbackConsole.h
│           │   │   │   │   │   │   │       │   ├── UserInputUtils.cpp
│           │   │   │   │   │   │   │       │   ├── UserInputUtils.h
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   └── makefile.list
│           │   │   │   │   │   │   │       ├── Explorer/
│           │   │   │   │   │   │   │       │   ├── MyMessages.cpp
│           │   │   │   │   │   │   │       │   └── MyMessages.h
│           │   │   │   │   │   │   │       ├── FileManager/
│           │   │   │   │   │   │   │       │   ├── App.cpp
│           │   │   │   │   │   │   │       │   ├── App.h
│           │   │   │   │   │   │   │       │   ├── AppState.h
│           │   │   │   │   │   │   │       │   ├── ClassDefs.cpp
│           │   │   │   │   │   │   │       │   ├── ComboDialog.cpp
│           │   │   │   │   │   │   │       │   ├── ComboDialog.h
│           │   │   │   │   │   │   │       │   ├── ComboDialogRes.h
│           │   │   │   │   │   │   │       │   ├── ComboDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── CopyDialog.cpp
│           │   │   │   │   │   │   │       │   ├── CopyDialog.h
│           │   │   │   │   │   │   │       │   ├── CopyDialogRes.h
│           │   │   │   │   │   │   │       │   ├── CopyDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallback.cpp
│           │   │   │   │   │   │   │       │   ├── ExtractCallback.h
│           │   │   │   │   │   │   │       │   ├── FM.cpp
│           │   │   │   │   │   │   │       │   ├── FM_rc.cpp
│           │   │   │   │   │   │   │       │   ├── FSDrives.h.out
│           │   │   │   │   │   │   │       │   ├── FSFolder.cpp
│           │   │   │   │   │   │   │       │   ├── FSFolder.h
│           │   │   │   │   │   │   │       │   ├── FSFolderCopy.cpp
│           │   │   │   │   │   │   │       │   ├── FileFolderPluginOpen.cpp
│           │   │   │   │   │   │   │       │   ├── FileFolderPluginOpen.h
│           │   │   │   │   │   │   │       │   ├── FormatUtils.cpp
│           │   │   │   │   │   │   │       │   ├── FormatUtils.h
│           │   │   │   │   │   │   │       │   ├── HelpUtils.h
│           │   │   │   │   │   │   │       │   ├── IFolder.h
│           │   │   │   │   │   │   │       │   ├── LangUtils.cpp
│           │   │   │   │   │   │   │       │   ├── LangUtils.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialog.cpp
│           │   │   │   │   │   │   │       │   ├── ListViewDialog.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialogRes.h
│           │   │   │   │   │   │   │       │   ├── ListViewDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── MessagesDialog.cpp
│           │   │   │   │   │   │   │       │   ├── MessagesDialog.h
│           │   │   │   │   │   │   │       │   ├── MessagesDialogRes.h
│           │   │   │   │   │   │   │       │   ├── MessagesDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── MyLoadMenu.cpp
│           │   │   │   │   │   │   │       │   ├── MyLoadMenu.h
│           │   │   │   │   │   │   │       │   ├── NetFolder.h.OUT
│           │   │   │   │   │   │   │       │   ├── OpenCallback.cpp
│           │   │   │   │   │   │   │       │   ├── OpenCallback.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog.cpp
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialogRes.h
│           │   │   │   │   │   │   │       │   ├── OverwriteDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── Panel.cpp
│           │   │   │   │   │   │   │       │   ├── Panel.h
│           │   │   │   │   │   │   │       │   ├── PanelCopy.cpp
│           │   │   │   │   │   │   │       │   ├── PanelCrc.cpp
│           │   │   │   │   │   │   │       │   ├── PanelFolderChange.cpp
│           │   │   │   │   │   │   │       │   ├── PanelItemOpen.cpp
│           │   │   │   │   │   │   │       │   ├── PanelItems.cpp
│           │   │   │   │   │   │   │       │   ├── PanelListNotify.cpp
│           │   │   │   │   │   │   │       │   ├── PanelMenu.cpp
│           │   │   │   │   │   │   │       │   ├── PanelOperations.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSelect.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSort.cpp
│           │   │   │   │   │   │   │       │   ├── PanelSplitFile.cpp
│           │   │   │   │   │   │   │       │   ├── PasswordDialog.cpp
│           │   │   │   │   │   │   │       │   ├── PasswordDialog.h
│           │   │   │   │   │   │   │       │   ├── PasswordDialogRes.h
│           │   │   │   │   │   │   │       │   ├── PasswordDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── PhysDriveFolder.h.out
│           │   │   │   │   │   │   │       │   ├── PluginInterface.h
│           │   │   │   │   │   │   │       │   ├── PluginLoader.h
│           │   │   │   │   │   │   │       │   ├── ProgramLocation.cpp
│           │   │   │   │   │   │   │       │   ├── ProgramLocation.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2.cpp
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2Res.h
│           │   │   │   │   │   │   │       │   ├── ProgressDialog2_rc.cpp
│           │   │   │   │   │   │   │       │   ├── ProgressDialogRes.h
│           │   │   │   │   │   │   │       │   ├── PropertyName.cpp
│           │   │   │   │   │   │   │       │   ├── PropertyName.h
│           │   │   │   │   │   │   │       │   ├── PropertyNameRes.h
│           │   │   │   │   │   │   │       │   ├── RegistryAssociations.cpp
│           │   │   │   │   │   │   │       │   ├── RegistryAssociations.h
│           │   │   │   │   │   │   │       │   ├── RegistryPlugins.h
│           │   │   │   │   │   │   │       │   ├── RegistryUtils.cpp
│           │   │   │   │   │   │   │       │   ├── RegistryUtils.h
│           │   │   │   │   │   │   │       │   ├── RootFolder.cpp
│           │   │   │   │   │   │   │       │   ├── RootFolder.h
│           │   │   │   │   │   │   │       │   ├── SplitDialog.cpp
│           │   │   │   │   │   │   │       │   ├── SplitDialog.h
│           │   │   │   │   │   │   │       │   ├── SplitDialogRes.h
│           │   │   │   │   │   │   │       │   ├── SplitDialog_rc.cpp
│           │   │   │   │   │   │   │       │   ├── SplitUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SplitUtils.h
│           │   │   │   │   │   │   │       │   ├── StringUtils.cpp
│           │   │   │   │   │   │   │       │   ├── StringUtils.h
│           │   │   │   │   │   │   │       │   ├── SysIconUtils.cpp
│           │   │   │   │   │   │   │       │   ├── SysIconUtils.h
│           │   │   │   │   │   │   │       │   ├── TextPairs.cpp
│           │   │   │   │   │   │   │       │   ├── TextPairs.h
│           │   │   │   │   │   │   │       │   ├── UpdateCallback100.cpp
│           │   │   │   │   │   │   │       │   ├── UpdateCallback100.h
│           │   │   │   │   │   │   │       │   ├── ViewSettings.cpp
│           │   │   │   │   │   │   │       │   ├── ViewSettings.h
│           │   │   │   │   │   │   │       │   ├── makefile
│           │   │   │   │   │   │   │       │   ├── makefile.depend
│           │   │   │   │   │   │   │       │   ├── makefile.list
│           │   │   │   │   │   │   │       │   ├── res/
│           │   │   │   │   │   │   │       │   │   ├── Add2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── AddPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Copy2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── CopyPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Delete2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── DeletePNG.h
│           │   │   │   │   │   │   │       │   │   ├── Extract2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── ExtractPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Info2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── InfoPNG.h
│           │   │   │   │   │   │   │       │   │   ├── Move2PNG.h
│           │   │   │   │   │   │   │       │   │   ├── MovePNG.h
│           │   │   │   │   │   │   │       │   │   ├── ParentFolder.h
│           │   │   │   │   │   │   │       │   │   ├── Test2PNG.h
│           │   │   │   │   │   │   │       │   │   └── TestPNG.h
│           │   │   │   │   │   │   │       │   ├── resource.h
│           │   │   │   │   │   │   │       │   └── wxFM.cpp
│           │   │   │   │   │   │   │       └── GUI/
│           │   │   │   │   │   │   │           ├── BenchmarkDialog.cpp
│           │   │   │   │   │   │   │           ├── BenchmarkDialog.h
│           │   │   │   │   │   │   │           ├── BenchmarkDialogRes.h
│           │   │   │   │   │   │   │           ├── BenchmarkDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── CompressDialog.cpp
│           │   │   │   │   │   │   │           ├── CompressDialog.h
│           │   │   │   │   │   │   │           ├── CompressDialogRes.h
│           │   │   │   │   │   │   │           ├── CompressDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── ExtractDialog.cpp
│           │   │   │   │   │   │   │           ├── ExtractDialog.h
│           │   │   │   │   │   │   │           ├── ExtractDialogRes.h
│           │   │   │   │   │   │   │           ├── ExtractDialog_rc.cpp
│           │   │   │   │   │   │   │           ├── ExtractGUI.cpp
│           │   │   │   │   │   │   │           ├── ExtractGUI.h
│           │   │   │   │   │   │   │           ├── ExtractRes.h
│           │   │   │   │   │   │   │           ├── GUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateCallbackGUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateCallbackGUI.h
│           │   │   │   │   │   │   │           ├── UpdateGUI.cpp
│           │   │   │   │   │   │   │           ├── UpdateGUI.h
│           │   │   │   │   │   │   │           ├── makefile
│           │   │   │   │   │   │   │           ├── makefile.depend
│           │   │   │   │   │   │   │           ├── makefile.list
│           │   │   │   │   │   │   │           ├── resource.h
│           │   │   │   │   │   │   │           └── wxGUI.cpp
│           │   │   │   │   │   │   ├── Common/
│           │   │   │   │   │   │   │   ├── AutoPtr.h
│           │   │   │   │   │   │   │   ├── Buffer.h
│           │   │   │   │   │   │   │   ├── CRC.cpp
│           │   │   │   │   │   │   │   ├── C_FileIO.cpp
│           │   │   │   │   │   │   │   ├── C_FileIO.h
│           │   │   │   │   │   │   │   ├── ComTry.h
│           │   │   │   │   │   │   │   ├── CommandLineParser.cpp
│           │   │   │   │   │   │   │   ├── CommandLineParser.h
│           │   │   │   │   │   │   │   ├── Defs.h
│           │   │   │   │   │   │   │   ├── DynamicBuffer.h
│           │   │   │   │   │   │   │   ├── IntToString.cpp
│           │   │   │   │   │   │   │   ├── IntToString.h
│           │   │   │   │   │   │   │   ├── Lang.cpp
│           │   │   │   │   │   │   │   ├── Lang.h
│           │   │   │   │   │   │   │   ├── ListFileUtils.cpp
│           │   │   │   │   │   │   │   ├── ListFileUtils.h
│           │   │   │   │   │   │   │   ├── MyCom.h
│           │   │   │   │   │   │   │   ├── MyException.h
│           │   │   │   │   │   │   │   ├── MyGuidDef.h
│           │   │   │   │   │   │   │   ├── MyInitGuid.h
│           │   │   │   │   │   │   │   ├── MyMap.cpp
│           │   │   │   │   │   │   │   ├── MyMap.h
│           │   │   │   │   │   │   │   ├── MyString.cpp
│           │   │   │   │   │   │   │   ├── MyString.h
│           │   │   │   │   │   │   │   ├── MyUnknown.h
│           │   │   │   │   │   │   │   ├── MyVector.cpp
│           │   │   │   │   │   │   │   ├── MyVector.h
│           │   │   │   │   │   │   │   ├── MyWindows.cpp
│           │   │   │   │   │   │   │   ├── MyWindows.h
│           │   │   │   │   │   │   │   ├── MyXml.cpp
│           │   │   │   │   │   │   │   ├── MyXml.h
│           │   │   │   │   │   │   │   ├── NewHandler.h
│           │   │   │   │   │   │   │   ├── StdInStream.cpp
│           │   │   │   │   │   │   │   ├── StdInStream.h
│           │   │   │   │   │   │   │   ├── StdOutStream.cpp
│           │   │   │   │   │   │   │   ├── StdOutStream.h
│           │   │   │   │   │   │   │   ├── StringConvert.cpp
│           │   │   │   │   │   │   │   ├── StringConvert.h
│           │   │   │   │   │   │   │   ├── StringToInt.cpp
│           │   │   │   │   │   │   │   ├── StringToInt.h
│           │   │   │   │   │   │   │   ├── TextConfig.cpp
│           │   │   │   │   │   │   │   ├── TextConfig.h
│           │   │   │   │   │   │   │   ├── Types.h
│           │   │   │   │   │   │   │   ├── UTFConvert.cpp
│           │   │   │   │   │   │   │   ├── UTFConvert.h
│           │   │   │   │   │   │   │   ├── Wildcard.cpp
│           │   │   │   │   │   │   │   └── Wildcard.h
│           │   │   │   │   │   │   ├── Windows/
│           │   │   │   │   │   │   │   ├── COM.cpp
│           │   │   │   │   │   │   │   ├── COM.h
│           │   │   │   │   │   │   │   ├── Clipboard.cpp
│           │   │   │   │   │   │   │   ├── Clipboard.h
│           │   │   │   │   │   │   │   ├── CommonDialog.h
│           │   │   │   │   │   │   │   ├── Control/
│           │   │   │   │   │   │   │   │   ├── ComboBox.h
│           │   │   │   │   │   │   │   │   ├── Controls.cpp
│           │   │   │   │   │   │   │   │   ├── Dialog.cpp
│           │   │   │   │   │   │   │   │   ├── Dialog.h
│           │   │   │   │   │   │   │   │   ├── DialogImpl.h
│           │   │   │   │   │   │   │   │   ├── Edit.h
│           │   │   │   │   │   │   │   │   ├── ListView.h
│           │   │   │   │   │   │   │   │   ├── ProgressBar.h
│           │   │   │   │   │   │   │   │   ├── Static.h
│           │   │   │   │   │   │   │   │   ├── StatusBar.h
│           │   │   │   │   │   │   │   │   ├── Window2.cpp
│           │   │   │   │   │   │   │   │   └── Window2.h
│           │   │   │   │   │   │   │   ├── DLL.cpp
│           │   │   │   │   │   │   │   ├── DLL.h
│           │   │   │   │   │   │   │   ├── Defs.h
│           │   │   │   │   │   │   │   ├── Error.cpp
│           │   │   │   │   │   │   │   ├── Error.h
│           │   │   │   │   │   │   │   ├── FileDir.cpp
│           │   │   │   │   │   │   │   ├── FileDir.h
│           │   │   │   │   │   │   │   ├── FileFind.cpp
│           │   │   │   │   │   │   │   ├── FileFind.h
│           │   │   │   │   │   │   │   ├── FileIO.cpp
│           │   │   │   │   │   │   │   ├── FileIO.h
│           │   │   │   │   │   │   │   ├── FileName.cpp
│           │   │   │   │   │   │   │   ├── FileName.h
│           │   │   │   │   │   │   │   ├── PropVariant.cpp
│           │   │   │   │   │   │   │   ├── PropVariant.h
│           │   │   │   │   │   │   │   ├── PropVariantConversions.cpp
│           │   │   │   │   │   │   │   ├── PropVariantConversions.h
│           │   │   │   │   │   │   │   ├── PropVariantUtils.cpp
│           │   │   │   │   │   │   │   ├── PropVariantUtils.h
│           │   │   │   │   │   │   │   ├── Registry.cpp
│           │   │   │   │   │   │   │   ├── Registry.h
│           │   │   │   │   │   │   │   ├── ResourceString.h
│           │   │   │   │   │   │   │   ├── Shell.h
│           │   │   │   │   │   │   │   ├── Synchronization.cpp
│           │   │   │   │   │   │   │   ├── Synchronization.h
│           │   │   │   │   │   │   │   ├── Synchronization2.h
│           │   │   │   │   │   │   │   ├── System.cpp
│           │   │   │   │   │   │   │   ├── System.h
│           │   │   │   │   │   │   │   ├── Thread.h
│           │   │   │   │   │   │   │   ├── Time.cpp
│           │   │   │   │   │   │   │   ├── Time.h
│           │   │   │   │   │   │   │   ├── Window.cpp
│           │   │   │   │   │   │   │   └── Window.h
│           │   │   │   │   │   │   ├── include_windows/
│           │   │   │   │   │   │   │   ├── basetyps.h
│           │   │   │   │   │   │   │   ├── tchar.h
│           │   │   │   │   │   │   │   └── windows.h
│           │   │   │   │   │   │   └── myWindows/
│           │   │   │   │   │   │       ├── StdAfx.h
│           │   │   │   │   │   │       ├── config.h
│           │   │   │   │   │   │       ├── initguid.h
│           │   │   │   │   │   │       ├── makefile
│           │   │   │   │   │   │       ├── makefile.depend
│           │   │   │   │   │   │       ├── makefile.list
│           │   │   │   │   │   │       ├── myAddExeFlag.cpp
│           │   │   │   │   │   │       ├── myGetTickCount.cpp
│           │   │   │   │   │   │       ├── myPrivate.h
│           │   │   │   │   │   │       ├── mySplitCommandLine.cpp
│           │   │   │   │   │   │       ├── test_emul.cpp
│           │   │   │   │   │   │       ├── wine_GetXXXDefaultLangID.cpp
│           │   │   │   │   │   │       └── wine_date_and_time.cpp
│           │   │   │   │   │   ├── DOCS/
│           │   │   │   │   │   │   ├── 7zC.txt
│           │   │   │   │   │   │   ├── 7zFormat.txt
│           │   │   │   │   │   │   ├── License.txt
│           │   │   │   │   │   │   ├── MANUAL/
│           │   │   │   │   │   │   │   ├── commands/
│           │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   ├── bench.htm
│           │   │   │   │   │   │   │   │   ├── delete.htm
│           │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   ├── extract_full.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── list.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── test.htm
│           │   │   │   │   │   │   │   │   └── update.htm
│           │   │   │   │   │   │   │   ├── exit_codes.htm
│           │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   ├── switches/
│           │   │   │   │   │   │   │   │   ├── ar_exclude.htm
│           │   │   │   │   │   │   │   │   ├── ar_include.htm
│           │   │   │   │   │   │   │   │   ├── ar_no.htm
│           │   │   │   │   │   │   │   │   ├── charset.htm
│           │   │   │   │   │   │   │   │   ├── exclude.htm
│           │   │   │   │   │   │   │   │   ├── include.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── list_tech.htm
│           │   │   │   │   │   │   │   │   ├── method.htm
│           │   │   │   │   │   │   │   │   ├── output_dir.htm
│           │   │   │   │   │   │   │   │   ├── overwrite.htm
│           │   │   │   │   │   │   │   │   ├── password.htm
│           │   │   │   │   │   │   │   │   ├── recurse.htm
│           │   │   │   │   │   │   │   │   ├── sfx.htm
│           │   │   │   │   │   │   │   │   ├── ssc.htm
│           │   │   │   │   │   │   │   │   ├── stdin.htm
│           │   │   │   │   │   │   │   │   ├── stdout.htm
│           │   │   │   │   │   │   │   │   ├── stop_switch.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── type.htm
│           │   │   │   │   │   │   │   │   ├── update.htm
│           │   │   │   │   │   │   │   │   ├── volume.htm
│           │   │   │   │   │   │   │   │   ├── working_dir.htm
│           │   │   │   │   │   │   │   │   └── yes.htm
│           │   │   │   │   │   │   │   └── syntax.htm
│           │   │   │   │   │   │   ├── Methods.txt
│           │   │   │   │   │   │   ├── copying.txt
│           │   │   │   │   │   │   ├── history.txt
│           │   │   │   │   │   │   ├── lzma.txt
│           │   │   │   │   │   │   ├── readme.txt
│           │   │   │   │   │   │   └── unRarLicense.txt
│           │   │   │   │   │   ├── GUI/
│           │   │   │   │   │   │   ├── Lang/
│           │   │   │   │   │   │   │   ├── af.txt
│           │   │   │   │   │   │   │   ├── ar.txt
│           │   │   │   │   │   │   │   ├── ast.txt
│           │   │   │   │   │   │   │   ├── az.txt
│           │   │   │   │   │   │   │   ├── ba.txt
│           │   │   │   │   │   │   │   ├── be.txt
│           │   │   │   │   │   │   │   ├── bg.txt
│           │   │   │   │   │   │   │   ├── bn.txt
│           │   │   │   │   │   │   │   ├── br.txt
│           │   │   │   │   │   │   │   ├── ca.txt
│           │   │   │   │   │   │   │   ├── cs.txt
│           │   │   │   │   │   │   │   ├── cy.txt
│           │   │   │   │   │   │   │   ├── da.txt
│           │   │   │   │   │   │   │   ├── de.txt
│           │   │   │   │   │   │   │   ├── el.txt
│           │   │   │   │   │   │   │   ├── en.ttt
│           │   │   │   │   │   │   │   ├── eo.txt
│           │   │   │   │   │   │   │   ├── es.txt
│           │   │   │   │   │   │   │   ├── et.txt
│           │   │   │   │   │   │   │   ├── eu.txt
│           │   │   │   │   │   │   │   ├── ext.txt
│           │   │   │   │   │   │   │   ├── fa.txt
│           │   │   │   │   │   │   │   ├── fi.txt
│           │   │   │   │   │   │   │   ├── fr.txt
│           │   │   │   │   │   │   │   ├── fur.txt
│           │   │   │   │   │   │   │   ├── fy.txt
│           │   │   │   │   │   │   │   ├── gl.txt
│           │   │   │   │   │   │   │   ├── he.txt
│           │   │   │   │   │   │   │   ├── hr.txt
│           │   │   │   │   │   │   │   ├── hu.txt
│           │   │   │   │   │   │   │   ├── hy.txt
│           │   │   │   │   │   │   │   ├── id.txt
│           │   │   │   │   │   │   │   ├── io.txt
│           │   │   │   │   │   │   │   ├── is.txt
│           │   │   │   │   │   │   │   ├── it.txt
│           │   │   │   │   │   │   │   ├── ja.txt
│           │   │   │   │   │   │   │   ├── ka.txt
│           │   │   │   │   │   │   │   ├── ko.txt
│           │   │   │   │   │   │   │   ├── ku-ckb.txt
│           │   │   │   │   │   │   │   ├── ku.txt
│           │   │   │   │   │   │   │   ├── lt.txt
│           │   │   │   │   │   │   │   ├── lv.txt
│           │   │   │   │   │   │   │   ├── mk.txt
│           │   │   │   │   │   │   │   ├── mn.txt
│           │   │   │   │   │   │   │   ├── mr.txt
│           │   │   │   │   │   │   │   ├── ms.txt
│           │   │   │   │   │   │   │   ├── nb.txt
│           │   │   │   │   │   │   │   ├── ne.txt
│           │   │   │   │   │   │   │   ├── nl.txt
│           │   │   │   │   │   │   │   ├── nn.txt
│           │   │   │   │   │   │   │   ├── pa-in.txt
│           │   │   │   │   │   │   │   ├── pl.txt
│           │   │   │   │   │   │   │   ├── ps.txt
│           │   │   │   │   │   │   │   ├── pt-br.txt
│           │   │   │   │   │   │   │   ├── pt.txt
│           │   │   │   │   │   │   │   ├── ro.txt
│           │   │   │   │   │   │   │   ├── ru.txt
│           │   │   │   │   │   │   │   ├── si.txt
│           │   │   │   │   │   │   │   ├── sk.txt
│           │   │   │   │   │   │   │   ├── sl.txt
│           │   │   │   │   │   │   │   ├── sq.txt
│           │   │   │   │   │   │   │   ├── sr-spc.txt
│           │   │   │   │   │   │   │   ├── sr-spl.txt
│           │   │   │   │   │   │   │   ├── sv.txt
│           │   │   │   │   │   │   │   ├── ta.txt
│           │   │   │   │   │   │   │   ├── th.txt
│           │   │   │   │   │   │   │   ├── tr.txt
│           │   │   │   │   │   │   │   ├── tt.txt
│           │   │   │   │   │   │   │   ├── uk.txt
│           │   │   │   │   │   │   │   ├── uz.txt
│           │   │   │   │   │   │   │   ├── va.txt
│           │   │   │   │   │   │   │   ├── vi.txt
│           │   │   │   │   │   │   │   ├── zh-cn.txt
│           │   │   │   │   │   │   │   └── zh-tw.txt
│           │   │   │   │   │   │   ├── help/
│           │   │   │   │   │   │   │   ├── #IDXHDR
│           │   │   │   │   │   │   │   ├── #ITBITS
│           │   │   │   │   │   │   │   ├── #STRINGS
│           │   │   │   │   │   │   │   ├── #SYSTEM
│           │   │   │   │   │   │   │   ├── #TOPICS
│           │   │   │   │   │   │   │   ├── #URLSTR
│           │   │   │   │   │   │   │   ├── #URLTBL
│           │   │   │   │   │   │   │   ├── $FIftiMain
│           │   │   │   │   │   │   │   ├── $OBJINST
│           │   │   │   │   │   │   │   ├── $WWAssociativeLinks/
│           │   │   │   │   │   │   │   │   └── Property
│           │   │   │   │   │   │   │   ├── $WWKeywordLinks/
│           │   │   │   │   │   │   │   │   ├── BTree
│           │   │   │   │   │   │   │   │   ├── Data
│           │   │   │   │   │   │   │   │   ├── Map
│           │   │   │   │   │   │   │   │   └── Property
│           │   │   │   │   │   │   │   ├── 7zip.hhc
│           │   │   │   │   │   │   │   ├── 7zip.hhk
│           │   │   │   │   │   │   │   ├── cmdline/
│           │   │   │   │   │   │   │   │   ├── commands/
│           │   │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   │   ├── bench.htm
│           │   │   │   │   │   │   │   │   │   ├── delete.htm
│           │   │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   │   ├── extract_full.htm
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   ├── list.htm
│           │   │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   │   ├── test.htm
│           │   │   │   │   │   │   │   │   │   └── update.htm
│           │   │   │   │   │   │   │   │   ├── exit_codes.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   ├── switches/
│           │   │   │   │   │   │   │   │   │   ├── ar_exclude.htm
│           │   │   │   │   │   │   │   │   │   ├── ar_include.htm
│           │   │   │   │   │   │   │   │   │   ├── ar_no.htm
│           │   │   │   │   │   │   │   │   │   ├── charset.htm
│           │   │   │   │   │   │   │   │   │   ├── exclude.htm
│           │   │   │   │   │   │   │   │   │   ├── include.htm
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   ├── list_tech.htm
│           │   │   │   │   │   │   │   │   │   ├── method.htm
│           │   │   │   │   │   │   │   │   │   ├── output_dir.htm
│           │   │   │   │   │   │   │   │   │   ├── overwrite.htm
│           │   │   │   │   │   │   │   │   │   ├── password.htm
│           │   │   │   │   │   │   │   │   │   ├── recurse.htm
│           │   │   │   │   │   │   │   │   │   ├── sfx.htm
│           │   │   │   │   │   │   │   │   │   ├── ssc.htm
│           │   │   │   │   │   │   │   │   │   ├── stdin.htm
│           │   │   │   │   │   │   │   │   │   ├── stdout.htm
│           │   │   │   │   │   │   │   │   │   ├── stop_switch.htm
│           │   │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   │   ├── type.htm
│           │   │   │   │   │   │   │   │   │   ├── update.htm
│           │   │   │   │   │   │   │   │   │   ├── volume.htm
│           │   │   │   │   │   │   │   │   │   ├── working_dir.htm
│           │   │   │   │   │   │   │   │   │   └── yes.htm
│           │   │   │   │   │   │   │   │   └── syntax.htm
│           │   │   │   │   │   │   │   ├── fm/
│           │   │   │   │   │   │   │   │   ├── about.htm
│           │   │   │   │   │   │   │   │   ├── benchmark.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── menu.htm
│           │   │   │   │   │   │   │   │   ├── options.htm
│           │   │   │   │   │   │   │   │   ├── plugins/
│           │   │   │   │   │   │   │   │   │   ├── 7-zip/
│           │   │   │   │   │   │   │   │   │   │   ├── add.htm
│           │   │   │   │   │   │   │   │   │   │   ├── extract.htm
│           │   │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   │   ├── options.htm
│           │   │   │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   │   ├── general/
│           │   │   │   │   │   │   │   │   ├── 7z.htm
│           │   │   │   │   │   │   │   │   ├── faq.htm
│           │   │   │   │   │   │   │   │   ├── formats.htm
│           │   │   │   │   │   │   │   │   ├── index.htm
│           │   │   │   │   │   │   │   │   ├── license.htm
│           │   │   │   │   │   │   │   │   ├── performance.htm
│           │   │   │   │   │   │   │   │   ├── register.htm
│           │   │   │   │   │   │   │   │   ├── style.css
│           │   │   │   │   │   │   │   │   └── thanks.htm
│           │   │   │   │   │   │   │   ├── start.htm
│           │   │   │   │   │   │   │   └── style.css
│           │   │   │   │   │   │   ├── kde/
│           │   │   │   │   │   │   │   ├── p7zip_compress.desktop
│           │   │   │   │   │   │   │   ├── p7zip_compress2.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract_subdir.desktop
│           │   │   │   │   │   │   │   ├── p7zip_extract_to.desktop
│           │   │   │   │   │   │   │   └── p7zip_test.desktop
│           │   │   │   │   │   │   ├── p7zipForFilemanager
│           │   │   │   │   │   │   ├── p7zip_32.xpm
│           │   │   │   │   │   │   └── readme.txt
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── TODO
│           │   │   │   │   │   ├── check/
│           │   │   │   │   │   │   ├── check.sh
│           │   │   │   │   │   │   ├── check_7zr.sh
│           │   │   │   │   │   │   ├── check_Client7z.sh
│           │   │   │   │   │   │   ├── check_install.sh
│           │   │   │   │   │   │   ├── clean_all.sh
│           │   │   │   │   │   │   └── test/
│           │   │   │   │   │   │       ├── 7za.exe.lzma
│           │   │   │   │   │   │       ├── 7za.exe.lzma86
│           │   │   │   │   │   │       └── 7za.exe.lzma_eos
│           │   │   │   │   │   ├── contrib/
│           │   │   │   │   │   │   ├── VirtualFileSystemForMidnightCommander/
│           │   │   │   │   │   │   │   ├── ChangeLog
│           │   │   │   │   │   │   │   ├── readme
│           │   │   │   │   │   │   │   ├── readme.u7z
│           │   │   │   │   │   │   │   └── u7z
│           │   │   │   │   │   │   ├── gzip-like_CLI_wrapper_for_7z/
│           │   │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   │   ├── check/
│           │   │   │   │   │   │   │   │   └── check.sh
│           │   │   │   │   │   │   │   ├── man1/
│           │   │   │   │   │   │   │   │   └── p7zip.1
│           │   │   │   │   │   │   │   └── p7zip
│           │   │   │   │   │   │   └── qnx630sp3/
│           │   │   │   │   │   │       ├── qnx630sp3-shared
│           │   │   │   │   │   │       └── qnx630sp3-static
│           │   │   │   │   │   └── man1/
│           │   │   │   │   │       ├── 7z.1
│           │   │   │   │   │       ├── 7za.1
│           │   │   │   │   │       └── 7zr.1
│           │   │   │   │   ├── 7zip.cpp
│           │   │   │   │   ├── 7zip.h
│           │   │   │   │   ├── 7zipstreams.h
│           │   │   │   │   ├── OpenArchive.cpp
│           │   │   │   │   ├── OpenArchive.h
│           │   │   │   │   ├── draw.cpp
│           │   │   │   │   ├── dynarec/
│           │   │   │   │   │   ├── Android.mk
│           │   │   │   │   │   ├── arm_codegen.h
│           │   │   │   │   │   ├── arm_dpimacros.h
│           │   │   │   │   │   ├── arm_dpimacros_old.h
│           │   │   │   │   │   ├── arm_emit.h
│           │   │   │   │   │   ├── arm_stub.S
│           │   │   │   │   │   ├── arm_stub_old.S
│           │   │   │   │   │   ├── cpu.cpp
│           │   │   │   │   │   ├── cpu.h
│           │   │   │   │   │   ├── cpu_threaded.cpp
│           │   │   │   │   │   ├── dynarec.h
│           │   │   │   │   │   ├── dynarec_linker.cpp
│           │   │   │   │   │   ├── dynarec_linker.h
│           │   │   │   │   │   ├── exophasejit.cpp
│           │   │   │   │   │   ├── exophasejit.h
│           │   │   │   │   │   ├── warm.cpp
│           │   │   │   │   │   └── warm.h
│           │   │   │   │   ├── main.cpp
│           │   │   │   │   ├── main.h
│           │   │   │   │   ├── math-neon/
│           │   │   │   │   │   ├── Android.mk
│           │   │   │   │   │   ├── COPYING
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── math_acosf.c
│           │   │   │   │   │   ├── math_asinf.c
│           │   │   │   │   │   ├── math_atan2f.c
│           │   │   │   │   │   ├── math_atanf.c
│           │   │   │   │   │   ├── math_ceilf.c
│           │   │   │   │   │   ├── math_cosf.c
│           │   │   │   │   │   ├── math_coshf.c
│           │   │   │   │   │   ├── math_debug.c
│           │   │   │   │   │   ├── math_expf.c
│           │   │   │   │   │   ├── math_fabsf.c
│           │   │   │   │   │   ├── math_floorf.c
│           │   │   │   │   │   ├── math_fmodf.c
│           │   │   │   │   │   ├── math_frexpf.c
│           │   │   │   │   │   ├── math_invsqrtf.c
│           │   │   │   │   │   ├── math_ldexpf.c
│           │   │   │   │   │   ├── math_log10f.c
│           │   │   │   │   │   ├── math_logf.c
│           │   │   │   │   │   ├── math_mat2.c
│           │   │   │   │   │   ├── math_mat3.c
│           │   │   │   │   │   ├── math_mat4.c
│           │   │   │   │   │   ├── math_modf.c
│           │   │   │   │   │   ├── math_neon.h
│           │   │   │   │   │   ├── math_powf.c
│           │   │   │   │   │   ├── math_runfast.c
│           │   │   │   │   │   ├── math_sincosf.c
│           │   │   │   │   │   ├── math_sinf.c
│           │   │   │   │   │   ├── math_sinfv.c
│           │   │   │   │   │   ├── math_sinhf.c
│           │   │   │   │   │   ├── math_sqrtf.c
│           │   │   │   │   │   ├── math_sqrtfv.c
│           │   │   │   │   │   ├── math_tanf.c
│           │   │   │   │   │   ├── math_tanhf.c
│           │   │   │   │   │   ├── math_vec2.c
│           │   │   │   │   │   ├── math_vec3.c
│           │   │   │   │   │   └── math_vec4.c
│           │   │   │   │   ├── mic.cpp
│           │   │   │   │   ├── neontest.cpp
│           │   │   │   │   ├── neontest.h
│           │   │   │   │   ├── ogl.cpp
│           │   │   │   │   ├── sndopensl.cpp
│           │   │   │   │   ├── sndopensl.h
│           │   │   │   │   ├── throttle.cpp
│           │   │   │   │   ├── throttle.h
│           │   │   │   │   └── video.h
│           │   │   │   ├── arm_instructions.cpp
│           │   │   │   ├── arm_instructions.h
│           │   │   │   ├── arm_jit.cpp
│           │   │   │   ├── arm_jit.h
│           │   │   │   ├── armcpu.cpp
│           │   │   │   ├── armcpu.h
│           │   │   │   ├── armcpu_exec_inline.h
│           │   │   │   ├── bios.cpp
│           │   │   │   ├── bios.h
│           │   │   │   ├── bits.h
│           │   │   │   ├── build.bat
│           │   │   │   ├── cheatSystem.cpp
│           │   │   │   ├── cheatSystem.h
│           │   │   │   ├── commandline.cpp
│           │   │   │   ├── commandline.h
│           │   │   │   ├── common.cpp
│           │   │   │   ├── common.h
│           │   │   │   ├── cp15.cpp
│           │   │   │   ├── cp15.h
│           │   │   │   ├── ctrlssdl.cpp
│           │   │   │   ├── ctrlssdl.h
│           │   │   │   ├── debug.cpp
│           │   │   │   ├── debug.h
│           │   │   │   ├── desmume.mk
│           │   │   │   ├── desmume_config.cpp
│           │   │   │   ├── desmume_config.h
│           │   │   │   ├── driver.cpp
│           │   │   │   ├── driver.h
│           │   │   │   ├── emufile.cpp
│           │   │   │   ├── emufile.h
│           │   │   │   ├── emufile_types.h
│           │   │   │   ├── filter/
│           │   │   │   │   ├── 2xsai.cpp
│           │   │   │   │   ├── bilinear.cpp
│           │   │   │   │   ├── epx.cpp
│           │   │   │   │   ├── filter.h
│           │   │   │   │   ├── hq2x.cpp
│           │   │   │   │   ├── hq2x.h
│           │   │   │   │   ├── hq4x.cpp
│           │   │   │   │   ├── hq4x.h
│           │   │   │   │   ├── interp.h
│           │   │   │   │   ├── lq2x.cpp
│           │   │   │   │   ├── lq2x.h
│           │   │   │   │   └── scanline.cpp
│           │   │   │   ├── firmware.cpp
│           │   │   │   ├── firmware.h
│           │   │   │   ├── fs-linux.cpp
│           │   │   │   ├── fs-windows.cpp
│           │   │   │   ├── fs.h
│           │   │   │   ├── gdbstub.h
│           │   │   │   ├── gfx3d.cpp
│           │   │   │   ├── gfx3d.h
│           │   │   │   ├── instruction_attributes.h
│           │   │   │   ├── instruction_tabdef.inc
│           │   │   │   ├── instructions.h
│           │   │   │   ├── lua-engine.cpp
│           │   │   │   ├── matrix.cpp
│           │   │   │   ├── matrix.h
│           │   │   │   ├── mc.cpp
│           │   │   │   ├── mc.h
│           │   │   │   ├── mem.h
│           │   │   │   ├── metaspu/
│           │   │   │   │   ├── SndOut.cpp
│           │   │   │   │   ├── SndOut.h
│           │   │   │   │   ├── Timestretcher.cpp
│           │   │   │   │   ├── metaspu.cpp
│           │   │   │   │   └── metaspu.h
│           │   │   │   ├── mic.cpp
│           │   │   │   ├── mic.h
│           │   │   │   ├── mic_alsa.cpp
│           │   │   │   ├── mic_openal.cpp
│           │   │   │   ├── movie.cpp
│           │   │   │   ├── movie.h
│           │   │   │   ├── movie_r7b.cpp
│           │   │   │   ├── path.cpp
│           │   │   │   ├── path.h
│           │   │   │   ├── rasterize.cpp
│           │   │   │   ├── rasterize.h
│           │   │   │   ├── readwrite.cpp
│           │   │   │   ├── readwrite.h
│           │   │   │   ├── registers.h
│           │   │   │   ├── render3D.cpp
│           │   │   │   ├── render3D.h
│           │   │   │   ├── rtc.cpp
│           │   │   │   ├── rtc.h
│           │   │   │   ├── saves.cpp
│           │   │   │   ├── saves.h
│           │   │   │   ├── sequencer.h
│           │   │   │   ├── shaders.h
│           │   │   │   ├── slot1.cpp
│           │   │   │   ├── slot1.h
│           │   │   │   ├── sndsdl.cpp
│           │   │   │   ├── sndsdl.h
│           │   │   │   ├── texcache.cpp
│           │   │   │   ├── texcache.h
│           │   │   │   ├── thumb_instructions.cpp
│           │   │   │   ├── thumb_instructions.h
│           │   │   │   ├── thumb_tabdef.inc
│           │   │   │   ├── types.h
│           │   │   │   ├── utils/
│           │   │   │   │   ├── AsmJit/
│           │   │   │   │   │   ├── AsmJit.h
│           │   │   │   │   │   ├── COPYING.txt
│           │   │   │   │   │   ├── Config.h
│           │   │   │   │   │   ├── core/
│           │   │   │   │   │   │   ├── apibegin.h
│           │   │   │   │   │   │   ├── apiend.h
│           │   │   │   │   │   │   ├── assembler.cpp
│           │   │   │   │   │   │   ├── assembler.h
│           │   │   │   │   │   │   ├── assert.cpp
│           │   │   │   │   │   │   ├── assert.h
│           │   │   │   │   │   │   ├── buffer.cpp
│           │   │   │   │   │   │   ├── buffer.h
│           │   │   │   │   │   │   ├── build.h
│           │   │   │   │   │   │   ├── compiler.cpp
│           │   │   │   │   │   │   ├── compiler.h
│           │   │   │   │   │   │   ├── compilercontext.cpp
│           │   │   │   │   │   │   ├── compilercontext.h
│           │   │   │   │   │   │   ├── compilerfunc.cpp
│           │   │   │   │   │   │   ├── compilerfunc.h
│           │   │   │   │   │   │   ├── compileritem.cpp
│           │   │   │   │   │   │   ├── compileritem.h
│           │   │   │   │   │   │   ├── context.cpp
│           │   │   │   │   │   │   ├── context.h
│           │   │   │   │   │   │   ├── cpuinfo.cpp
│           │   │   │   │   │   │   ├── cpuinfo.h
│           │   │   │   │   │   │   ├── defs.cpp
│           │   │   │   │   │   │   ├── defs.h
│           │   │   │   │   │   │   ├── func.cpp
│           │   │   │   │   │   │   ├── func.h
│           │   │   │   │   │   │   ├── intutil.h
│           │   │   │   │   │   │   ├── lock.h
│           │   │   │   │   │   │   ├── logger.cpp
│           │   │   │   │   │   │   ├── logger.h
│           │   │   │   │   │   │   ├── memorymanager.cpp
│           │   │   │   │   │   │   ├── memorymanager.h
│           │   │   │   │   │   │   ├── memorymarker.cpp
│           │   │   │   │   │   │   ├── memorymarker.h
│           │   │   │   │   │   │   ├── operand.cpp
│           │   │   │   │   │   │   ├── operand.h
│           │   │   │   │   │   │   ├── podvector.h
│           │   │   │   │   │   │   ├── stringbuilder.cpp
│           │   │   │   │   │   │   ├── stringbuilder.h
│           │   │   │   │   │   │   ├── stringutil.cpp
│           │   │   │   │   │   │   ├── stringutil.h
│           │   │   │   │   │   │   ├── virtualmemory.cpp
│           │   │   │   │   │   │   ├── virtualmemory.h
│           │   │   │   │   │   │   ├── zonememory.cpp
│           │   │   │   │   │   │   └── zonememory.h
│           │   │   │   │   │   ├── core.h
│           │   │   │   │   │   ├── x86/
│           │   │   │   │   │   │   ├── x86assembler.cpp
│           │   │   │   │   │   │   ├── x86assembler.h
│           │   │   │   │   │   │   ├── x86compiler.cpp
│           │   │   │   │   │   │   ├── x86compiler.h
│           │   │   │   │   │   │   ├── x86compilercontext.cpp
│           │   │   │   │   │   │   ├── x86compilercontext.h
│           │   │   │   │   │   │   ├── x86compilerfunc.cpp
│           │   │   │   │   │   │   ├── x86compilerfunc.h
│           │   │   │   │   │   │   ├── x86compileritem.cpp
│           │   │   │   │   │   │   ├── x86compileritem.h
│           │   │   │   │   │   │   ├── x86cpuinfo.cpp
│           │   │   │   │   │   │   ├── x86cpuinfo.h
│           │   │   │   │   │   │   ├── x86defs.cpp
│           │   │   │   │   │   │   ├── x86defs.h
│           │   │   │   │   │   │   ├── x86func.cpp
│           │   │   │   │   │   │   ├── x86func.h
│           │   │   │   │   │   │   ├── x86operand.cpp
│           │   │   │   │   │   │   ├── x86operand.h
│           │   │   │   │   │   │   ├── x86util.cpp
│           │   │   │   │   │   │   └── x86util.h
│           │   │   │   │   │   └── x86.h
│           │   │   │   │   ├── ConvertUTF.c
│           │   │   │   │   ├── ConvertUTF.h
│           │   │   │   │   ├── FileMap.cpp
│           │   │   │   │   ├── FileMap.h
│           │   │   │   │   ├── MemBuffer.cpp
│           │   │   │   │   ├── MemBuffer.h
│           │   │   │   │   ├── datetime.cpp
│           │   │   │   │   ├── datetime.h
│           │   │   │   │   ├── decrypt/
│           │   │   │   │   │   ├── crc.cpp
│           │   │   │   │   │   ├── crc.h
│           │   │   │   │   │   ├── decrypt.cpp
│           │   │   │   │   │   ├── decrypt.h
│           │   │   │   │   │   ├── header.cpp
│           │   │   │   │   │   └── header.h
│           │   │   │   │   ├── dlditool.cpp
│           │   │   │   │   ├── emufat.cpp
│           │   │   │   │   ├── emufat.h
│           │   │   │   │   ├── emufat_types.h
│           │   │   │   │   ├── guid.cpp
│           │   │   │   │   ├── guid.h
│           │   │   │   │   ├── libfat/
│           │   │   │   │   │   ├── bit_ops.h
│           │   │   │   │   │   ├── cache.cpp
│           │   │   │   │   │   ├── cache.h
│           │   │   │   │   │   ├── common.h
│           │   │   │   │   │   ├── directory.cpp
│           │   │   │   │   │   ├── directory.h
│           │   │   │   │   │   ├── disc.cpp
│           │   │   │   │   │   ├── disc.h
│           │   │   │   │   │   ├── disc_io.h
│           │   │   │   │   │   ├── fat.h
│           │   │   │   │   │   ├── fatdir.cpp
│           │   │   │   │   │   ├── fatdir.h
│           │   │   │   │   │   ├── fatfile.cpp
│           │   │   │   │   │   ├── fatfile.h
│           │   │   │   │   │   ├── file_allocation_table.cpp
│           │   │   │   │   │   ├── file_allocation_table.h
│           │   │   │   │   │   ├── filetime.cpp
│           │   │   │   │   │   ├── filetime.h
│           │   │   │   │   │   ├── libfat.cpp
│           │   │   │   │   │   ├── libfat_pc.h
│           │   │   │   │   │   ├── libfat_public_api.cpp
│           │   │   │   │   │   ├── libfat_public_api.h
│           │   │   │   │   │   ├── lock.cpp
│           │   │   │   │   │   ├── lock.h
│           │   │   │   │   │   ├── mem_allocate.h
│           │   │   │   │   │   ├── partition.cpp
│           │   │   │   │   │   └── partition.h
│           │   │   │   │   ├── lightning/
│           │   │   │   │   │   ├── Makefile.am
│           │   │   │   │   │   ├── Makefile.in
│           │   │   │   │   │   ├── arm/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-swf.h
│           │   │   │   │   │   │   ├── fp-vfp.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── asm-common.h
│           │   │   │   │   │   ├── config_lightning.h
│           │   │   │   │   │   ├── core-common.h
│           │   │   │   │   │   ├── fp-common.h
│           │   │   │   │   │   ├── funcs-common.h
│           │   │   │   │   │   ├── i386/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── asm-32.h
│           │   │   │   │   │   │   ├── asm-64.h
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core-32.h
│           │   │   │   │   │   │   ├── core-64.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-32.h
│           │   │   │   │   │   │   ├── fp-64.h
│           │   │   │   │   │   │   ├── fp-sse.h
│           │   │   │   │   │   │   ├── fp-x87.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── lightning.h
│           │   │   │   │   │   ├── mips/
│           │   │   │   │   │   │   ├── Makefile.frag
│           │   │   │   │   │   │   ├── README
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core-32.h
│           │   │   │   │   │   │   ├── core-64.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp-32.h
│           │   │   │   │   │   │   ├── fp-64.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   ├── ppc/
│           │   │   │   │   │   │   ├── asm.h
│           │   │   │   │   │   │   ├── core.h
│           │   │   │   │   │   │   ├── fp.h
│           │   │   │   │   │   │   └── funcs.h
│           │   │   │   │   │   └── sparc/
│           │   │   │   │   │       ├── asm.h
│           │   │   │   │   │       ├── core.h
│           │   │   │   │   │       ├── fp.h
│           │   │   │   │   │       └── funcs.h
│           │   │   │   │   ├── md5.cpp
│           │   │   │   │   ├── md5.h
│           │   │   │   │   ├── task.cpp
│           │   │   │   │   ├── task.h
│           │   │   │   │   ├── tinycc/
│           │   │   │   │   │   ├── .gitignore
│           │   │   │   │   │   ├── Android_arm.mk
│           │   │   │   │   │   ├── Android_x86.mk
│           │   │   │   │   │   ├── COPYING
│           │   │   │   │   │   ├── Changelog
│           │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   ├── README
│           │   │   │   │   │   ├── TODO
│           │   │   │   │   │   ├── VERSION
│           │   │   │   │   │   ├── arm-gen.c
│           │   │   │   │   │   ├── c67-gen.c
│           │   │   │   │   │   ├── coff.h
│           │   │   │   │   │   ├── config.h
│           │   │   │   │   │   ├── configure
│           │   │   │   │   │   ├── elf.h
│           │   │   │   │   │   ├── examples/
│           │   │   │   │   │   │   ├── ex1.c
│           │   │   │   │   │   │   ├── ex2.c
│           │   │   │   │   │   │   ├── ex3.c
│           │   │   │   │   │   │   ├── ex4.c
│           │   │   │   │   │   │   └── ex5.c
│           │   │   │   │   │   ├── i386-asm.c
│           │   │   │   │   │   ├── i386-asm.h
│           │   │   │   │   │   ├── i386-gen.c
│           │   │   │   │   │   ├── i386-tok.h
│           │   │   │   │   │   ├── il-gen.c
│           │   │   │   │   │   ├── il-opcodes.h
│           │   │   │   │   │   ├── include/
│           │   │   │   │   │   │   ├── float.h
│           │   │   │   │   │   │   ├── stdarg.h
│           │   │   │   │   │   │   ├── stdbool.h
│           │   │   │   │   │   │   ├── stddef.h
│           │   │   │   │   │   │   ├── tcclib.h
│           │   │   │   │   │   │   └── varargs.h
│           │   │   │   │   │   ├── lib/
│           │   │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   │   ├── alloca86-bt.S
│           │   │   │   │   │   │   ├── alloca86.S
│           │   │   │   │   │   │   ├── alloca86_64.S
│           │   │   │   │   │   │   ├── bcheck.c
│           │   │   │   │   │   │   └── libtcc1.c
│           │   │   │   │   │   ├── libtcc.c
│           │   │   │   │   │   ├── libtcc.h
│           │   │   │   │   │   ├── stab.def
│           │   │   │   │   │   ├── stab.h
│           │   │   │   │   │   ├── tcc-doc.texi
│           │   │   │   │   │   ├── tcc.c
│           │   │   │   │   │   ├── tcc.h
│           │   │   │   │   │   ├── tccasm.c
│           │   │   │   │   │   ├── tcccoff.c
│           │   │   │   │   │   ├── tccelf.c
│           │   │   │   │   │   ├── tccgen.c
│           │   │   │   │   │   ├── tccpe.c
│           │   │   │   │   │   ├── tccpp.c
│           │   │   │   │   │   ├── tccrun.c
│           │   │   │   │   │   ├── tcctok.h
│           │   │   │   │   │   ├── tests/
│           │   │   │   │   │   │   ├── Makefile
│           │   │   │   │   │   │   ├── asmtest.S
│           │   │   │   │   │   │   ├── boundtest.c
│           │   │   │   │   │   │   ├── gcctestsuite.sh
│           │   │   │   │   │   │   ├── libtcc_test.c
│           │   │   │   │   │   │   ├── tcctest.c
│           │   │   │   │   │   │   └── tests2/
│           │   │   │   │   │   │       ├── 00_assignment.c
│           │   │   │   │   │   │       ├── 00_assignment.expect
│           │   │   │   │   │   │       ├── 01_comment.c
│           │   │   │   │   │   │       ├── 01_comment.expect
│           │   │   │   │   │   │       ├── 02_printf.c
│           │   │   │   │   │   │       ├── 02_printf.expect
│           │   │   │   │   │   │       ├── 03_struct.c
│           │   │   │   │   │   │       ├── 03_struct.expect
│           │   │   │   │   │   │       ├── 04_for.c
│           │   │   │   │   │   │       ├── 04_for.expect
│           │   │   │   │   │   │       ├── 05_array.c
│           │   │   │   │   │   │       ├── 05_array.expect
│           │   │   │   │   │   │       ├── 06_case.c
│           │   │   │   │   │   │       ├── 06_case.expect
│           │   │   │   │   │   │       ├── 07_function.c
│           │   │   │   │   │   │       ├── 07_function.expect
│           │   │   │   │   │   │       ├── 08_while.c
│           │   │   │   │   │   │       ├── 08_while.expect
│           │   │   │   │   │   │       ├── 09_do_while.c
│           │   │   │   │   │   │       ├── 09_do_while.expect
│           │   │   │   │   │   │       ├── 10_pointer.c
│           │   │   │   │   │   │       ├── 10_pointer.expect
│           │   │   │   │   │   │       ├── 11_precedence.c
│           │   │   │   │   │   │       ├── 11_precedence.expect
│           │   │   │   │   │   │       ├── 12_hashdefine.c
│           │   │   │   │   │   │       ├── 12_hashdefine.expect
│           │   │   │   │   │   │       ├── 13_integer_literals.c
│           │   │   │   │   │   │       ├── 13_integer_literals.expect
│           │   │   │   │   │   │       ├── 14_if.c
│           │   │   │   │   │   │       ├── 14_if.expect
│           │   │   │   │   │   │       ├── 15_recursion.c
│           │   │   │   │   │   │       ├── 15_recursion.expect
│           │   │   │   │   │   │       ├── 16_nesting.c
│           │   │   │   │   │   │       ├── 16_nesting.expect
│           │   │   │   │   │   │       ├── 17_enum.c
│           │   │   │   │   │   │       ├── 17_enum.expect
│           │   │   │   │   │   │       ├── 18_include.c
│           │   │   │   │   │   │       ├── 18_include.expect
│           │   │   │   │   │   │       ├── 18_include.h
│           │   │   │   │   │   │       ├── 19_pointer_arithmetic.c
│           │   │   │   │   │   │       ├── 19_pointer_arithmetic.expect
│           │   │   │   │   │   │       ├── 20_pointer_comparison.c
│           │   │   │   │   │   │       ├── 20_pointer_comparison.expect
│           │   │   │   │   │   │       ├── 21_char_array.c
│           │   │   │   │   │   │       ├── 21_char_array.expect
│           │   │   │   │   │   │       ├── 22_floating_point.c
│           │   │   │   │   │   │       ├── 22_floating_point.expect
│           │   │   │   │   │   │       ├── 23_type_coercion.c
│           │   │   │   │   │   │       ├── 23_type_coercion.expect
│           │   │   │   │   │   │       ├── 24_math_library.c
│           │   │   │   │   │   │       ├── 24_math_library.expect
│           │   │   │   │   │   │       ├── 25_quicksort.c
│           │   │   │   │   │   │       ├── 25_quicksort.expect
│           │   │   │   │   │   │       ├── 26_character_constants.c
│           │   │   │   │   │   │       ├── 26_character_constants.expect
│           │   │   │   │   │   │       ├── 27_sizeof.c
│           │   │   │   │   │   │       ├── 27_sizeof.expect
│           │   │   │   │   │   │       ├── 28_strings.c
│           │   │   │   │   │   │       ├── 28_strings.expect
│           │   │   │   │   │   │       ├── 29_array_address.c
│           │   │   │   │   │   │       ├── 29_array_address.expect
│           │   │   │   │   │   │       ├── 30_hanoi.c
│           │   │   │   │   │   │       ├── 30_hanoi.expect
│           │   │   │   │   │   │       ├── 31_args.c
│           │   │   │   │   │   │       ├── 31_args.expect
│           │   │   │   │   │   │       ├── 32_led.c
│           │   │   │   │   │   │       ├── 32_led.expect
│           │   │   │   │   │   │       ├── 33_ternary_op.c
│           │   │   │   │   │   │       ├── 33_ternary_op.expect
│           │   │   │   │   │   │       ├── 34_array_assignment.c
│           │   │   │   │   │   │       ├── 34_array_assignment.expect
│           │   │   │   │   │   │       ├── 35_sizeof.c
│           │   │   │   │   │   │       ├── 35_sizeof.expect
│           │   │   │   │   │   │       ├── 36_array_initialisers.c
│           │   │   │   │   │   │       ├── 36_array_initialisers.expect
│           │   │   │   │   │   │       ├── 37_sprintf.c
│           │   │   │   │   │   │       ├── 37_sprintf.expect
│           │   │   │   │   │   │       ├── 38_multiple_array_index.c
│           │   │   │   │   │   │       ├── 38_multiple_array_index.expect
│           │   │   │   │   │   │       ├── 39_typedef.c
│           │   │   │   │   │   │       ├── 39_typedef.expect
│           │   │   │   │   │   │       ├── 40_stdio.c
│           │   │   │   │   │   │       ├── 40_stdio.expect
│           │   │   │   │   │   │       ├── 41_hashif.c
│           │   │   │   │   │   │       ├── 41_hashif.expect
│           │   │   │   │   │   │       ├── 42_function_pointer.c
│           │   │   │   │   │   │       ├── 42_function_pointer.expect
│           │   │   │   │   │   │       ├── 43_void_param.c
│           │   │   │   │   │   │       ├── 43_void_param.expect
│           │   │   │   │   │   │       ├── 44_scoped_declarations.c
│           │   │   │   │   │   │       ├── 44_scoped_declarations.expect
│           │   │   │   │   │   │       ├── 45_empty_for.c
│           │   │   │   │   │   │       ├── 45_empty_for.expect
│           │   │   │   │   │   │       ├── 46_grep.c
│           │   │   │   │   │   │       ├── 47_switch_return.c
│           │   │   │   │   │   │       ├── 47_switch_return.expect
│           │   │   │   │   │   │       ├── 48_nested_break.c
│           │   │   │   │   │   │       ├── 48_nested_break.expect
│           │   │   │   │   │   │       ├── 49_bracket_evaluation.c
│           │   │   │   │   │   │       ├── 49_bracket_evaluation.expect
│           │   │   │   │   │   │       ├── 50_logical_second_arg.c
│           │   │   │   │   │   │       ├── 50_logical_second_arg.expect
│           │   │   │   │   │   │       ├── 51_static.c
│           │   │   │   │   │   │       ├── 51_static.expect
│           │   │   │   │   │   │       ├── 52_unnamed_enum.c
│           │   │   │   │   │   │       ├── 52_unnamed_enum.expect
│           │   │   │   │   │   │       ├── 54_goto.c
│           │   │   │   │   │   │       ├── 54_goto.expect
│           │   │   │   │   │   │       ├── 55_lshift_type.c
│           │   │   │   │   │   │       ├── 55_lshift_type.expect
│           │   │   │   │   │   │       ├── LICENSE
│           │   │   │   │   │   │       └── Makefile
│           │   │   │   │   │   ├── tests2/
│           │   │   │   │   │   │   ├── 00_assignment.c
│           │   │   │   │   │   │   ├── 00_assignment.expect
│           │   │   │   │   │   │   ├── 01_comment.c
│           │   │   │   │   │   │   ├── 01_comment.expect
│           │   │   │   │   │   │   ├── 02_printf.c
│           │   │   │   │   │   │   ├── 02_printf.expect
│           │   │   │   │   │   │   ├── 03_struct.c
│           │   │   │   │   │   │   ├── 03_struct.expect
│           │   │   │   │   │   │   ├── 04_for.c
│           │   │   │   │   │   │   ├── 04_for.expect
│           │   │   │   │   │   │   ├── 05_array.c
│           │   │   │   │   │   │   ├── 05_array.expect
│           │   │   │   │   │   │   ├── 06_case.c
│           │   │   │   │   │   │   ├── 06_case.expect
│           │   │   │   │   │   │   ├── 07_function.c
│           │   │   │   │   │   │   ├── 07_function.expect
│           │   │   │   │   │   │   ├── 08_while.c
│           │   │   │   │   │   │   ├── 08_while.expect
│           │   │   │   │   │   │   ├── 09_do_while.c
│           │   │   │   │   │   │   ├── 09_do_while.expect
│           │   │   │   │   │   │   ├── 10_pointer.c
│           │   │   │   │   │   │   ├── 10_pointer.expect
│           │   │   │   │   │   │   ├── 11_precedence.c
│           │   │   │   │   │   │   ├── 11_precedence.expect
│           │   │   │   │   │   │   ├── 12_hashdefine.c
│           │   │   │   │   │   │   ├── 12_hashdefine.expect
│           │   │   │   │   │   │   ├── 13_integer_literals.c
│           │   │   │   │   │   │   ├── 13_integer_literals.expect
│           │   │   │   │   │   │   ├── 14_if.c
│           │   │   │   │   │   │   ├── 14_if.expect
│           │   │   │   │   │   │   ├── 15_recursion.c
│           │   │   │   │   │   │   ├── 15_recursion.expect
│           │   │   │   │   │   │   ├── 16_nesting.c
│           │   │   │   │   │   │   ├── 16_nesting.expect
│           │   │   │   │   │   │   ├── 17_enum.c
│           │   │   │   │   │   │   ├── 17_enum.expect
│           │   │   │   │   │   │   ├── 18_include.c
│           │   │   │   │   │   │   ├── 18_include.expect
│           │   │   │   │   │   │   ├── 18_include.h
│           │   │   │   │   │   │   ├── 19_pointer_arithmetic.c
│           │   │   │   │   │   │   ├── 19_pointer_arithmetic.expect
│           │   │   │   │   │   │   ├── 20_pointer_comparison.c
│           │   │   │   │   │   │   ├── 20_pointer_comparison.expect
│           │   │   │   │   │   │   ├── 21_char_array.c
│           │   │   │   │   │   │   ├── 21_char_array.expect
│           │   │   │   │   │   │   ├── 22_floating_point.c
│           │   │   │   │   │   │   ├── 22_floating_point.expect
│           │   │   │   │   │   │   ├── 23_type_coercion.c
│           │   │   │   │   │   │   ├── 23_type_coercion.expect
│           │   │   │   │   │   │   ├── 24_math_library.c
│           │   │   │   │   │   │   ├── 24_math_library.expect
│           │   │   │   │   │   │   ├── 25_quicksort.c
│           │   │   │   │   │   │   ├── 25_quicksort.expect
│           │   │   │   │   │   │   ├── 26_character_constants.c
│           │   │   │   │   │   │   ├── 26_character_constants.expect
│           │   │   │   │   │   │   ├── 27_sizeof.c
│           │   │   │   │   │   │   ├── 27_sizeof.expect
│           │   │   │   │   │   │   ├── 28_strings.c
│           │   │   │   │   │   │   ├── 28_strings.expect
│           │   │   │   │   │   │   ├── 29_array_address.c
│           │   │   │   │   │   │   ├── 29_array_address.expect
│           │   │   │   │   │   │   ├── 30_hanoi.c
│           │   │   │   │   │   │   ├── 30_hanoi.expect
│           │   │   │   │   │   │   ├── 31_args.c
│           │   │   │   │   │   │   ├── 31_args.expect
│           │   │   │   │   │   │   ├── 32_led.c
│           │   │   │   │   │   │   ├── 32_led.expect
│           │   │   │   │   │   │   ├── 33_ternary_op.c
│           │   │   │   │   │   │   ├── 33_ternary_op.expect
│           │   │   │   │   │   │   ├── 34_array_assignment.c
│           │   │   │   │   │   │   ├── 34_array_assignment.expect
│           │   │   │   │   │   │   ├── 35_sizeof.c
│           │   │   │   │   │   │   ├── 35_sizeof.expect
│           │   │   │   │   │   │   ├── 36_array_initialisers.c
│           │   │   │   │   │   │   ├── 36_array_initialisers.expect
│           │   │   │   │   │   │   ├── 37_sprintf.c
│           │   │   │   │   │   │   ├── 37_sprintf.expect
│           │   │   │   │   │   │   ├── 38_multiple_array_index.c
│           │   │   │   │   │   │   ├── 38_multiple_array_index.expect
│           │   │   │   │   │   │   ├── 39_typedef.c
│           │   │   │   │   │   │   ├── 39_typedef.expect
│           │   │   │   │   │   │   ├── 40_stdio.c
│           │   │   │   │   │   │   ├── 40_stdio.expect
│           │   │   │   │   │   │   ├── 41_hashif.c
│           │   │   │   │   │   │   ├── 41_hashif.expect
│           │   │   │   │   │   │   ├── 42_function_pointer.c
│           │   │   │   │   │   │   ├── 42_function_pointer.expect
│           │   │   │   │   │   │   ├── 43_void_param.c
│           │   │   │   │   │   │   ├── 43_void_param.expect
│           │   │   │   │   │   │   ├── 44_scoped_declarations.c
│           │   │   │   │   │   │   ├── 44_scoped_declarations.expect
│           │   │   │   │   │   │   ├── 45_empty_for.c
│           │   │   │   │   │   │   ├── 45_empty_for.expect
│           │   │   │   │   │   │   ├── 46_grep.c
│           │   │   │   │   │   │   ├── 47_switch_return.c
│           │   │   │   │   │   │   ├── 47_switch_return.expect
│           │   │   │   │   │   │   ├── 48_nested_break.c
│           │   │   │   │   │   │   ├── 48_nested_break.expect
│           │   │   │   │   │   │   ├── 49_bracket_evaluation.c
│           │   │   │   │   │   │   ├── 49_bracket_evaluation.expect
│           │   │   │   │   │   │   ├── 50_logical_second_arg.c
│           │   │   │   │   │   │   ├── 50_logical_second_arg.expect
│           │   │   │   │   │   │   ├── 51_static.c
│           │   │   │   │   │   │   ├── 51_static.expect
│           │   │   │   │   │   │   ├── 52_unnamed_enum.c
│           │   │   │   │   │   │   ├── 52_unnamed_enum.expect
│           │   │   │   │   │   │   ├── 54_goto.c
│           │   │   │   │   │   │   ├── 54_goto.expect
│           │   │   │   │   │   │   ├── 55_lshift_type.c
│           │   │   │   │   │   │   ├── 55_lshift_type.expect
│           │   │   │   │   │   │   ├── LICENSE
│           │   │   │   │   │   │   └── Makefile
│           │   │   │   │   │   ├── texi2pod.pl
│           │   │   │   │   │   ├── ucontext.h
│           │   │   │   │   │   ├── win32/
│           │   │   │   │   │   │   ├── build-tcc.bat
│           │   │   │   │   │   │   ├── examples/
│           │   │   │   │   │   │   │   ├── dll.c
│           │   │   │   │   │   │   │   ├── fib.c
│           │   │   │   │   │   │   │   ├── hello_dll.c
│           │   │   │   │   │   │   │   └── hello_win.c
│           │   │   │   │   │   │   ├── include/
│           │   │   │   │   │   │   │   ├── _mingw.h
│           │   │   │   │   │   │   │   ├── assert.h
│           │   │   │   │   │   │   │   ├── conio.h
│           │   │   │   │   │   │   │   ├── ctype.h
│           │   │   │   │   │   │   │   ├── dir.h
│           │   │   │   │   │   │   │   ├── direct.h
│           │   │   │   │   │   │   │   ├── dirent.h
│           │   │   │   │   │   │   │   ├── dos.h
│           │   │   │   │   │   │   │   ├── errno.h
│           │   │   │   │   │   │   │   ├── excpt.h
│           │   │   │   │   │   │   │   ├── fcntl.h
│           │   │   │   │   │   │   │   ├── fenv.h
│           │   │   │   │   │   │   │   ├── inttypes.h
│           │   │   │   │   │   │   │   ├── io.h
│           │   │   │   │   │   │   │   ├── limits.h
│           │   │   │   │   │   │   │   ├── locale.h
│           │   │   │   │   │   │   │   ├── malloc.h
│           │   │   │   │   │   │   │   ├── math.h
│           │   │   │   │   │   │   │   ├── mem.h
│           │   │   │   │   │   │   │   ├── memory.h
│           │   │   │   │   │   │   │   ├── process.h
│           │   │   │   │   │   │   │   ├── sec_api/
│           │   │   │   │   │   │   │   │   ├── conio_s.h
│           │   │   │   │   │   │   │   │   ├── crtdbg_s.h
│           │   │   │   │   │   │   │   │   ├── io_s.h
│           │   │   │   │   │   │   │   │   ├── mbstring_s.h
│           │   │   │   │   │   │   │   │   ├── search_s.h
│           │   │   │   │   │   │   │   │   ├── stdio_s.h
│           │   │   │   │   │   │   │   │   ├── stdlib_s.h
│           │   │   │   │   │   │   │   │   ├── stralign_s.h
│           │   │   │   │   │   │   │   │   ├── string_s.h
│           │   │   │   │   │   │   │   │   ├── sys/
│           │   │   │   │   │   │   │   │   │   └── timeb_s.h
│           │   │   │   │   │   │   │   │   ├── tchar_s.h
│           │   │   │   │   │   │   │   │   ├── time_s.h
│           │   │   │   │   │   │   │   │   └── wchar_s.h
│           │   │   │   │   │   │   │   ├── setjmp.h
│           │   │   │   │   │   │   │   ├── share.h
│           │   │   │   │   │   │   │   ├── signal.h
│           │   │   │   │   │   │   │   ├── stdint.h
│           │   │   │   │   │   │   │   ├── stdio.h
│           │   │   │   │   │   │   │   ├── stdlib.h
│           │   │   │   │   │   │   │   ├── string.h
│           │   │   │   │   │   │   │   ├── sys/
│           │   │   │   │   │   │   │   │   ├── fcntl.h
│           │   │   │   │   │   │   │   │   ├── file.h
│           │   │   │   │   │   │   │   │   ├── locking.h
│           │   │   │   │   │   │   │   │   ├── stat.h
│           │   │   │   │   │   │   │   │   ├── time.h
│           │   │   │   │   │   │   │   │   ├── timeb.h
│           │   │   │   │   │   │   │   │   ├── types.h
│           │   │   │   │   │   │   │   │   ├── unistd.h
│           │   │   │   │   │   │   │   │   └── utime.h
│           │   │   │   │   │   │   │   ├── tchar.h
│           │   │   │   │   │   │   │   ├── time.h
│           │   │   │   │   │   │   │   ├── vadefs.h
│           │   │   │   │   │   │   │   ├── values.h
│           │   │   │   │   │   │   │   ├── wchar.h
│           │   │   │   │   │   │   │   ├── wctype.h
│           │   │   │   │   │   │   │   └── winapi/
│           │   │   │   │   │   │   │       ├── basetsd.h
│           │   │   │   │   │   │   │       ├── basetyps.h
│           │   │   │   │   │   │   │       ├── guiddef.h
│           │   │   │   │   │   │   │       ├── intrin.h
│           │   │   │   │   │   │   │       ├── poppack.h
│           │   │   │   │   │   │   │       ├── pshpack1.h
│           │   │   │   │   │   │   │       ├── pshpack2.h
│           │   │   │   │   │   │   │       ├── pshpack4.h
│           │   │   │   │   │   │   │       ├── pshpack8.h
│           │   │   │   │   │   │   │       ├── reason.h
│           │   │   │   │   │   │   │       ├── specstrings.h
│           │   │   │   │   │   │   │       ├── stralign.h
│           │   │   │   │   │   │   │       ├── tvout.h
│           │   │   │   │   │   │   │       ├── winbase.h
│           │   │   │   │   │   │   │       ├── wincon.h
│           │   │   │   │   │   │   │       ├── windef.h
│           │   │   │   │   │   │   │       ├── windows.h
│           │   │   │   │   │   │   │       ├── winerror.h
│           │   │   │   │   │   │   │       ├── wingdi.h
│           │   │   │   │   │   │   │       ├── winnetwk.h
│           │   │   │   │   │   │   │       ├── winnls.h
│           │   │   │   │   │   │   │       ├── winnt.h
│           │   │   │   │   │   │   │       ├── winreg.h
│           │   │   │   │   │   │   │       ├── winuser.h
│           │   │   │   │   │   │   │       └── winver.h
│           │   │   │   │   │   │   ├── lib/
│           │   │   │   │   │   │   │   ├── chkstk.S
│           │   │   │   │   │   │   │   ├── crt1.c
│           │   │   │   │   │   │   │   ├── dllcrt1.c
│           │   │   │   │   │   │   │   ├── dllmain.c
│           │   │   │   │   │   │   │   ├── gdi32.def
│           │   │   │   │   │   │   │   ├── kernel32.def
│           │   │   │   │   │   │   │   ├── msvcrt.def
│           │   │   │   │   │   │   │   ├── user32.def
│           │   │   │   │   │   │   │   └── wincrt1.c
│           │   │   │   │   │   │   ├── tcc-win32.txt
│           │   │   │   │   │   │   └── tools/
│           │   │   │   │   │   │       ├── tiny_impdef.c
│           │   │   │   │   │   │       └── tiny_libmaker.c
│           │   │   │   │   │   ├── x86_64-asm.h
│           │   │   │   │   │   └── x86_64-gen.c
│           │   │   │   │   ├── tinyxml/
│           │   │   │   │   │   ├── tinystr.cpp
│           │   │   │   │   │   ├── tinystr.h
│           │   │   │   │   │   ├── tinyxml.cpp
│           │   │   │   │   │   ├── tinyxml.h
│           │   │   │   │   │   ├── tinyxmlerror.cpp
│           │   │   │   │   │   └── tinyxmlparser.cpp
│           │   │   │   │   ├── valuearray.h
│           │   │   │   │   ├── vfat.cpp
│           │   │   │   │   ├── vfat.h
│           │   │   │   │   ├── xstring.cpp
│           │   │   │   │   ├── xstring.h
│           │   │   │   │   └── xstring_r7b.h
│           │   │   │   ├── version.cpp
│           │   │   │   ├── version.h
│           │   │   │   ├── wifi.cpp
│           │   │   │   └── wifi.h
│           │   │   └── wxwin.m4
│           │   ├── desmume_compat.mk
│           │   ├── desmume_neon.mk
│           │   └── desmume_v7.mk
│           └── res/
│               ├── drawable/
│               │   └── bkg_griditem.xml
│               ├── layout/
│               │   ├── about.xml
│               │   ├── activity_main.xml
│               │   ├── cheatedit.xml
│               │   ├── cheatrow.xml
│               │   ├── cheats.xml
│               │   ├── dialog_slider.xml
│               │   ├── dialog_slider_noimg.xml
│               │   ├── file_dialog_main.xml
│               │   ├── file_dialog_row.xml
│               │   ├── fragment_list.xml
│               │   ├── griditem_rom.xml
│               │   └── keymap.xml
│               ├── menu/
│               │   ├── activity_collection.xml
│               │   └── activity_main.xml
│               ├── values/
│               │   ├── colors.xml
│               │   ├── dimens.xml
│               │   ├── fileendings.xml
│               │   ├── strings.xml
│               │   └── styles.xml
│               ├── values-de/
│               │   ├── arrays.xml
│               │   ├── colors.xml
│               │   └── strings.xml
│               ├── values-fr/
│               │   └── strings.xml
│               ├── values-he/
│               │   └── strings.xml
│               ├── values-it/
│               │   └── strings.xml
│               ├── values-ja/
│               │   └── strings.xml
│               ├── values-ko/
│               │   └── strings.xml
│               ├── values-nl/
│               │   └── strings.xml
│               ├── values-pt/
│               │   └── strings.xml
│               ├── values-pt-rBR/
│               │   └── strings.xml
│               ├── values-ro/
│               │   └── strings.xml
│               ├── values-sw600dp/
│               │   └── dimens.xml
│               ├── values-sw720dp-land/
│               │   └── dimens.xml
│               ├── values-v11/
│               │   └── styles.xml
│               ├── values-v14/
│               │   └── styles.xml
│               ├── values-zh-rCN/
│               │   └── strings.xml
│               └── xml/
│                   ├── keymap.xml
│                   └── settings.xml
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
Download .txt
Showing preview only (1,178K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14143 symbols across 1182 files)

FILE: app/src/main/java/com/opendoorstudios/ds4droid/About.java
  class About (line 8) | public class About extends Activity {
    method onCreate (line 10) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/Button.java
  class Button (line 29) | class Button {
    method Button (line 31) | Button(int id) {
    method Button (line 37) | Button(Rect position, int id) {
    method Button (line 43) | Button(Rect position, int id, Bitmap bitmap) {
    method load (line 97) | static Button load(Context context, int id, int resId, boolean landsca...
    method getButtonName (line 124) | static String getButtonName(int id) {
    method apply (line 151) | void apply(int[] states, boolean on) {
    method applyToPrefs (line 173) | void applyToPrefs(SharedPreferences prefs, boolean landscape, boolean ...

FILE: app/src/main/java/com/opendoorstudios/ds4droid/ButtonLayoutEditor.java
  class ButtonLayoutEditor (line 20) | public class ButtonLayoutEditor extends Activity {
    method onCreate (line 29) | @Override
    method onStop (line 36) | @Override
    class Editing (line 48) | static class Editing {
      method Editing (line 49) | Editing(Button button) {
    class ButtonEditorView (line 62) | class ButtonEditorView extends SurfaceView implements Callback {
      method ButtonEditorView (line 64) | public ButtonEditorView(Context context) {
      class ScaleListener (line 74) | class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestur...
        method onScaleBegin (line 76) | @Override
        method onScale (line 91) | @Override
        method onScaleEnd (line 109) | @Override
      method surfaceChanged (line 120) | @Override
      method onDraw (line 143) | @Override
      method surfaceCreated (line 151) | @Override
      method surfaceDestroyed (line 156) | @Override
      method onTouchEvent (line 165) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/Cheats.java
  class Cheats (line 21) | public class Cheats extends Activity {
    method onCreate (line 23) | @Override
    method showEditDialog (line 54) | void showEditDialog() {
    class CheatAdapter (line 90) | class CheatAdapter extends BaseAdapter {
      method getCount (line 92) | @Override
      method getItem (line 97) | @Override
      method getItemId (line 102) | @Override
      method getView (line 107) | @Override
    method onStop (line 169) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/Controls.java
  class Controls (line 40) | class Controls {
    method Controls (line 51) | Controls(NDSView view) {
    method setView (line 55) | public void setView(NDSView view) {
    method loadMappings (line 69) | void loadMappings(Context context) {
    method loadControls (line 97) | void loadControls(Context context, int screenWidth, int screenHeight, ...
    method getRatioRect (line 182) | static Rect getRatioRect(Rect base, float left, float top, float right...
    method touchScreenProcess (line 209) | boolean touchScreenProcess(MotionEvent event) {
    method onTouchEvent (line 269) | boolean onTouchEvent(MotionEvent event) {
    method onKeyDown (line 352) | boolean onKeyDown(int keyCode, KeyEvent event) {
    method onKeyUp (line 364) | boolean onKeyUp(int keyCode, KeyEvent event) {
    method sendStates (line 380) | void sendStates() {
    method drawControls (line 387) | void drawControls(Canvas canvas) {

FILE: app/src/main/java/com/opendoorstudios/ds4droid/DeSmuME.java
  class DeSmuME (line 26) | class DeSmuME {
    method load (line 36) | static void load()
    method getCPUType (line 59) | static native int getCPUType();
    method getCPUFamily (line 60) | static native int getCPUFamily();
    method init (line 61) | static native void init();
    method runCore (line 62) | static native void runCore();
    method resize (line 63) | static native void resize(Bitmap bitmap);
    method draw (line 64) | static native int draw(Bitmap bitmapMain, Bitmap bitmapTouch, boolean ...
    method touchScreenTouch (line 65) | static native void touchScreenTouch(int x, int y);
    method touchScreenRelease (line 66) | static native void touchScreenRelease();
    method setButtons (line 67) | static native void setButtons(int l, int r, int up, int down, int left...
    method loadRom (line 68) | static native boolean loadRom(String path);
    method setWorkingDir (line 69) | static native void setWorkingDir(String path, String temp);
    method saveState (line 70) | static native void saveState(int slot);
    method restoreState (line 71) | static native void restoreState(int slot);
    method loadSettings (line 72) | static native void loadSettings();
    method getNativeWidth (line 73) | static native int getNativeWidth();
    method getNativeHeight (line 74) | static native int getNativeHeight();
    method setFilter (line 75) | static native void setFilter(int index);
    method change3D (line 76) | static native void change3D(int set);
    method changeSound (line 77) | static native void changeSound(int set);
    method setSoundPaused (line 78) | static native void setSoundPaused(int set);
    method reloadFirmware (line 79) | static native void reloadFirmware();
    method getNumberOfCheats (line 80) | static native int getNumberOfCheats();
    method getCheatName (line 81) | static native String getCheatName(int pos);
    method getCheatEnabled (line 82) | static native boolean getCheatEnabled(int pos);
    method getCheatCode (line 83) | static native String getCheatCode(int pos);
    method getCheatType (line 84) | static native int getCheatType(int pos);
    method addCheat (line 85) | static native void addCheat(String description, String code);
    method updateCheat (line 86) | static native void updateCheat(String description, String code, int pos);
    method saveCheats (line 87) | static native void saveCheats();
    method setCheatEnabled (line 88) | static native void setCheatEnabled(int pos, boolean enabled);
    method deleteCheat (line 89) | static native void deleteCheat(int pos);
    method setMicPaused (line 90) | static native void setMicPaused(int set);
    method closeRom (line 91) | static native void closeRom();
    method exit (line 92) | static native void exit();
    method changeCpuMode (line 93) | static native void changeCpuMode(int mode);
    method changeSoundSynchMode (line 94) | static native void changeSoundSynchMode(int mode);
    method getSettingInt (line 103) | public static int getSettingInt(String name, int def)

FILE: app/src/main/java/com/opendoorstudios/ds4droid/EmulatorThread.java
  class EmulatorThread (line 28) | class EmulatorThread extends Thread {
    method EmulatorThread (line 30) | public EmulatorThread(MainActivity activity) {
    method setCurrentActivity (line 35) | public void setCurrentActivity(MainActivity activity) {
    method loadRom (line 50) | public void loadRom(String path) {
    method change3D (line 57) | public void change3D(int set) {
    method changeSound (line 61) | public void changeSound(int set) {
    method changeCPUMode (line 65) | public void changeCPUMode(int set) {
    method changeSoundSyncMode (line 69) | public void changeSoundSyncMode(int set) {
    method setCancel (line 73) | public void setCancel(boolean set) {
    method setPause (line 80) | public void setPause(boolean set) {
    method run (line 99) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/FileDialog.java
  class FileDialog (line 44) | public class FileDialog extends ListActivity {
    class SelectionMode (line 46) | public static class SelectionMode {
    method onCreate (line 94) | @Override
    method getDir (line 119) | private void getDir(String dirPath) {
    method getDirImpl (line 134) | private void getDirImpl(final String dirPath) {
    method addItem (line 231) | private void addItem(String fileName, int imageId) {
    method onListItemClick (line 238) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/KeyMapPreference.java
  class KeyMapPreference (line 32) | public class KeyMapPreference extends DialogPreference implements OnKeyL...
    method KeyMapPreference (line 34) | public KeyMapPreference(Context context, AttributeSet attrs) {
    method getKeyDesc (line 43) | static String getKeyDesc(int value) {
    method sync (line 52) | void sync() {
    method onCreateDialogView (line 56) | @Override
    method getSummary (line 70) | @Override
    method onKey (line 78) | @Override
    method onDialogClosed (line 92) | @Override
    method populateKeycodeSymbolicNames (line 114) | private static void populateKeycodeSymbolicNames() {

FILE: app/src/main/java/com/opendoorstudios/ds4droid/KeyMapSettings.java
  class KeyMapSettings (line 23) | public class KeyMapSettings extends PreferenceActivity {
    method onCreate (line 25) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/MainActivity.java
  class MainActivity (line 61) | public class MainActivity extends Activity implements OnSharedPreference...
    method dispatchMessage (line 71) | @Override
    method onCreate (line 122) | @Override
    method onConfigurationChanged (line 148) | @Override
    method runEmulation (line 154) | void runEmulation() {
    method pauseEmulation (line 167) | void pauseEmulation() {
    method pickRom (line 173) | void pickRom() {
    method onActivityResult (line 188) | @Override
    method onSaveInstanceState (line 206) | @Override
    method onResume (line 211) | @Override
    method onPause (line 220) | @Override
    method startDrawTimer (line 229) | void startDrawTimer() {
    method stopDrawTimer (line 242) | void stopDrawTimer() {
    method onCreateOptionsMenu (line 247) | @Override
    method onPrepareOptionsMenu (line 254) | @Override
    method onOptionsMenuClosed (line 304) | @Override
    method onMenuItemSelected (line 309) | @Override
    method getStateName (line 371) | static String getStateName(int slot) {
    method restoreState (line 379) | void restoreState(int slot) {
    method saveState (line 389) | void saveState(int slot) {
    method onSharedPreferenceChanged (line 402) | @Override
    method loadJavaSettings (line 411) | void loadJavaSettings(String key)
    method cancelAutosave (line 470) | void cancelAutosave() {
    method scheduleAutosave (line 477) | void scheduleAutosave() {
    class NDSView (line 507) | class NDSView extends SurfaceView implements Callback {
      method NDSView (line 523) | public NDSView(Context context) {
      method forceResize (line 538) | public void forceResize() {
      method onDraw (line 544) | @Override
      method onTouchEvent (line 639) | @Override
      method resize (line 659) | void resize(int newWidth, int newHeight, int newPixelFormat) {
      method surfaceChanged (line 803) | @Override
      method surfaceCreated (line 812) | @Override
      method surfaceDestroyed (line 817) | @Override
      method onKeyDown (line 821) | @Override
      method onKeyUp (line 826) | @Override
      method showMenu (line 831) | public void showMenu() {

FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/CollectionActivity.java
  class CollectionActivity (line 30) | public class CollectionActivity extends Activity implements GridView.OnI...
    method onCreate (line 42) | @Override
    method onDestroy (line 60) | @Override
    method onCreateOptionsMenu (line 69) | @Override
    method showFileBrowser (line 75) | private void showFileBrowser() {
    method onMenuItemSelected (line 83) | @Override
    method onActivityResult (line 101) | @Override
    method onItemClick (line 116) | @Override
    class RomAdapter (line 130) | private class RomAdapter extends BaseAdapter implements RomCollection....
      method RomAdapter (line 133) | public RomAdapter() {
      method getCount (line 144) | @Override
      method getItem (line 151) | @Override
      method getItemId (line 158) | @Override
      method getView (line 165) | @Override
      method onScanStarted (line 203) | @Override
      method onScanFinished (line 214) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/NdsRom.java
  class NdsRom (line 16) | public class NdsRom {
    method MakeRom (line 50) | public static NdsRom MakeRom(File f) {
    method NdsRom (line 57) | private NdsRom(File file, InputStream stream ) {
    method longSkip (line 106) | private void longSkip( InputStream stream, int skip ) throws IOExcepti...
    method composeInt (line 115) | private static int composeInt( byte[] bytes ) {
    method getGameCode (line 121) | public long getGameCode() {
    method getIcon (line 128) | public Bitmap getIcon() {
    method isIconLoaded (line 168) | public boolean isIconLoaded() {
    method getTitle (line 174) | public String getTitle() {
    method getTitle (line 180) | public String getTitle( String lang ) {
    method getFile (line 214) | public File getFile() { return FILE; }
    method isRomArchive (line 218) | static boolean isRomArchive( ZipFile file ) {
    method getRomStream (line 236) | private static InputStream getRomStream( File file ) {
    method getRomStream (line 258) | private static InputStream getRomStream( ZipFile file ) {

FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomCollection.java
  class RomCollection (line 21) | public class RomCollection {
    method accept (line 27) | @Override public boolean accept( File file ) {
    method accept (line 32) | @Override
    method accept (line 39) | @Override
    method accept (line 59) | @Override
    method RomCollection (line 76) | public RomCollection( Context context, File root ) {
    method update (line 99) | public void update( final Context context ) {
    method clear (line 147) | public void clear() {
    method scanDirectory (line 156) | private void scanDirectory( File file, long last_scan, boolean recursi...
    method addListener (line 198) | public void addListener( ScanListener listener ) {
    method removeListener (line 204) | public void removeListener( ScanListener listener ) {
    method clearListeners (line 210) | public void clearListeners() {
    method getRoms (line 216) | public NdsRom[] getRoms() {
    type ScanListener (line 237) | public interface ScanListener {
      method onScanStarted (line 240) | public void onScanStarted(  RomCollection collection );
      method onScanFinished (line 241) | public void onScanFinished( RomCollection collection );

FILE: app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomDatabaseHelper.java
  class RomDatabaseHelper (line 8) | public class RomDatabaseHelper extends SQLiteOpenHelper {
    method RomDatabaseHelper (line 16) | public RomDatabaseHelper( Context context ) {
    method onCreate (line 22) | @Override
    method onUpgrade (line 34) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/Settings.java
  class Settings (line 38) | public class Settings extends PreferenceActivity {
    method onCreate (line 43) | @Override
    method applyLayoutDefaults (line 81) | static void applyLayoutDefaults(SharedPreferences prefs, boolean overw...
    method applyMappingDefaults (line 160) | static void applyMappingDefaults(SharedPreferences prefs, boolean over...
    method applyDefaults (line 193) | public static void applyDefaults(Context context) {

FILE: app/src/main/java/com/opendoorstudios/ds4droid/SliderPreference.java
  class SliderPreference (line 13) | public class SliderPreference extends DialogPreference implements OnSeek...
    method SliderPreference (line 15) | public SliderPreference(Context context, AttributeSet attrs) {
    method onCreateDialogView (line 25) | @Override
    method onDialogClosed (line 46) | @Override
    method getSummary (line 61) | @Override
    method onProgressChanged (line 69) | public void onProgressChanged(SeekBar seek, int value, boolean fromTou...
    method onStartTrackingTouch (line 73) | @Override
    method onStopTrackingTouch (line 79) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/TransparencyPreference.java
  class TransparencyPreference (line 33) | public class TransparencyPreference extends DialogPreference implements ...
    method TransparencyPreference (line 37) | public TransparencyPreference(Context context, AttributeSet attrs) {
    method onCreateDialogView (line 50) | @Override
    method onDialogClosed (line 77) | @Override
    method getSummary (line 92) | @Override
    method onProgressChanged (line 100) | public void onProgressChanged(SeekBar seek, int value, boolean fromTou...
    method onStartTrackingTouch (line 105) | @Override
    method onStopTrackingTouch (line 110) | @Override

FILE: app/src/main/java/com/opendoorstudios/ds4droid/ds4droidApplication.java
  class ds4droidApplication (line 24) | public class ds4droidApplication extends Application {
    method onCreate (line 26) | @Override

FILE: app/src/main/jni/cpudetect/cpu.cpp
  function jint (line 30) | jint JNI_NOARGS(getCPUType)
  function jint (line 50) | jint JNI_NOARGS(getCPUFamily)

FILE: app/src/main/jni/desmume/src/ArmAnalyze.cpp
  type _Decoded (line 25) | struct _Decoded
  type ThumbOpDecoder (line 108) | namespace ThumbOpDecoder
    function TEMPLATE (line 118) | TEMPLATE u32 FASTCALL OP_LSL_0(armcpu_t *armcpu, const OPCODE opcode, ...
    function TEMPLATE (line 134) | TEMPLATE u32 FASTCALL OP_LSL(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 152) | TEMPLATE u32 FASTCALL OP_LSL_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 171) | TEMPLATE u32 FASTCALL OP_LSR_0(armcpu_t *armcpu, const OPCODE opcode, ...
    function TEMPLATE (line 187) | TEMPLATE u32 FASTCALL OP_LSR(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 203) | TEMPLATE u32 FASTCALL OP_LSR_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 222) | TEMPLATE u32 FASTCALL OP_ASR_0(armcpu_t *armcpu, const OPCODE opcode, ...
    function TEMPLATE (line 238) | TEMPLATE u32 FASTCALL OP_ASR(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 254) | TEMPLATE u32 FASTCALL OP_ASR_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 273) | TEMPLATE u32 FASTCALL OP_ADD_IMM3(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 286) | TEMPLATE u32 FASTCALL OP_ADD_IMM8(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 299) | TEMPLATE u32 FASTCALL OP_ADD_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 315) | TEMPLATE u32 FASTCALL OP_ADD_SPE(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 336) | TEMPLATE u32 FASTCALL OP_ADD_2PC(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 350) | TEMPLATE u32 FASTCALL OP_ADD_2SP(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 365) | TEMPLATE u32 FASTCALL OP_SUB_IMM3(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 378) | TEMPLATE u32 FASTCALL OP_SUB_IMM8(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 391) | TEMPLATE u32 FASTCALL OP_SUB_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 410) | TEMPLATE u32 FASTCALL OP_MOV_IMM8(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 423) | TEMPLATE u32 FASTCALL OP_MOV_SPE(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 454) | TEMPLATE u32 FASTCALL OP_CMP_IMM8(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 467) | TEMPLATE u32 FASTCALL OP_CMP(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 483) | TEMPLATE u32 FASTCALL OP_CMP_SPE(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 502) | TEMPLATE u32 FASTCALL OP_AND(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 521) | TEMPLATE u32 FASTCALL OP_EOR(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 540) | TEMPLATE u32 FASTCALL OP_ADC_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 560) | TEMPLATE u32 FASTCALL OP_SBC_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 580) | TEMPLATE u32 FASTCALL OP_ROR_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 599) | TEMPLATE u32 FASTCALL OP_TST(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 618) | TEMPLATE u32 FASTCALL OP_NEG(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 634) | TEMPLATE u32 FASTCALL OP_CMN(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 653) | TEMPLATE u32 FASTCALL OP_ORR(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 672) | TEMPLATE u32 FASTCALL OP_BIC(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 691) | TEMPLATE u32 FASTCALL OP_MVN(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 710) | TEMPLATE u32 FASTCALL OP_MUL_REG(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 725) | TEMPLATE u32 FASTCALL OP_STRB_IMM_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 742) | TEMPLATE u32 FASTCALL OP_LDRB_IMM_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 759) | TEMPLATE u32 FASTCALL OP_STRB_REG_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 779) | TEMPLATE u32 FASTCALL OP_LDRB_REG_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 802) | TEMPLATE u32 FASTCALL OP_LDRSB_REG_OFF(armcpu_t *armcpu, const OPCODE ...
    function TEMPLATE (line 823) | TEMPLATE u32 FASTCALL OP_STRH_IMM_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 841) | TEMPLATE u32 FASTCALL OP_LDRH_IMM_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 859) | TEMPLATE u32 FASTCALL OP_STRH_REG_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 877) | TEMPLATE u32 FASTCALL OP_LDRH_REG_OFF(armcpu_t *armcpu, const OPCODE o...
    function TEMPLATE (line 898) | TEMPLATE u32 FASTCALL OP_LDRSH_REG_OFF(armcpu_t *armcpu, const OPCODE ...
    function TEMPLATE (line 919) | TEMPLATE u32 FASTCALL OP_STR_IMM_OFF(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 936) | TEMPLATE u32 FASTCALL OP_LDR_IMM_OFF(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 953) | TEMPLATE u32 FASTCALL OP_STR_REG_OFF(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 973) | TEMPLATE u32 FASTCALL OP_LDR_REG_OFF(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 993) | TEMPLATE u32 FASTCALL OP_STR_SPREL(armcpu_t *armcpu, const OPCODE opco...
    function TEMPLATE (line 1010) | TEMPLATE u32 FASTCALL OP_LDR_SPREL(armcpu_t *armcpu, const OPCODE opco...
    function TEMPLATE (line 1027) | TEMPLATE u32 FASTCALL OP_LDR_PCREL(armcpu_t *armcpu, const OPCODE opco...
    function TEMPLATE (line 1049) | TEMPLATE u32 FASTCALL OP_ADJUST_P_SP(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 1061) | TEMPLATE u32 FASTCALL OP_ADJUST_M_SP(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 1076) | TEMPLATE u32 FASTCALL OP_PUSH(armcpu_t *armcpu, const OPCODE opcode, s...
    function TEMPLATE (line 1091) | TEMPLATE u32 FASTCALL OP_PUSH_LR(armcpu_t *armcpu, const OPCODE opcode...
    function TEMPLATE (line 1106) | TEMPLATE u32 FASTCALL OP_POP(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 1121) | TEMPLATE u32 FASTCALL OP_POP_PC(armcpu_t *armcpu, const OPCODE opcode,...
    function TEMPLATE (line 1141) | TEMPLATE u32 FASTCALL OP_STMIA_THUMB(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 1156) | TEMPLATE u32 FASTCALL OP_LDMIA_THUMB(armcpu_t *armcpu, const OPCODE op...
    function TEMPLATE (line 1174) | TEMPLATE u32 FASTCALL OP_BKPT_THUMB(armcpu_t *armcpu, const OPCODE opc...
    function TEMPLATE (line 1185) | TEMPLATE u32 FASTCALL OP_SWI_THUMB(armcpu_t *armcpu, const OPCODE opco...
    function TEMPLATE (line 1214) | TEMPLATE u32 FASTCALL OP_B_COND(armcpu_t *armcpu, const OPCODE opcode,...
    function TEMPLATE (line 1225) | TEMPLATE u32 FASTCALL OP_B_UNCOND(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 1235) | TEMPLATE u32 FASTCALL OP_BLX(armcpu_t *armcpu, const OPCODE opcode, st...
    function TEMPLATE (line 1244) | TEMPLATE u32 FASTCALL OP_BL_10(armcpu_t *armcpu, const OPCODE opcode, ...
    function TEMPLATE (line 1251) | TEMPLATE u32 FASTCALL OP_BL_11(armcpu_t *armcpu, const OPCODE opcode, ...
    function TEMPLATE (line 1259) | TEMPLATE u32 FASTCALL OP_BX_THUMB(armcpu_t *armcpu, const OPCODE opcod...
    function TEMPLATE (line 1269) | TEMPLATE u32 FASTCALL OP_BLX_THUMB(armcpu_t *armcpu, const OPCODE opco...
  type ArmOpDecoder (line 1283) | namespace ArmOpDecoder
  function TEMPLATE (line 2146) | TEMPLATE u32 FASTCALL OP_MUL(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 2156) | TEMPLATE u32 FASTCALL OP_MLA(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 2167) | TEMPLATE u32 FASTCALL OP_MUL_S(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2179) | TEMPLATE u32 FASTCALL OP_MLA_S(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2195) | TEMPLATE u32 FASTCALL OP_UMULL(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2206) | TEMPLATE u32 FASTCALL OP_UMLAL(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2217) | TEMPLATE u32 FASTCALL OP_UMULL_S(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2230) | TEMPLATE u32 FASTCALL OP_UMLAL_S(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2246) | TEMPLATE u32 FASTCALL OP_SMULL(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2257) | TEMPLATE u32 FASTCALL OP_SMLAL(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2268) | TEMPLATE u32 FASTCALL OP_SMULL_S(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2281) | TEMPLATE u32 FASTCALL OP_SMLAL_S(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2297) | TEMPLATE u32 FASTCALL OP_SWP(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 2309) | TEMPLATE u32 FASTCALL OP_SWPB(armcpu_t *armcpu, const OPCODE opcode, str...
  function TEMPLATE (line 2482) | TEMPLATE u32 FASTCALL OP_MRS_CPSR(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2494) | TEMPLATE u32 FASTCALL OP_MRS_SPSR(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2503) | TEMPLATE u32 FASTCALL OP_MSR_CPSR(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2518) | TEMPLATE u32 FASTCALL OP_MSR_SPSR(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2529) | TEMPLATE u32 FASTCALL OP_MSR_CPSR_IMM_VAL(armcpu_t *armcpu, const OPCODE...
  function TEMPLATE (line 2545) | TEMPLATE u32 FASTCALL OP_MSR_SPSR_IMM_VAL(armcpu_t *armcpu, const OPCODE...
  function TEMPLATE (line 2560) | TEMPLATE u32 FASTCALL OP_BX(armcpu_t *armcpu, const OPCODE opcode, struc...
  function TEMPLATE (line 2570) | TEMPLATE u32 FASTCALL OP_BLX_REG(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2580) | TEMPLATE u32 FASTCALL OP_B(armcpu_t *armcpu, const OPCODE opcode, struct...
  function TEMPLATE (line 2590) | TEMPLATE u32 FASTCALL OP_BL(armcpu_t *armcpu, const OPCODE opcode, struc...
  function TEMPLATE (line 2603) | TEMPLATE u32 FASTCALL OP_CLZ(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 2615) | TEMPLATE u32 FASTCALL OP_QADD(armcpu_t *armcpu, const OPCODE opcode, str...
  function TEMPLATE (line 2631) | TEMPLATE u32 FASTCALL OP_QSUB(armcpu_t *armcpu, const OPCODE opcode, str...
  function TEMPLATE (line 2647) | TEMPLATE u32 FASTCALL OP_QDADD(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2663) | TEMPLATE u32 FASTCALL OP_QDSUB(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 2682) | TEMPLATE u32 FASTCALL OP_SMUL_B_B(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2694) | TEMPLATE u32 FASTCALL OP_SMUL_B_T(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2706) | TEMPLATE u32 FASTCALL OP_SMUL_T_B(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2718) | TEMPLATE u32 FASTCALL OP_SMUL_T_T(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2733) | TEMPLATE u32 FASTCALL OP_SMLA_B_B(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2746) | TEMPLATE u32 FASTCALL OP_SMLA_B_T(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2759) | TEMPLATE u32 FASTCALL OP_SMLA_T_B(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2772) | TEMPLATE u32 FASTCALL OP_SMLA_T_T(armcpu_t *armcpu, const OPCODE opcode,...
  function TEMPLATE (line 2788) | TEMPLATE u32 FASTCALL OP_SMLAL_B_B(armcpu_t *armcpu, const OPCODE opcode...
  function TEMPLATE (line 2801) | TEMPLATE u32 FASTCALL OP_SMLAL_B_T(armcpu_t *armcpu, const OPCODE opcode...
  function TEMPLATE (line 2814) | TEMPLATE u32 FASTCALL OP_SMLAL_T_B(armcpu_t *armcpu, const OPCODE opcode...
  function TEMPLATE (line 2827) | TEMPLATE u32 FASTCALL OP_SMLAL_T_T(armcpu_t *armcpu, const OPCODE opcode...
  function TEMPLATE (line 2843) | TEMPLATE u32 FASTCALL OP_SMULW_B(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2854) | TEMPLATE u32 FASTCALL OP_SMULW_T(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2868) | TEMPLATE u32 FASTCALL OP_SMLAW_B(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2880) | TEMPLATE u32 FASTCALL OP_SMLAW_T(armcpu_t *armcpu, const OPCODE opcode, ...
  function TEMPLATE (line 2953) | TEMPLATE u32 FASTCALL OP_LDREX(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 3051) | TEMPLATE u32 FASTCALL OP_STREX(armcpu_t *armcpu, const OPCODE opcode, st...
  function TEMPLATE (line 3175) | TEMPLATE u32 FASTCALL OP_LDRD_STRD_POST_INDEX(armcpu_t *armcpu, const OP...
  function TEMPLATE (line 3202) | TEMPLATE u32 FASTCALL OP_LDRD_STRD_OFFSET_PRE_INDEX(armcpu_t *armcpu, co...
  function TEMPLATE (line 3256) | TEMPLATE u32 FASTCALL OP_MCR(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 3283) | TEMPLATE u32 FASTCALL OP_MRC(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 3304) | TEMPLATE u32 FASTCALL OP_SWI(armcpu_t *armcpu, const OPCODE opcode, stru...
  function TEMPLATE (line 3332) | TEMPLATE u32 FASTCALL OP_BKPT(armcpu_t *armcpu, const OPCODE opcode, str...
  type _ProcessorConfig (line 3421) | struct _ProcessorConfig {
    type ARM (line 3422) | struct ARM
    type THUMB (line 3428) | struct THUMB
  function u32 (line 3438) | u32 Decoded::CalcR15(const Decoded &d)
  function u32 (line 3456) | u32 Decoded::CalcNextInstruction(const Decoded &d)
  function s32 (line 3769) | s32 ArmAnalyze::Optimize(Decoded *Instructions, s32 InstructionsNum)
  function u32 (line 3781) | u32 ArmAnalyze::OptimizeFlag(Decoded *Instructions, s32 InstructionsNum)
  function s32 (line 3837) | s32 ArmAnalyze::CreateSubBlocks(Decoded *Instructions, s32 InstructionsNum)

FILE: app/src/main/jni/desmume/src/ArmAnalyze.h
  type IROpCode (line 30) | enum IROpCode
  type IRShiftOpCode (line 129) | enum IRShiftOpCode
  type OPCODE (line 138) | typedef union _OPCODE {
  type Decoded (line 145) | typedef struct _Decoded
  type BlockInfo (line 212) | typedef struct _BlockInfo
  type ArmAnalyze (line 220) | struct ArmAnalyze

FILE: app/src/main/jni/desmume/src/ArmCJit.cpp
  type ArmCJit (line 65) | namespace ArmCJit
    function u32 (line 80) | u32 GuessAddressArea(u32 PROCNUM, u32 adr)
    function u32 (line 94) | u32 GuessAddressArea(u32 PROCNUM, u32 adr_s, u32 adr_e)
    function u32 (line 108) | u32 FASTCALL CalcShiftOp(const Decoded &d)
    function IRShiftOpGenerate (line 185) | void FASTCALL IRShiftOpGenerate(const Decoded &d, char *&szCodeBuffer,...
    function DataProcessLoadCPSRGenerate (line 377) | void FASTCALL DataProcessLoadCPSRGenerate(const Decoded &d, char *&szC...
    function LDM_S_LoadCPSRGenerate (line 393) | void FASTCALL LDM_S_LoadCPSRGenerate(const Decoded &d, char *&szCodeBu...
    function R15ModifiedGenerate (line 400) | void FASTCALL R15ModifiedGenerate(const Decoded &d, char *&szCodeBuffer)
    function OPCDECODER_DECL (line 411) | OPCDECODER_DECL(IR_UND)
    function OPCDECODER_DECL (line 423) | OPCDECODER_DECL(IR_NOP)
    function OPCDECODER_DECL (line 427) | OPCDECODER_DECL(IR_DUMMY)
    function OPCDECODER_DECL (line 431) | OPCDECODER_DECL(IR_T32P1)
    function OPCDECODER_DECL (line 443) | OPCDECODER_DECL(IR_T32P2)
    function OPCDECODER_DECL (line 455) | OPCDECODER_DECL(IR_MOV)
    function OPCDECODER_DECL (line 500) | OPCDECODER_DECL(IR_MVN)
    function OPCDECODER_DECL (line 545) | OPCDECODER_DECL(IR_AND)
    function OPCDECODER_DECL (line 590) | OPCDECODER_DECL(IR_TST)
    function OPCDECODER_DECL (line 625) | OPCDECODER_DECL(IR_EOR)
    function OPCDECODER_DECL (line 670) | OPCDECODER_DECL(IR_TEQ)
    function OPCDECODER_DECL (line 705) | OPCDECODER_DECL(IR_ORR)
    function OPCDECODER_DECL (line 750) | OPCDECODER_DECL(IR_BIC)
    function OPCDECODER_DECL (line 795) | OPCDECODER_DECL(IR_ADD)
    function OPCDECODER_DECL (line 847) | OPCDECODER_DECL(IR_ADC)
    function OPCDECODER_DECL (line 909) | OPCDECODER_DECL(IR_SUB)
    function OPCDECODER_DECL (line 961) | OPCDECODER_DECL(IR_SBC)
    function OPCDECODER_DECL (line 1023) | OPCDECODER_DECL(IR_RSB)
    function OPCDECODER_DECL (line 1075) | OPCDECODER_DECL(IR_RSC)
    function OPCDECODER_DECL (line 1137) | OPCDECODER_DECL(IR_CMP)
    function OPCDECODER_DECL (line 1175) | OPCDECODER_DECL(IR_CMN)
    function OPCDECODER_DECL (line 1213) | OPCDECODER_DECL(IR_MUL)
    function OPCDECODER_DECL (line 1243) | OPCDECODER_DECL(IR_MLA)
    function OPCDECODER_DECL (line 1273) | OPCDECODER_DECL(IR_UMULL)
    function OPCDECODER_DECL (line 1305) | OPCDECODER_DECL(IR_UMLAL)
    function OPCDECODER_DECL (line 1338) | OPCDECODER_DECL(IR_SMULL)
    function OPCDECODER_DECL (line 1371) | OPCDECODER_DECL(IR_SMLAL)
    function OPCDECODER_DECL (line 1405) | OPCDECODER_DECL(IR_SMULxy)
    function OPCDECODER_DECL (line 1422) | OPCDECODER_DECL(IR_SMLAxy)
    function OPCDECODER_DECL (line 1453) | OPCDECODER_DECL(IR_SMULWy)
    function OPCDECODER_DECL (line 1466) | OPCDECODER_DECL(IR_SMLAWy)
    function OPCDECODER_DECL (line 1483) | OPCDECODER_DECL(IR_SMLALxy)
    function u32 (line 1504) | static u32 FASTCALL MEMOP_LDR(u32 adr, u32 *dstreg)
    function u32 (line 1514) | static u32 FASTCALL MEMOP_LDRB(u32 adr, u32 *dstreg)
    function OPCDECODER_DECL (line 1574) | OPCDECODER_DECL(IR_LDR)
    function u32 (line 1638) | static u32 FASTCALL MEMOP_STR(u32 adr, u32 data)
    function u32 (line 1645) | static u32 FASTCALL MEMOP_STRB(u32 adr, u32 data)
    function OPCDECODER_DECL (line 1687) | OPCDECODER_DECL(IR_STR)
    function u32 (line 1738) | static u32 FASTCALL MEMOP_LDRH(u32 adr, u32 *dstreg)
    function u32 (line 1745) | static u32 FASTCALL MEMOP_LDRSH(u32 adr, u32 *dstreg)
    function u32 (line 1752) | static u32 FASTCALL MEMOP_LDRSB(u32 adr, u32 *dstreg)
    function OPCDECODER_DECL (line 1812) | OPCDECODER_DECL(IR_LDRx)
    function u32 (line 1858) | static u32 FASTCALL MEMOP_STRH(u32 adr, u32 data)
    function OPCDECODER_DECL (line 1882) | OPCDECODER_DECL(IR_STRx)
    function u32 (line 1924) | static u32 FASTCALL MEMOP_LDRD(u32 adr, u32 *dstreg)
    function OPCDECODER_DECL (line 1949) | OPCDECODER_DECL(IR_LDRD)
    function u32 (line 1988) | static u32 FASTCALL MEMOP_STRD(u32 adr, u32 *srcreg)
    function OPCDECODER_DECL (line 2013) | OPCDECODER_DECL(IR_STRD)
    function OPCDECODER_DECL (line 2054) | OPCDECODER_DECL(IR_LDREX)
    function OPCDECODER_DECL (line 2065) | OPCDECODER_DECL(IR_STREX)
    function u32 (line 2079) | static u32 MEMOP_LDM_SEQUENCE(u32 adr, u32 count, u32 *regs)
    function u32 (line 2153) | static u32 MEMOP_LDM(u32 adr, u32 count, u32 *regs_ptr)
    function OPCDECODER_DECL (line 2350) | OPCDECODER_DECL(IR_LDM)
    function u32 (line 2489) | static u32 MEMOP_STM_SEQUENCE(u32 adr, u32 count, u32 *regs)
    function u32 (line 2563) | static u32 MEMOP_STM(u32 adr, u32 count, u32 *regs_ptr)
    function OPCDECODER_DECL (line 2688) | OPCDECODER_DECL(IR_STM)
    function u32 (line 2778) | static u32 MEMOP_SWP(u32 adr, u32 *Rd, u32 Rm)
    function u32 (line 2788) | static u32 MEMOP_SWPB(u32 adr, u32 *Rd, u32 Rm)
    function OPCDECODER_DECL (line 2833) | OPCDECODER_DECL(IR_SWP)
    function OPCDECODER_DECL (line 2843) | OPCDECODER_DECL(IR_B)
    function OPCDECODER_DECL (line 2852) | OPCDECODER_DECL(IR_BL)
    function OPCDECODER_DECL (line 2862) | OPCDECODER_DECL(IR_BX)
    function OPCDECODER_DECL (line 2874) | OPCDECODER_DECL(IR_BLX)
    function OPCDECODER_DECL (line 2887) | OPCDECODER_DECL(IR_SWI)
    function OPCDECODER_DECL (line 2944) | OPCDECODER_DECL(IR_MSR)
    function OPCDECODER_DECL (line 2997) | OPCDECODER_DECL(IR_MRS)
    function OPCDECODER_DECL (line 3007) | OPCDECODER_DECL(IR_MCR)
    function OPCDECODER_DECL (line 3023) | OPCDECODER_DECL(IR_MRC)
    function OPCDECODER_DECL (line 3061) | OPCDECODER_DECL(IR_CLZ)
    function OPCDECODER_DECL (line 3086) | OPCDECODER_DECL(IR_QADD)
    function OPCDECODER_DECL (line 3106) | OPCDECODER_DECL(IR_QSUB)
    function OPCDECODER_DECL (line 3126) | OPCDECODER_DECL(IR_QDADD)
    function OPCDECODER_DECL (line 3150) | OPCDECODER_DECL(IR_QDSUB)
    function OPCDECODER_DECL (line 3174) | OPCDECODER_DECL(IR_BLX_IMM)
    function OPCDECODER_DECL (line 3189) | OPCDECODER_DECL(IR_BKPT)
  function u32 (line 3205) | static u32 FASTCALL RunInterpreter(const Decoded &d)
  function InterpreterFallback (line 3232) | static void FASTCALL InterpreterFallback(const Decoded &d, char *&szCode...
  function ReleaseCodeBuffer (line 3252) | static void ReleaseCodeBuffer()
  function InitializeCodeBuffer (line 3258) | static void InitializeCodeBuffer()
  function ResetCodeBuffer (line 3270) | static void ResetCodeBuffer()
  function u8 (line 3282) | static u8* AllocCodeBuffer(size_t size)
  function ReleaseCBuffer (line 3304) | static void ReleaseCBuffer()
  function InitializeCBuffer (line 3314) | static void InitializeCBuffer()
  function ResetCBuffer (line 3499) | static void ResetCBuffer()
  type CompiledAddress (line 3505) | struct CompiledAddress
  function TccErrOutput (line 3515) | static void TccErrOutput(void *opaque, const char *msg)
  function TccGenerateNativeCode (line 3520) | static bool TccGenerateNativeCode()
  function IsAddressCompiled (line 3584) | static bool IsAddressCompiled(u32 Address, u32 ProcessID)
  function TccCompileCCode (line 3597) | static bool TccCompileCCode(const BlockInfo &blockinfo)
  function ResetTcc (line 3609) | static void ResetTcc()
  function TEMPLATE (line 3620) | TEMPLATE static u32 armcpu_compileblock(BlockInfo &blockinfo, bool runbl...
  function TEMPLATE (line 3729) | TEMPLATE u32 armcpu_compileCJIT()
  function cpuReserve (line 3759) | static void cpuReserve()
  function cpuShutdown (line 3771) | static void cpuShutdown()
  function cpuReset (line 3782) | static void cpuReset()
  function cpuSync (line 3790) | static void cpuSync()
  function TEMPLATE (line 3795) | TEMPLATE static void cpuClear(u32 Addr, u32 Size)
  function u32 (line 3800) | static u32 cpuGetCacheReserve()
  function cpuSetCacheReserve (line 3805) | static void cpuSetCacheReserve(u32 reserveInMegs)

FILE: app/src/main/jni/desmume/src/ArmCJit.h
  type u32 (line 25) | typedef u32 (* ArmOpCompiled)();

FILE: app/src/main/jni/desmume/src/ArmLJit.cpp
  type ArmLJit (line 56) | namespace ArmLJit
    type LocalRegType (line 61) | enum LocalRegType
    function FORCEINLINE (line 69) | FORCEINLINE u32 LOCALREG_INIT()
    function FORCEINLINE (line 80) | FORCEINLINE jit_gpr_t LOCALREG(u32 i)
    function FORCEINLINE (line 85) | FORCEINLINE LocalRegType LOCALREGTYPE(u32 i)
    function FORCEINLINE (line 93) | FORCEINLINE RegisterMap::GuestRegId REGID(u32 i)
    class RegisterMapImp (line 98) | class RegisterMapImp : public RegisterMap
    function u32 (line 432) | static u32 MEMOP_LDR(u32 adr, u32 *dstreg)
    function u32 (line 460) | static u32 MEMOP_LDRB(u32 adr, u32 *dstreg)
    function u32 (line 485) | static u32 MEMOP_LDRH(u32 adr, u32 *dstreg)
    function u32 (line 510) | static u32 MEMOP_LDRSH(u32 adr, u32 *dstreg)
    function u32 (line 535) | static u32 MEMOP_LDRSB(u32 adr, u32 *dstreg)
    function u32 (line 560) | static u32 MEMOP_STRB(u32 adr, u32 data)
    function u32 (line 585) | static u32 MEMOP_STR(u32 adr, u32 data)
    function u32 (line 610) | static u32 MEMOP_STRH(u32 adr, u32 data)
    type ARMCPU_PSR (line 676) | enum ARMCPU_PSR
    function UnpackPSR (line 689) | void FASTCALL UnpackPSR(ARMCPU_PSR flg, u32 in, u32 out)
    function UnpackCPSR (line 748) | void FASTCALL UnpackCPSR(RegisterMap &regMap, ARMCPU_PSR flg, u32 out)
    function PackCPSR (line 758) | void FASTCALL PackCPSR(RegisterMap &regMap, ARMCPU_PSR flg, u32 in)
    function PackCPSRImm (line 822) | void FASTCALL PackCPSRImm(RegisterMap &regMap, ARMCPU_PSR flg, u32 in)
    type ShiftOut (line 885) | struct ShiftOut
      method ShiftOut (line 892) | ShiftOut()
      method CleanShiftOp (line 900) | void CleanShiftOp(RegisterMap &regMap)
      method CleanCflg (line 906) | void CleanCflg(RegisterMap &regMap)
      method Clean (line 912) | void Clean(RegisterMap &regMap)
    function ShiftOut (line 919) | ShiftOut FASTCALL IRShiftOpGenerate(const Decoded &d, RegisterMap &reg...
      method ShiftOut (line 892) | ShiftOut()
      method CleanShiftOp (line 900) | void CleanShiftOp(RegisterMap &regMap)
      method CleanCflg (line 906) | void CleanCflg(RegisterMap &regMap)
      method Clean (line 912) | void Clean(RegisterMap &regMap)
    function DataProcessLoadCPSRGenerate (line 1596) | void FASTCALL DataProcessLoadCPSRGenerate(const Decoded &d, RegisterMa...
    function LDM_S_LoadCPSRGenerate (line 1670) | void FASTCALL LDM_S_LoadCPSRGenerate(const Decoded &d, RegisterMap &re...
    function R15ModifiedGenerate (line 1677) | void FASTCALL R15ModifiedGenerate(const Decoded &d, RegisterMap &regMap)
    function MUL_Mxx_END (line 1690) | void FASTCALL MUL_Mxx_END(const Decoded &d, RegisterMap &regMap, u32 b...
    function MUL_Mxx_END_Imm (line 1721) | void FASTCALL MUL_Mxx_END_Imm(const Decoded &d, RegisterMap &regMap, u...
    function Fallback2Interpreter (line 1759) | void FASTCALL Fallback2Interpreter(const Decoded &d, RegisterMap &regMap)
    function CheckReschedule (line 1825) | void FASTCALL CheckReschedule(const Decoded &d, RegisterMap &regMap)
    function OPDECODER_DECL (line 1832) | OPDECODER_DECL(IR_UND)
    function OPDECODER_DECL (line 1865) | OPDECODER_DECL(IR_NOP)
    function OPDECODER_DECL (line 1869) | OPDECODER_DECL(IR_DUMMY)
    function OPDECODER_DECL (line 1873) | OPDECODER_DECL(IR_T32P1)
    function OPDECODER_DECL (line 1906) | OPDECODER_DECL(IR_T32P2)
    function OPDECODER_DECL (line 1939) | OPDECODER_DECL(IR_MOV)
    function OPDECODER_DECL (line 2025) | OPDECODER_DECL(IR_MVN)
    function OPDECODER_DECL (line 2111) | OPDECODER_DECL(IR_AND)
    function OPDECODER_DECL (line 2223) | OPDECODER_DECL(IR_TST)
    function OPDECODER_DECL (line 2327) | OPDECODER_DECL(IR_EOR)
    function OPDECODER_DECL (line 2439) | OPDECODER_DECL(IR_TEQ)
    function OPDECODER_DECL (line 2543) | OPDECODER_DECL(IR_ORR)
    function OPDECODER_DECL (line 2655) | OPDECODER_DECL(IR_BIC)
    function OPDECODER_DECL (line 2770) | OPDECODER_DECL(IR_ADD)
    function OPDECODER_DECL (line 2994) | OPDECODER_DECL(IR_ADC)
    function OPDECODER_DECL (line 3200) | OPDECODER_DECL(IR_SUB)
    function OPDECODER_DECL (line 3424) | OPDECODER_DECL(IR_SBC)
    function OPDECODER_DECL (line 3609) | OPDECODER_DECL(IR_RSB)
    function OPDECODER_DECL (line 3816) | OPDECODER_DECL(IR_RSC)
    function OPDECODER_DECL (line 4002) | OPDECODER_DECL(IR_CMP)
    function OPDECODER_DECL (line 4180) | OPDECODER_DECL(IR_CMN)
    function OPDECODER_DECL (line 4376) | OPDECODER_DECL(IR_MUL)
    function OPDECODER_DECL (line 4467) | OPDECODER_DECL(IR_MLA)
    function OPDECODER_DECL (line 4576) | OPDECODER_DECL(IR_UMULL)
    function OPDECODER_DECL (line 4674) | OPDECODER_DECL(IR_UMLAL)
    function OPDECODER_DECL (line 4746) | OPDECODER_DECL(IR_SMULL)
    function OPDECODER_DECL (line 4859) | OPDECODER_DECL(IR_SMLAL)
    function OPDECODER_DECL (line 4944) | OPDECODER_DECL(IR_SMULxy)
    function OPDECODER_DECL (line 5016) | OPDECODER_DECL(IR_SMLAxy)
    function OPDECODER_DECL (line 5114) | OPDECODER_DECL(IR_SMULWy)
    function OPDECODER_DECL (line 5126) | OPDECODER_DECL(IR_SMLAWy)
    function OPDECODER_DECL (line 5140) | OPDECODER_DECL(IR_SMLALxy)
    function OPDECODER_DECL (line 5153) | OPDECODER_DECL(IR_LDR)
    function OPDECODER_DECL (line 5423) | OPDECODER_DECL(IR_STR)
    function OPDECODER_DECL (line 5644) | OPDECODER_DECL(IR_LDRx)
    function OPDECODER_DECL (line 5881) | OPDECODER_DECL(IR_STRx)
    function OPDECODER_DECL (line 6075) | OPDECODER_DECL(IR_LDRD)
    function OPDECODER_DECL (line 6089) | OPDECODER_DECL(IR_STRD)
    function OPDECODER_DECL (line 6103) | OPDECODER_DECL(IR_LDREX)
    function OPDECODER_DECL (line 6114) | OPDECODER_DECL(IR_STREX)
    function OPDECODER_DECL (line 6125) | OPDECODER_DECL(IR_LDM)
    function OPDECODER_DECL (line 6152) | OPDECODER_DECL(IR_STM)
    function OPDECODER_DECL (line 6174) | OPDECODER_DECL(IR_SWP)
    function OPDECODER_DECL (line 6186) | OPDECODER_DECL(IR_B)
    function OPDECODER_DECL (line 6195) | OPDECODER_DECL(IR_BL)
    function OPDECODER_DECL (line 6205) | OPDECODER_DECL(IR_BX)
    function OPDECODER_DECL (line 6236) | OPDECODER_DECL(IR_BLX)
    function OPDECODER_DECL (line 6269) | OPDECODER_DECL(IR_SWI)
    function OPDECODER_DECL (line 6409) | OPDECODER_DECL(IR_MSR)
    function OPDECODER_DECL (line 6658) | OPDECODER_DECL(IR_MRS)
    function OPDECODER_DECL (line 6673) | OPDECODER_DECL(IR_MCR)
    function OPDECODER_DECL (line 6724) | OPDECODER_DECL(IR_MRC)
    function OPDECODER_DECL (line 6785) | OPDECODER_DECL(IR_CLZ)
    function OPDECODER_DECL (line 6827) | OPDECODER_DECL(IR_QADD)
    function OPDECODER_DECL (line 6851) | OPDECODER_DECL(IR_QSUB)
    function OPDECODER_DECL (line 6875) | OPDECODER_DECL(IR_QDADD)
    function OPDECODER_DECL (line 6899) | OPDECODER_DECL(IR_QDSUB)
    function OPDECODER_DECL (line 6923) | OPDECODER_DECL(IR_BLX_IMM)
    function OPDECODER_DECL (line 6938) | OPDECODER_DECL(IR_BKPT)
  function ReleaseCodeBuffer (line 6959) | static void ReleaseCodeBuffer()
  function InitializeCodeBuffer (line 6965) | static void InitializeCodeBuffer()
  function ResetCodeBuffer (line 6977) | static void ResetCodeBuffer()
  function u8 (line 6989) | static u8* AllocCodeBuffer(size_t size)
  function FreeCodeBuffer (line 7005) | static void FreeCodeBuffer(size_t size)
  function AddExecuteCycles (line 7018) | static void AddExecuteCycles(u32 ConstCycles)
  function EndSubBlock (line 7036) | static void EndSubBlock(u32 state_start, u32 state_end1, u32 state_end2,...
  function TEMPLATE (line 7067) | TEMPLATE static void armcpu_compileblock(BlockInfo &blockinfo, bool runb...
  function TEMPLATE (line 7333) | TEMPLATE static ArmOpCompiled armcpu_compile()
  function cpuReserve (line 7362) | static void cpuReserve()
  function cpuShutdown (line 7383) | static void cpuShutdown()
  function cpuReset (line 7396) | static void cpuReset()
  function cpuSync (line 7403) | static void cpuSync()
  function TEMPLATE (line 7408) | TEMPLATE static void cpuClear(u32 Addr, u32 Size)
  function TEMPLATE (line 7427) | TEMPLATE static u32 cpuExecuteLJIT()
  function u32 (line 7436) | static u32 cpuGetCacheReserve()
  function cpuSetCacheReserve (line 7441) | static void cpuSetCacheReserve(u32 reserveInMegs)

FILE: app/src/main/jni/desmume/src/ArmThreadedInterpreter.h
  type MethodCommon (line 30) | struct MethodCommon
  type MethodCommon (line 32) | struct MethodCommon
  type Block (line 40) | struct Block
  function u32 (line 50) | u32 cpuExecute()

FILE: app/src/main/jni/desmume/src/CpuBase.h
  type CpuBase (line 25) | struct CpuBase

FILE: app/src/main/jni/desmume/src/FIFO.cpp
  function IPC_FIFOinit (line 32) | void IPC_FIFOinit(u8 proc)
  function IPC_FIFOsend (line 38) | void IPC_FIFOsend(u8 proc, u32 val)
  function u32 (line 78) | u32 IPC_FIFOrecv(u8 proc)
  function IPC_FIFOcnt (line 123) | void IPC_FIFOcnt(u8 proc, u16 val)
  function GFX_PIPEclear (line 167) | void GFX_PIPEclear()
  function GFX_FIFOclear (line 175) | void GFX_FIFOclear()
  function GXF_FIFO_handleEvents (line 183) | static void GXF_FIFO_handleEvents()
  function FORCEINLINE (line 200) | static FORCEINLINE bool IsMatrixStackCommand(u8 cmd)
  function GFX_FIFOsend (line 205) | void GFX_FIFOsend(u8 cmd, u32 param)
  function BOOL (line 249) | BOOL GFX_PIPErecv(u8 *cmd, u32 *param)
  function GFX_FIFOcnt (line 279) | void GFX_FIFOcnt(u32 val)
  function DISP_FIFOinit (line 303) | void DISP_FIFOinit()
  function DISP_FIFOsend (line 308) | void DISP_FIFOsend(u32 val)
  function u32 (line 317) | u32 DISP_FIFOrecv()

FILE: app/src/main/jni/desmume/src/FIFO.h
  type IPC_FIFO (line 27) | typedef struct
  type GFX_FIFO (line 49) | typedef struct
  type GFX_PIPE (line 60) | typedef struct
  type DISP_FIFO (line 79) | typedef struct

FILE: app/src/main/jni/desmume/src/GPU.cpp
  function GPU_InitFadeColors (line 120) | static void GPU_InitFadeColors()
  function GPU (line 176) | GPU * GPU_Init(u8 l)
  function GPU_Reset (line 197) | void GPU_Reset(GPU *g, u8 l)
  function GPU_DeInit (line 236) | void GPU_DeInit(GPU * gpu)
  function GPU_resortBGs (line 242) | static void GPU_resortBGs(GPU *gpu)
  function FORCEINLINE (line 304) | static FORCEINLINE u16 _blend(u16 colA, u16 colB, GPU::TBlendTable* blen...
  function FORCEINLINE (line 313) | FORCEINLINE u16 GPU::blend(u16 colA, u16 colB)
  function GPU_setMasterBrightness (line 319) | void GPU_setMasterBrightness (GPU *gpu, u16 val)
  function SetupFinalPixelBlitter (line 330) | void SetupFinalPixelBlitter (GPU *gpu)
  function GPU_setVideoProp (line 342) | void GPU_setVideoProp(GPU * gpu, u32 p)
  function GPU_setBGProp (line 408) | void GPU_setBGProp(GPU * gpu, u16 num, u16 p)
  function GPU_remove (line 482) | void GPU_remove(GPU * gpu, u8 num)
  function GPU_addBack (line 487) | void GPU_addBack(GPU * gpu, u8 num)
  function FORCEINLINE (line 499) | FORCEINLINE u8 GPU::withinRect(u16 x) const
  function FORCEINLINE (line 509) | FORCEINLINE void GPU::renderline_checkWindows(u16 x, bool &draw, bool &e...
  function FORCEINLINE (line 566) | FORCEINLINE FASTCALL void GPU::_master_setFinal3dColor(int dstX, int srcX)
  function FORCEINLINE (line 630) | FORCEINLINE FASTCALL bool GPU::_master_setFinalBGColor(u16 &color, const...
  function FORCEINLINE (line 669) | static FORCEINLINE void _master_setFinalOBJColor(GPU *gpu, u8 *dst, u16 ...
  function FORCEINLINE (line 720) | FORCEINLINE void GPU::setFinalColorBG(u16 color, const u32 x)
  function FORCEINLINE (line 752) | FORCEINLINE void GPU::setFinalColor3d(int dstX, int srcX)
  function FORCEINLINE (line 767) | FORCEINLINE void setFinalColorSpr(GPU* gpu, u8 *dst, u16 color, u8 alpha...
  function FORCEINLINE (line 783) | FORCEINLINE void GPU::__setFinalColorBck(u16 color, const u32 x, const i...
  function FORCEINLINE (line 791) | FORCEINLINE void GPU::___setFinalColorBck(u16 color, const u32 x, const ...
  function mosaicSpriteLinePixel (line 828) | static void mosaicSpriteLinePixel(GPU * gpu, int x, u16 l, u8 * dst, u8 ...
  function FORCEINLINE (line 859) | FORCEINLINE static void mosaicSpriteLine(GPU * gpu, u16 l, u8 * dst, u8 ...
  function lineLarge8bpp (line 867) | void lineLarge8bpp(GPU * gpu)
  function INLINE (line 904) | INLINE void renderline_textBG(GPU * gpu, u16 XBG, u16 YBG, u16 LG)
  function FORCEINLINE (line 1044) | FORCEINLINE void rot_tiled_8bit_entry(GPU * gpu, const s32 auxX, const s...
  function FORCEINLINE (line 1059) | FORCEINLINE void rot_tiled_16bit_entry(GPU * gpu, const s32 auxX, const ...
  function FORCEINLINE (line 1073) | FORCEINLINE void rot_256_map(GPU * gpu, const s32 auxX, const s32 auxY, ...
  function FORCEINLINE (line 1084) | FORCEINLINE void rot_BMP_map(GPU * gpu, const s32 auxX, const s32 auxY, ...
  function FORCEINLINE (line 1094) | FORCEINLINE void rot_scale_op(GPU * gpu, const s32 X, const s32 Y, const...
  function FORCEINLINE (line 1148) | FORCEINLINE void apply_rot_fun(GPU * gpu, s32 X, s32 Y, s16 PA, s16 PB, ...
  function FORCEINLINE (line 1159) | FORCEINLINE void rotBG2(GPU * gpu, s32 X, s32 Y, s16 PA, s16 PB, s16 PC,...
  function FORCEINLINE (line 1167) | FORCEINLINE void extRotBG2(GPU * gpu, s32 X, s32 Y, s16 PA, s16 PB, s16 ...
  function lineNull (line 1210) | static void lineNull(GPU * gpu)
  function lineText (line 1215) | void lineText(GPU * gpu)
  function lineRot (line 1232) | void lineRot(GPU * gpu)
  function lineExtRot (line 1263) | void lineExtRot(GPU * gpu)
  function INLINE (line 1303) | INLINE void render_sprite_BMP (GPU * gpu, u8 spriteNum, u16 l, u8 * dst,...
  function INLINE (line 1323) | INLINE void render_sprite_256(GPU * gpu, u8 spriteNum, u16 l, u8 * dst, ...
  function INLINE (line 1348) | INLINE void render_sprite_16 (	GPU * gpu, u16 l, u8 * dst, u32 srcadr, u...
  function INLINE (line 1377) | INLINE void render_sprite_Win (GPU * gpu, u16 l, u8 * src,
  function FORCEINLINE (line 1401) | FORCEINLINE BOOL compute_sprite_vars(_OAM_ * spriteInfo, u16 l,
  function u32 (line 1459) | static u32 bmp_sprite_address(GPU* gpu, _OAM_ * spriteInfo, size sprSize...
  type _DISPCNT (line 1489) | struct _DISPCNT
  function Screen_Init (line 1853) | int Screen_Init(int coreid)
  function Screen_Reset (line 1869) | void Screen_Reset(void)
  function Screen_DeInit (line 1882) | void Screen_DeInit(void)
  function GPU_ChangeGraphicsCore (line 1899) | int GPU_ChangeGraphicsCore(int coreid)
  function GFXDummyInit (line 1953) | int GFXDummyInit()
  function GFXDummyDeInit (line 1958) | void GFXDummyDeInit()
  function GFXDummyResize (line 1962) | void GFXDummyResize(int width, int height, BOOL fullscreen)
  function GFXDummyOnScreenText (line 1966) | void GFXDummyOnScreenText(char *string, ...)
  function GPU_set_DISPCAPCNT (line 1975) | void GPU_set_DISPCAPCNT(u32 val)
  function GPU_RenderLine_layer (line 2023) | static void GPU_RenderLine_layer(NDS_Screen * screen, u16 l)
  function GPU_RenderLine_DispCapture (line 2192) | static void GPU_RenderLine_DispCapture(u16 l)
  function INLINE (line 2378) | static INLINE void GPU_RenderLine_MasterBrightness(NDS_Screen * screen, ...
  function FORCEINLINE (line 2446) | FORCEINLINE void GPU::setup_windows()
  function GPU_RenderLine (line 2531) | void GPU_RenderLine(NDS_Screen * screen, u16 l, bool skip)
  function gpu_savestate (line 2660) | void gpu_savestate(EMUFILE* os)
  function gpu_loadstate (line 2677) | bool gpu_loadstate(EMUFILE* is, int size)
  function u32 (line 2718) | u32 GPU::getAffineStart(int layer, int xy)
  function gpu_SetRotateScreen (line 2783) | void gpu_SetRotateScreen(u16 angle)

FILE: app/src/main/jni/desmume/src/GPU.h
  type _DISPCNT (line 44) | struct _DISPCNT
  type _DISPCNT (line 77) | struct _DISPCNT
  type DISPCNT (line 113) | typedef union
  type BlendFunc (line 121) | enum BlendFunc
  type _BGxCNT (line 135) | struct _BGxCNT
  type _BGxCNT (line 152) | struct _BGxCNT
  type BGxCNT (line 171) | typedef union
  type BGxOFS (line 181) | typedef struct {
  type BGxPARMS (line 190) | typedef struct {
  type WINxDIM (line 212) | typedef union {
  type WINxBIT (line 221) | typedef struct {
  type WINxBIT (line 231) | typedef struct {
  type WINxCNT (line 243) | typedef union {
  type WINxCNT (line 261) | typedef union {
  type MISCCNT (line 296) | typedef struct {
  type _DISP3DCNT (line 316) | struct _DISP3DCNT
  type DISP3DCNT (line 334) | typedef union
  type DISPCAPCNT (line 346) | struct DISPCAPCNT
  type REG_DISPx (line 371) | typedef struct _reg_dispx {
  type BOOL (line 387) | typedef BOOL (*fun_gl_Begin) (int screen);
  type _TILEENTRY (line 411) | struct _TILEENTRY
  type _TILEENTRY (line 419) | struct _TILEENTRY
  type TILEENTRY (line 427) | typedef union
  type _ROTOCOORD (line 433) | struct _ROTOCOORD
  type ROTOCOORD (line 439) | typedef union
  type _COLOR (line 453) | struct _COLOR { // abgr x555
  type _COLORx (line 466) | struct _COLORx { // abgr x555
  type COLOR (line 471) | typedef union
  type _COLOR32 (line 478) | struct _COLOR32 { // ARGB
  type COLOR32 (line 489) | typedef union
  type GPU_OBJ_MODE (line 505) | enum GPU_OBJ_MODE
  type _OAM_ (line 520) | struct _OAM_
  type OAM (line 565) | typedef struct
  type size (line 585) | typedef struct
  type itemsForPriority_t (line 601) | typedef struct
  type BGType (line 625) | enum BGType {
  type GPU (line 632) | struct GPU
  type MosaicColor (line 665) | struct MosaicColor {
  type MosaicLookup (line 747) | struct MosaicLookup {
  type SpriteRenderMode (line 782) | enum SpriteRenderMode {
  function spriteRender (line 789) | inline void spriteRender(u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * pr...
  function setBLDALPHA_EVA (line 809) | struct AffineInfo {
  function setBLDALPHA_EVB (line 833) | void setBLDALPHA_EVB(u8 val)
  function u32 (line 839) | u32 getHOFS(int bg) { return T1ReadWord(&dispx_st->dispx_BGxOFS[bg].BGxH...
  function u32 (line 840) | u32 getVOFS(int bg) { return T1ReadWord(&dispx_st->dispx_BGxOFS[bg].BGxV...
  type u8 (line 842) | typedef u8 TBlendTable[32][32];
  function updateBLDALPHA (line 845) | void updateBLDALPHA()
  function REG_DISPx_pack_test (line 853) | static void REG_DISPx_pack_test(GPU * gpu)
  function namespace (line 879) | namespace GPU_EXT
  type NDS_Screen (line 890) | typedef struct {
  type GraphicsInterface_struct (line 911) | struct GraphicsInterface_struct
  function GPU_setWIN0_H (line 941) | inline void GPU_setWIN0_H(GPU* gpu, u16 val) { gpu->WIN0H0 = val >> 8; g...
  function GPU_setWIN0_H0 (line 942) | inline void GPU_setWIN0_H0(GPU* gpu, u8 val) { gpu->WIN0H0 = val;  gpu->...
  function GPU_setWIN0_H1 (line 943) | inline void GPU_setWIN0_H1(GPU* gpu, u8 val) { gpu->WIN0H1 = val;  gpu->...
  function GPU_setWIN0_V (line 945) | inline void GPU_setWIN0_V(GPU* gpu, u16 val) { gpu->WIN0V0 = val >> 8; g...
  function GPU_setWIN0_V0 (line 946) | inline void GPU_setWIN0_V0(GPU* gpu, u8 val) { gpu->WIN0V0 = val; }
  function GPU_setWIN0_V1 (line 947) | inline void GPU_setWIN0_V1(GPU* gpu, u8 val) { gpu->WIN0V1 = val; }
  function GPU_setWIN1_H (line 949) | inline void GPU_setWIN1_H(GPU* gpu, u16 val) {gpu->WIN1H0 = val >> 8; gp...
  function GPU_setWIN1_H0 (line 950) | inline void GPU_setWIN1_H0(GPU* gpu, u8 val) { gpu->WIN1H0 = val;  gpu->...
  function GPU_setWIN1_H1 (line 951) | inline void GPU_setWIN1_H1(GPU* gpu, u8 val) { gpu->WIN1H1 = val;  gpu->...
  function GPU_setWIN1_V (line 953) | inline void GPU_setWIN1_V(GPU* gpu, u16 val) { gpu->WIN1V0 = val >> 8; g...
  function GPU_setWIN1_V0 (line 954) | inline void GPU_setWIN1_V0(GPU* gpu, u8 val) { gpu->WIN1V0 = val; }
  function GPU_setWIN1_V1 (line 955) | inline void GPU_setWIN1_V1(GPU* gpu, u8 val) { gpu->WIN1V1 = val; }
  function GPU_setWININ (line 957) | inline void GPU_setWININ(GPU* gpu, u16 val) {
  function GPU_setWININ0 (line 964) | inline void GPU_setWININ0(GPU* gpu, u8 val) { gpu->WININ0 = val&0x1F; gp...
  function GPU_setWININ1 (line 965) | inline void GPU_setWININ1(GPU* gpu, u8 val) { gpu->WININ1 = val&0x1F; gp...
  function GPU_setWINOUT16 (line 967) | inline void GPU_setWINOUT16(GPU* gpu, u16 val) {
  function GPU_setWINOUT (line 973) | inline void GPU_setWINOUT(GPU* gpu, u8 val) { gpu->WINOUT = val&0x1F; gp...
  function GPU_setWINOBJ (line 974) | inline void GPU_setWINOBJ(GPU* gpu, u8 val) { gpu->WINOBJ = val&0x1F; gp...

FILE: app/src/main/jni/desmume/src/GPU_osd.cpp
  function SetHudDummy (line 48) | static void SetHudDummy (HudCoordinates *hud)
  function IsHudDummy (line 54) | static bool IsHudDummy (HudCoordinates *hud)
  function T (line 60) | static T calcY(T y) // alters a GUI element y coordinate as necessary to...
  function EditHud (line 79) | void EditHud(s32 x, s32 y, HudStruct *hudstruct) {
  function HudClickRelease (line 121) | void HudClickRelease(HudStruct *hudstruct) {
  function joyFill (line 180) | static void joyFill(int n) {
  function joyEllipse (line 194) | static void joyEllipse(double ex, double ey, int xc, int yc, int x, int ...
  function joyRoundedRect (line 201) | static void joyRoundedRect(double x1, double y1, int x2, int y2, int alp...
  function drawPad (line 218) | static void drawPad(double x, double y, double ratio) {
  type TouchInfo (line 334) | struct TouchInfo{
  function TextualInputDisplay (line 343) | static void TextualInputDisplay() {
  function TouchDisplay (line 410) | static void TouchDisplay() {
  function DrawStateSlots (line 455) | static void DrawStateSlots(){
  function DrawEditableElementIndicators (line 498) | static void DrawEditableElementIndicators()
  function DrawHUD (line 515) | void DrawHUD()

FILE: app/src/main/jni/desmume/src/GPU_osd.h
  type HudCoordinates (line 34) | struct HudCoordinates{
  function resetTransient (line 44) | struct HudStruct
  function class (line 86) | class OSDCLASS
  function class (line 129) | class OSDCLASS {

FILE: app/src/main/jni/desmume/src/GPU_osd_stub.cpp
  function DrawHUD (line 30) | void DrawHUD() {}

FILE: app/src/main/jni/desmume/src/JitCommon.cpp
  type armcpu_t (line 128) | struct armcpu_t
  function u8 (line 338) | u8 RegisterMap::GetImm8(GuestRegId reg) const
  function u16 (line 362) | u16 RegisterMap::GetImm16(GuestRegId reg) const
  function u32 (line 386) | u32 RegisterMap::GetImm32(GuestRegId reg) const
  function u32 (line 434) | u32 RegisterMap::MapReg(GuestRegId reg, u32 mapflag)
  function u32 (line 493) | u32 RegisterMap::MappedReg(GuestRegId reg)
  function u32 (line 552) | u32 RegisterMap::GetCpuPtrReg()
  function u32 (line 557) | u32 RegisterMap::AllocTempReg(bool preserved)
  function u32 (line 766) | u32 RegisterMap::StoreState()
  function u32 (line 844) | u32 RegisterMap::CalcStates(u32 state_id, const std::vector<u32> &states)
  function u32 (line 1067) | u32 RegisterMap::FindFreeHostReg()
  function u32 (line 1085) | u32 RegisterMap::FindFirstHostReg()
  function u32 (line 1105) | u32 RegisterMap::AllocHostReg(bool preserved)
  function u32 (line 1191) | u32 RegisterMap::GenSwapData()
  function u32 (line 1196) | u32 RegisterMap::GenStateData()
  function JitLutInit (line 1203) | void JitLutInit()
  function JitLutDeInit (line 1219) | void JitLutDeInit()
  function JitLutReset (line 1223) | void JitLutReset()
  function FlushIcacheSection (line 1241) | void FlushIcacheSection(u8 *begin, u8 *end)

FILE: app/src/main/jni/desmume/src/JitCommon.h
  type JitLut (line 34) | struct JitLut
  type JitBlock (line 73) | struct JitBlock
  type ImmData (line 109) | struct ImmData
  type GuestRegState (line 167) | enum GuestRegState
  type ABIOp (line 203) | struct ABIOp

FILE: app/src/main/jni/desmume/src/MMU.cpp
  function u64 (line 56) | static u64 isqrt (u64 x) {
  function mmu_log_debug_ARM9 (line 107) | void mmu_log_debug_ARM9(u32 adr, const char *fmt, ...)
  function mmu_log_debug_ARM7 (line 133) | void mmu_log_debug_ARM7(u32 adr, const char *fmt, ...)
  type TVramBankInfo (line 310) | struct TVramBankInfo {
  function FORCEINLINE (line 340) | static FORCEINLINE u32 MMU_LCDmap(u32 addr, bool& unmapped, bool& restri...
  function MMU_vram_lcdc (line 499) | static inline void MMU_vram_lcdc(const int bank)
  function MMU_vram_arm9 (line 509) | static inline void MMU_vram_arm9(const int bank, const int offset)
  function u8 (line 518) | static inline u8* MMU_vram_physical(const int page)
  function MMU_VRAMmapRefreshBank (line 524) | static inline void MMU_VRAMmapRefreshBank(const int bank)
  function MMU_VRAM_unmap_all (line 770) | void MMU_VRAM_unmap_all()
  function MMU_VRAMmapControl (line 800) | static inline void MMU_VRAMmapControl(u8 block, u8 VRAMBankCnt)
  function MMU_Init (line 916) | void MMU_Init(void) {
  function MMU_DeInit (line 953) | void MMU_DeInit(void) {
  function MMU_Reset (line 966) | void MMU_Reset()
  function SetupMMU (line 1074) | void SetupMMU(bool debugConsole, bool dsi) {
  function MMU_setRom (line 1082) | void MMU_setRom(u8 * rom, u32 mask)
  function MMU_unsetRom (line 1087) | void MMU_unsetRom()
  function execsqrt (line 1092) | static void execsqrt() {
  function execdiv (line 1115) | static void execdiv() {
  function u16 (line 1188) | u16 DSI_TSC::write16(u16 val)
  function u16 (line 1213) | u16 DSI_TSC::read16()
  function MMU_writeToGCControl (line 1294) | void FASTCALL MMU_writeToGCControl(u32 val)
  function u32 (line 1384) | u32 MMU_readFromGC()
  function CalculateTouchPressure (line 1427) | static void CalculateTouchPressure(int pressurePercent, u16 &z1, u16& z2)
  function MMU_writeToSPIData (line 1463) | void FASTCALL MMU_writeToSPIData(u16 val)
  function validateIF_arm9 (line 1689) | static void validateIF_arm9()
  function REG_IF_WriteByte (line 1693) | static void REG_IF_WriteByte(u32 addr, u8 val)
  function REG_IF_WriteWord (line 1715) | static void REG_IF_WriteWord(u32 addr,u16 val)
  function REG_IF_WriteLong (line 1721) | static void REG_IF_WriteLong(u32 val)
  function u32 (line 1730) | u32 MMU_struct::gen_IF()
  function writereg_DISP3DCNT (line 1758) | static void writereg_DISP3DCNT(const int size, const u32 adr, const u32 ...
  function u32 (line 1792) | static u32 readreg_DISP3DCNT(const int size, const u32 adr)
  function u32 (line 1815) | static u32 readreg_POWCNT1(const int size, const u32 adr) {
  function writereg_POWCNT1 (line 1844) | static void writereg_POWCNT1(const int size, const u32 adr, const u32 va...
  function INLINE (line 1882) | static INLINE void MMU_IPCSync(u8 proc, u32 val)
  function INLINE (line 1918) | static INLINE u16 read_timer(int proc, int timerIndex)
  function INLINE (line 1950) | static INLINE void write_timer(int proc, int timerIndex, u16 val)
  function u32 (line 1995) | u32 TGXSTAT::read32()
  function u32 (line 2084) | u32 MMU_struct_new::read_dma(const int proc, const int size, const u32 _...
  function triggerDma (line 2383) | void triggerDma()
  function u32 (line 2438) | u32 DmaController::read32()
  function INLINE (line 2453) | static INLINE void write_auxspicnt(const int proc, const int size, const...
  function _MMU_ARM9_write08 (line 2479) | void FASTCALL _MMU_ARM9_write08(u32 adr, u8 val)
  function _MMU_ARM9_write16 (line 2759) | void FASTCALL _MMU_ARM9_write16(u32 adr, u16 val)
  function _MMU_ARM9_write32 (line 3215) | void FASTCALL _MMU_ARM9_write32(u32 adr, u32 val)
  function u8 (line 3652) | u8 FASTCALL _MMU_ARM9_read08(u32 adr)
  function u16 (line 3744) | u16 FASTCALL _MMU_ARM9_read16(u32 adr)
  function u32 (line 3855) | u32 FASTCALL _MMU_ARM9_read32(u32 adr)
  function _MMU_ARM7_write08 (line 3999) | void FASTCALL _MMU_ARM7_write08(u32 adr, u8 val)
  function _MMU_ARM7_write16 (line 4105) | void FASTCALL _MMU_ARM7_write16(u32 adr, u16 val)
  function _MMU_ARM7_write32 (line 4289) | void FASTCALL _MMU_ARM7_write32(u32 adr, u32 val)
  function u8 (line 4395) | u8 FASTCALL _MMU_ARM7_read08(u32 adr)
  function u16 (line 4465) | u16 FASTCALL _MMU_ARM7_read16(u32 adr)
  function u32 (line 4565) | u32 FASTCALL _MMU_ARM7_read32(u32 adr)
  function u32 (line 4649) | u32 FASTCALL MMU_read32(u32 proc, u32 adr)
  function u16 (line 4659) | u16 FASTCALL MMU_read16(u32 proc, u32 adr)
  function u8 (line 4669) | u8 FASTCALL MMU_read8(u32 proc, u32 adr)
  function MMU_write32 (line 4677) | void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val)
  function MMU_write16 (line 4687) | void FASTCALL MMU_write16(u32 proc, u32 adr, u16 val)
  function MMU_write8 (line 4697) | void FASTCALL MMU_write8(u32 proc, u32 adr, u8 val)
  function MMU_DumpMemBlock (line 4705) | void FASTCALL MMU_DumpMemBlock(u8 proc, u32 address, u32 size, u8 *buffer)
  function u16 (line 4724) | static u16 FASTCALL arm9_prefetch16( void *data, u32 adr) {
  function u32 (line 4728) | static u32 FASTCALL arm9_prefetch32( void *data, u32 adr) {
  function u8 (line 4732) | static u8 FASTCALL arm9_read8( void *data, u32 adr) {
  function u16 (line 4736) | static u16 FASTCALL arm9_read16( void *data, u32 adr) {
  function u32 (line 4740) | static u32 FASTCALL arm9_read32( void *data, u32 adr) {
  function arm9_write8 (line 4744) | static void FASTCALL arm9_write8(void *data, u32 adr, u8 val) {
  function arm9_write16 (line 4748) | static void FASTCALL arm9_write16(void *data, u32 adr, u16 val) {
  function arm9_write32 (line 4752) | static void FASTCALL arm9_write32(void *data, u32 adr, u32 val) {
  function u16 (line 4756) | static u16 FASTCALL arm7_prefetch16( void *data, u32 adr) {
  function u32 (line 4760) | static u32 FASTCALL arm7_prefetch32( void *data, u32 adr) {
  function u8 (line 4764) | static u8 FASTCALL arm7_read8( void *data, u32 adr) {
  function u16 (line 4768) | static u16 FASTCALL arm7_read16( void *data, u32 adr) {
  function u32 (line 4772) | static u32 FASTCALL arm7_read32( void *data, u32 adr) {
  function arm7_write8 (line 4776) | static void FASTCALL arm7_write8(void *data, u32 adr, u8 val) {
  function arm7_write16 (line 4780) | static void FASTCALL arm7_write16(void *data, u32 adr, u16 val) {
  function arm7_write32 (line 4784) | static void FASTCALL arm7_write32(void *data, u32 adr, u32 val) {
  type armcpu_memory_iface (line 4793) | struct armcpu_memory_iface
  type armcpu_memory_iface (line 4806) | struct armcpu_memory_iface
  type armcpu_memory_iface (line 4824) | struct armcpu_memory_iface

FILE: app/src/main/jni/desmume/src/MMU.h
  type u8 (line 44) | typedef const u8 TWaitState;
  type EDMAMode (line 47) | enum EDMAMode
  type EDMABitWidth (line 61) | enum EDMABitWidth
  type EDMASourceUpdate (line 67) | enum EDMASourceUpdate
  type EDMADestinationUpdate (line 75) | enum EDMADestinationUpdate
  function class (line 86) | class TRegister_32
  function TRegister_32 (line 118) | struct TGXSTAT : public TRegister_32
  function class (line 142) | class DivController
  function class (line 171) | class SqrtController
  function class (line 196) | class DmaController
  function class (line 261) | class AddressRegister : public TRegister_32 {
  function class (line 277) | class ControlRegister : public TRegister_32 {
  type ECardMode (line 299) | enum ECardMode
  type nds_dscard (line 306) | typedef struct
  type MMU_struct (line 326) | struct MMU_struct
  function class (line 439) | class DSI_TSC
  type MMU_struct_new (line 464) | struct MMU_struct_new
  type armcpu_memory_iface (line 483) | struct armcpu_memory_iface {
  type armcpu_memory_iface (line 529) | struct armcpu_memory_iface
  type armcpu_memory_iface (line 530) | struct armcpu_memory_iface
  type armcpu_memory_iface (line 531) | struct armcpu_memory_iface
  type VramConfiguration (line 550) | struct VramConfiguration {
  function FORCEINLINE (line 576) | FORCEINLINE void* MMU_gpu_map(u32 vram_addr)
  function FORCEINLINE (line 621) | FORCEINLINE void CheckMemoryDebugEvent(EDEBUG_EVENT event, const MMU_ACC...
  function FORCEINLINE (line 642) | FORCEINLINE u8 _MMU_read08(const int PROCNUM, const MMU_ACCESS_TYPE AT, ...
  function FORCEINLINE (line 671) | FORCEINLINE u16 _MMU_read16(const int PROCNUM, const MMU_ACCESS_TYPE AT,...
  function FORCEINLINE (line 713) | FORCEINLINE u32 _MMU_read32(const int PROCNUM, const MMU_ACCESS_TYPE AT,...
  function FORCEINLINE (line 772) | FORCEINLINE void _MMU_write08(const int PROCNUM, const MMU_ACCESS_TYPE A...
  function FORCEINLINE (line 814) | FORCEINLINE void _MMU_write16(const int PROCNUM, const MMU_ACCESS_TYPE A...
  function FORCEINLINE (line 856) | FORCEINLINE void _MMU_write32(const int PROCNUM, const MMU_ACCESS_TYPE A...
  function u8 (line 900) | u8* _MMU_read_getrawptr32(const u32 addr_s, const u32 addr_e)
  function u8 (line 957) | u8* _MMU_write_getrawptr32(const u32 addr_s, const u32 addr_e)
  function u8 (line 1017) | u8 _MMU_read08(u32 addr) { return _MMU_read08(PROCNUM, AT, addr); }
  function u16 (line 1020) | u16 _MMU_read16(u32 addr) { return _MMU_read16(PROCNUM, AT, addr); }
  function u32 (line 1023) | u32 _MMU_read32(u32 addr) { return _MMU_read32(PROCNUM, AT, addr); }
  function _MMU_write08 (line 1026) | void _MMU_write08(u32 addr, u8 val) { _MMU_write08(PROCNUM, AT, addr, va...
  function _MMU_write16 (line 1029) | void _MMU_write16(u32 addr, u16 val) { _MMU_write16(PROCNUM, AT, addr, v...
  function _MMU_write32 (line 1032) | void _MMU_write32(u32 addr, u32 val) { _MMU_write32(PROCNUM, AT, addr, v...
  function u8 (line 1034) | u8 _MMU_read08(u32 addr) { return _MMU_read08<PROCNUM, MMU_AT_DATA>(addr...
  function u16 (line 1035) | u16 _MMU_read16(u32 addr) { return _MMU_read16<PROCNUM, MMU_AT_DATA>(add...
  function u32 (line 1036) | u32 _MMU_read32(u32 addr) { return _MMU_read32<PROCNUM, MMU_AT_DATA>(add...
  function _MMU_write08 (line 1037) | void _MMU_write08(u32 addr, u8 val) { _MMU_write08<PROCNUM, MMU_AT_DATA>...
  function _MMU_write16 (line 1038) | void _MMU_write16(u32 addr, u16 val) { _MMU_write16<PROCNUM, MMU_AT_DATA...
  function _MMU_write32 (line 1039) | void _MMU_write32(u32 addr, u32 val) { _MMU_write32<PROCNUM, MMU_AT_DATA...

FILE: app/src/main/jni/desmume/src/MMU_timing.h
  function FORCEINLINE (line 42) | FORCEINLINE bool USE_TIMING() {
  type MMU_ACCESS_DIRECTION (line 47) | enum MMU_ACCESS_DIRECTION
  function Cached (line 61) | bool Cached(u32 addr)
  function Reset (line 70) | void Reset()
  function savestate (line 81) | void savestate(EMUFILE* os, int version)
  function loadstate (line 91) | bool loadstate(EMUFILE* is, int version)
  type CacheBlock (line 140) | struct CacheBlock
  function u32 (line 168) | u32 Fetch(u32 address)
  function Reset (line 199) | void Reset()
  function savestate (line 205) | void savestate(EMUFILE* os, int version)
  function loadstate (line 209) | bool loadstate(EMUFILE* is, int version)
  function u32 (line 370) | u32 FORCEINLINE fastu32max( const u32 a, const u32 b )

FILE: app/src/main/jni/desmume/src/NDSSystem.cpp
  type DLDI (line 87) | namespace DLDI
  function Desmume_InitOnce (line 92) | void Desmume_InitOnce()
  type armcpu_memory_iface (line 105) | struct armcpu_memory_iface
  type armcpu_ctrl_iface (line 106) | struct armcpu_ctrl_iface
  type armcpu_memory_iface (line 107) | struct armcpu_memory_iface
  type armcpu_ctrl_iface (line 108) | struct armcpu_ctrl_iface
  function NDS_Init (line 110) | int NDS_Init( void)
  function NDS_DeInit (line 163) | void NDS_DeInit(void) {
  function BOOL (line 202) | BOOL NDS_SetROM(u8 * rom, u32 mask)
  function NDS_header (line 209) | NDS_header * NDS_getROMHeader(void)
  function debug (line 261) | void debug()
  function u32 (line 302) | static u32 ones32(u32 x)
  function RomBanner (line 336) | const RomBanner& GameInfo::getRomBanner()
  function loadrom (line 435) | static void loadrom(std::string fname) {
  function rom_init_path (line 471) | static int rom_init_path(const char *filename, const char *logicalFilename)
  function rom_init_path (line 509) | static int rom_init_path(const char *filename, const char *logicalFilename)
  function NDS_LoadROM (line 571) | int NDS_LoadROM(const char *filename, const char *logicalFilename)
  function NDS_FreeROM (line 659) | void NDS_FreeROM(void)
  function u32 (line 674) | u32 NDS_ImportSaveSize(const char *filename)
  function NDS_ImportSave (line 695) | int NDS_ImportSave(const char *filename, u32 force_size)
  function NDS_ExportSave (line 710) | bool NDS_ExportSave(const char *filename)
  function WritePNGChunk (line 730) | static int WritePNGChunk(FILE *fp, uint32 size, const char *type, const ...
  function NDS_WritePNG (line 763) | int NDS_WritePNG(const char *fname)
  function NDS_WriteBMP (line 888) | int NDS_WriteBMP(const char *filename)
  function NDS_WriteBMP_32bppBuffer (line 941) | int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, con...
  function NDS_Sleep (line 982) | void NDS_Sleep() { nds.sleeping = TRUE; }
  function NDS_TriggerCardEjectIRQ (line 984) | void NDS_TriggerCardEjectIRQ()
  class FrameSkipper (line 990) | class FrameSkipper
    method RequestSkip (line 993) | void RequestSkip()
    method OmitSkip (line 997) | void OmitSkip(bool force, bool forceEvenIfCapturing=false)
    method Advance (line 1009) | void Advance()
    method FORCEINLINE (line 1046) | FORCEINLINE bool ShouldSkip2D()
    method FORCEINLINE (line 1050) | FORCEINLINE bool ShouldSkip3D()
    method FrameSkipper (line 1054) | FrameSkipper()
  function NDS_SkipNextFrame (line 1079) | void NDS_SkipNextFrame() {
  function NDS_OmitFrameSkip (line 1084) | void NDS_OmitFrameSkip(int force) {
  type ESI_DISPCNT (line 1091) | enum ESI_DISPCNT
  function FORCEINLINE (line 1117) | FORCEINLINE bool TSequenceItem::isTriggered()
  function FORCEINLINE (line 1122) | FORCEINLINE u64 TSequenceItem::next()
  function FORCEINLINE (line 1129) | FORCEINLINE bool TSequenceItem_GXFIFO::isTriggered()
  function FORCEINLINE (line 1134) | FORCEINLINE void TSequenceItem_GXFIFO::exec()
  function FORCEINLINE (line 1143) | FORCEINLINE u64 TSequenceItem_GXFIFO::next()
  type TSequenceItem_Timer (line 1149) | struct TSequenceItem_Timer : public TSequenceItem
    method FORCEINLINE (line 1151) | FORCEINLINE bool isTriggered()
    method FORCEINLINE (line 1156) | FORCEINLINE void schedule()
    method FORCEINLINE (line 1161) | FORCEINLINE u64 next()
    method FORCEINLINE (line 1166) | FORCEINLINE void exec()
  type TSequenceItem_DMA (line 1215) | struct TSequenceItem_DMA : public TSequenceItem
    method FORCEINLINE (line 1219) | FORCEINLINE bool isTriggered()
    method FORCEINLINE (line 1224) | FORCEINLINE bool isEnabled() {
    method FORCEINLINE (line 1228) | FORCEINLINE u64 next()
    method FORCEINLINE (line 1233) | FORCEINLINE void exec()
  type TSequenceItem_divider (line 1275) | struct TSequenceItem_divider : public TSequenceItem
    method FORCEINLINE (line 1277) | FORCEINLINE bool isTriggered()
    method isEnabled (line 1282) | bool isEnabled() { return MMU.divRunning!=0; }
    method FORCEINLINE (line 1284) | FORCEINLINE u64 next()
    method exec (line 1289) | void exec()
  type TSequenceItem_sqrtunit (line 1307) | struct TSequenceItem_sqrtunit : public TSequenceItem
    method FORCEINLINE (line 1309) | FORCEINLINE bool isTriggered()
    method isEnabled (line 1314) | bool isEnabled() { return MMU.sqrtRunning!=0; }
    method FORCEINLINE (line 1316) | FORCEINLINE u64 next()
    method FORCEINLINE (line 1321) | FORCEINLINE void exec()
  type Sequencer (line 1331) | struct Sequencer
    method save (line 1354) | void save(EMUFILE* os)
    method load (line 1372) | bool load(EMUFILE* is, int version)
  function NDS_RescheduleTimers (line 1408) | void NDS_RescheduleTimers()
  function NDS_RescheduleDMA (line 1418) | void NDS_RescheduleDMA()
  function initSchedule (line 1425) | static void initSchedule()
  function execHardware_hblank (line 1488) | static void execHardware_hblank()
  function execHardware_hstart_vblankEnd (line 1539) | static void execHardware_hstart_vblankEnd()
  function execHardware_hstart_vblankStart (line 1552) | static void execHardware_hstart_vblankStart()
  function u16 (line 1576) | static u16 execHardware_gen_vmatch_goal()
  function execHardware_hstart_vcount_irq (line 1583) | static void execHardware_hstart_vcount_irq()
  function execHardware_hstart_vcount (line 1598) | static void execHardware_hstart_vcount()
  function execHardware_hdraw (line 1625) | static void execHardware_hdraw()
  function execHardware_hstart_irq (line 1632) | static void execHardware_hstart_irq()
  function execHardware_hstart (line 1649) | static void execHardware_hstart()
  function FORCEINLINE (line 1728) | FORCEINLINE u32 _fast_min32(u32 a, u32 b, u32 c, u32 d)
  function FORCEINLINE (line 1733) | FORCEINLINE u64 _fast_min(u64 a, u64 b)
  function u64 (line 1758) | u64 Sequencer::findNext()
  function nds_savestate (line 1855) | void nds_savestate(EMUFILE* os)
  function nds_loadstate (line 1868) | bool nds_loadstate(EMUFILE* is, int size)
  function FORCEINLINE (line 1893) | FORCEINLINE void arm9log()
  function FORCEINLINE (line 1929) | FORCEINLINE void arm7log()
  function FORCEINLINE (line 1968) | static FORCEINLINE s32 fasts32min(const s32& a, const s32& b)
  function FORCEINLINE (line 1975) | static FORCEINLINE s32 minarmtime(const s32& arm9, const s32& arm7)
  function armInnerLoop (line 1990) | static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
  function NDS_debug_break (line 2037) | void NDS_debug_break()
  function NDS_debug_continue (line 2045) | void NDS_debug_continue()
  function NDS_debug_step (line 2050) | void NDS_debug_step()
  function IF_DEVELOPER (line 2068) | IF_DEVELOPER(for(int i=0;i<32;i++) DEBUG_statistics.sequencerExecutionCo...
  function execHardware_interrupts (line 2244) | void execHardware_interrupts()
  function PrepareBiosARM7 (line 2252) | static void PrepareBiosARM7()
  function PrepareBiosARM9 (line 2307) | static void PrepareBiosARM9()
  function JumbleMemory (line 2417) | static void JumbleMemory()
  function PrepareLogfiles (line 2450) | static void PrepareLogfiles()
  function NDS_Reset (line 2472) | void NDS_Reset()
  function MakeInputDisplayString (line 2757) | static std::string MakeInputDisplayString(u16 pad, const std::string* Bu...
  function MakeInputDisplayString (line 2768) | static std::string MakeInputDisplayString(u16 pad, u16 padExt) {
  function ClearAutoHold (line 2783) | void ClearAutoHold(void) {
  function u16 (line 2793) | u16 NDS_getADCTouchPosX(int scrX_lsl4)
  function u16 (line 2800) | u16 NDS_getADCTouchPosY(int scrY_lsl4)
  function UserInput (line 2813) | const UserInput& NDS_getRawUserInput()
  function UserInput (line 2817) | UserInput& NDS_getProcessingUserInput()
  function NDS_isProcessingUserInput (line 2822) | bool NDS_isProcessingUserInput()
  function UserInput (line 2826) | const UserInput& NDS_getFinalUserInput()
  function saveUserInput (line 2832) | static void saveUserInput(EMUFILE* os, UserInput& input)
  function loadUserInput (line 2840) | static bool loadUserInput(EMUFILE* is, UserInput& input, int version)
  function resetUserInput (line 2849) | static void resetUserInput(UserInput& input)
  function saveUserInput (line 2854) | static void saveUserInput(EMUFILE* os)
  function loadUserInput (line 2862) | static bool loadUserInput(EMUFILE* is, int version)
  function resetUserInput (line 2872) | static void resetUserInput()
  function gotInputRequest (line 2878) | static inline void gotInputRequest()
  function NDS_setPad (line 2885) | void NDS_setPad(bool R,bool L,bool D,bool U,bool T,bool S,bool B,bool A,...
  function NDS_setTouchPos (line 2904) | void NDS_setTouchPos(u16 x, u16 y)
  function NDS_releaseTouch (line 2923) | void NDS_releaseTouch(void)
  function NDS_setMic (line 2930) | void NDS_setMic(bool pressed)
  function NDS_beginProcessingInput (line 2940) | void NDS_beginProcessingInput()
  function NDS_endProcessingInput (line 2949) | void NDS_endProcessingInput()
  function NDS_applyFinalInput (line 2968) | static void NDS_applyFinalInput()
  function NDS_suspendProcessingInput (line 3097) | void NDS_suspendProcessingInput(bool suspend)
  function emu_halt (line 3121) | void emu_halt() {
  function ValidateSlot2Access (line 3146) | bool ValidateSlot2Access(u32 procnum, u32 demandSRAMSpeed, u32 demand1st...

FILE: app/src/main/jni/desmume/src/NDSSystem.h
  type NDS_header (line 98) | struct NDS_header
  type ENSATA_HANDSHAKE (line 157) | enum ENSATA_HANDSHAKE
  type NDS_CONSOLE_TYPE (line 166) | enum NDS_CONSOLE_TYPE
  function Is_DebugConsole (line 174) | struct NDSSystem
  type NDS_fw_touchscreen_cal (line 246) | struct NDS_fw_touchscreen_cal {
  type NDS_fw_config_data (line 257) | struct NDS_fw_config_data
  type armcpu_memory_iface (line 280) | struct armcpu_memory_iface
  type armcpu_ctrl_iface (line 281) | struct armcpu_ctrl_iface
  type armcpu_memory_iface (line 282) | struct armcpu_memory_iface
  type armcpu_ctrl_iface (line 283) | struct armcpu_ctrl_iface
  type RomBanner (line 295) | struct RomBanner
  function class (line 322) | class GameInfo
  type TSCalInfo (line 404) | typedef struct TSCalInfo
  function buttonstruct (line 427) | struct UserButtons : buttonstruct<bool>
  type UserTouch (line 430) | struct UserTouch
  type UserMicrophone (line 436) | struct UserMicrophone
  type UserInput (line 440) | struct UserInput
  function INLINE (line 513) | static INLINE void NDS_swapScreen(void)
  type _Wifi (line 611) | struct _Wifi {
  type MicMode (line 616) | enum MicMode
  type _ShowGpu (line 638) | struct _ShowGpu {
  type _Hud (line 646) | struct _Hud {

FILE: app/src/main/jni/desmume/src/OGLES2Render.cpp
  function BEGINGL (line 51) | static bool BEGINGL()
  function ENDGL (line 58) | static void ENDGL()
  function OGLES2LoadEntryPoints (line 80) | static void OGLES2LoadEntryPoints()
  function FORCEINLINE (line 220) | FORCEINLINE u32 RGBA8888_32_To_RGBA6665_32Rev(const u32 srcPix)
  function FORCEINLINE (line 230) | FORCEINLINE u32 RGBA8888_32Rev_To_RGBA6665_32Rev(const u32 srcPix)
  type GLCaps (line 246) | struct GLCaps {
    method GLCaps (line 248) | GLCaps() {
  function _xglEnable (line 254) | static void _xglEnable(GLenum cap) {
  function _xglDisable (line 262) | static void _xglDisable(GLenum cap) {
  function IsVersionSupported (line 278) | bool IsVersionSupported(unsigned int checkVersionMajor, unsigned int che...
  function texDeleteCallback (line 291) | static void texDeleteCallback(TexCacheItem *item)
  function OGLInit (line 296) | static char OGLInit(void)
  function OGLReset (line 388) | static void OGLReset()
  function OGLClose (line 398) | static void OGLClose()
  function OGLRender (line 411) | static void OGLRender()
  function OGLVramReconfigureSignal (line 421) | static void OGLVramReconfigureSignal()
  function OGLRenderFinish (line 431) | static void OGLRenderFinish()
  function Render3DError (line 605) | Render3DError OpenGLES2Renderer::InitExtensions()
  function Render3DError (line 665) | Render3DError OpenGLES2Renderer::CreateVBOs()
  function Render3DError (line 693) | Render3DError OpenGLES2Renderer::LoadShaderPrograms(std::string *outVert...
  function Render3DError (line 704) | Render3DError OpenGLES2Renderer::SetupShaderIO()
  function Render3DError (line 715) | Render3DError OpenGLES2Renderer::CreateShaders(const std::string *vertex...
  function Render3DError (line 822) | Render3DError OpenGLES2Renderer::CreateVAOs()
  function Render3DError (line 858) | Render3DError OpenGLES2Renderer::CreateFBOs()
  function Render3DError (line 909) | Render3DError OpenGLES2Renderer::InitFinalRenderStates(const std::set<st...
  function Render3DError (line 937) | Render3DError OpenGLES2Renderer::InitTextures()
  function Render3DError (line 944) | Render3DError OpenGLES2Renderer::InitTables()
  function Render3DError (line 959) | Render3DError OpenGLES2Renderer::CreateToonTable()
  function Render3DError (line 979) | Render3DError OpenGLES2Renderer::DestroyToonTable()
  function Render3DError (line 989) | Render3DError OpenGLES2Renderer::UploadToonTable(const GLuint *toonTable...
  function Render3DError (line 999) | Render3DError OpenGLES2Renderer::CreateClearImage()
  function Render3DError (line 1028) | Render3DError OpenGLES2Renderer::DestroyClearImage()
  function Render3DError (line 1041) | Render3DError OpenGLES2Renderer::UploadClearImage(const GLushort *clearI...
  function Render3DError (line 1082) | Render3DError OpenGLES2Renderer::ExpandFreeTextures()
  function Render3DError (line 1096) | Render3DError OpenGLES2Renderer::SetupVertices(const VERTLIST *vertList,...
  function Render3DError (line 1135) | Render3DError OpenGLES2Renderer::EnableVertexAttributes(const VERTLIST *...
  function Render3DError (line 1165) | Render3DError OpenGLES2Renderer::DisableVertexAttributes()
  function Render3DError (line 1184) | Render3DError OpenGLES2Renderer::SelectRenderingFramebuffer()
  function Render3DError (line 1194) | Render3DError OpenGLES2Renderer::ReadBackPixels()
  function Render3DError (line 1203) | Render3DError OpenGLES2Renderer::DeleteTexture(const TexCacheItem *item)
  function Render3DError (line 1214) | Render3DError OpenGLES2Renderer::BeginRender(const GFX3D_State *renderSt...
  function Render3DError (line 1240) | Render3DError OpenGLES2Renderer::PreRender(const GFX3D_State *renderStat...
  function Render3DError (line 1251) | Render3DError OpenGLES2Renderer::DoRender(const GFX3D_State *renderState...
  function Render3DError (line 1315) | Render3DError OpenGLES2Renderer::PostRender()
  function Render3DError (line 1322) | Render3DError OpenGLES2Renderer::EndRender(const u64 frameCount)
  function Render3DError (line 1332) | Render3DError OpenGLES2Renderer::UpdateClearImage(const u16 *__restrict ...
  function Render3DError (line 1389) | Render3DError OpenGLES2Renderer::UpdateToonTable(const u16 *toonTableBuf...
  function Render3DError (line 1407) | Render3DError OpenGLES2Renderer::ClearUsingImage() const
  function Render3DError (line 1434) | Render3DError OpenGLES2Renderer::ClearUsingValues(const u8 r, const u8 g...
  function Render3DError (line 1469) | Render3DError OpenGLES2Renderer::SetupPolygon(const POLY *thePoly)
  function Render3DError (line 1583) | Render3DError OpenGLES2Renderer::SetupTexture(const POLY *thePoly, bool ...
  function Render3DError (line 1640) | Render3DError OpenGLES2Renderer::SetupViewport(const POLY *thePoly)
  function Render3DError (line 1649) | Render3DError OpenGLES2Renderer::Reset()
  function Render3DError (line 1685) | Render3DError OpenGLES2Renderer::RenderFinish()

FILE: app/src/main/jni/desmume/src/OGLES2Render.h
  type OGLVertexAttributeID (line 53) | enum OGLVertexAttributeID
  type OGLTextureUnitID (line 60) | enum OGLTextureUnitID
  type OGLErrorCode (line 67) | enum OGLErrorCode
  type OGLESRenderRef (line 86) | struct OGLESRenderRef
  type GFX3D_State (line 133) | struct GFX3D_State
  type VERTLIST (line 134) | struct VERTLIST
  type POLYLIST (line 135) | struct POLYLIST
  type INDEXLIST (line 136) | struct INDEXLIST
  type POLY (line 137) | struct POLY
  function class (line 165) | class OpenGLESRenderer : public Render3D
  function class (line 256) | class OpenGLES2Renderer : public OpenGLESRenderer

FILE: app/src/main/jni/desmume/src/OGLRender.cpp
  function BEGINGL (line 54) | static bool BEGINGL()
  function ENDGL (line 61) | static void ENDGL()
  function OGLLoadEntryPoints_Legacy (line 152) | static void OGLLoadEntryPoints_Legacy()
  function FORCEINLINE (line 350) | FORCEINLINE u32 BGRA8888_32_To_RGBA6665_32(const u32 srcPix)
  function FORCEINLINE (line 360) | FORCEINLINE u32 BGRA8888_32Rev_To_RGBA6665_32Rev(const u32 srcPix)
  type GLCaps (line 375) | struct GLCaps {
    method GLCaps (line 377) | GLCaps() {
  function _xglEnable (line 383) | static void _xglEnable(GLenum cap) {
  function _xglDisable (line 391) | static void _xglDisable(GLenum cap) {
  function IsVersionSupported (line 407) | bool IsVersionSupported(unsigned int checkVersionMajor, unsigned int che...
  function OGLGetDriverVersion (line 421) | static void OGLGetDriverVersion(const char *oglVersionString,
  function texDeleteCallback (line 485) | static void texDeleteCallback(TexCacheItem *item)
  function OGLInit (line 491) | static char OGLInit(void)
  function OGLReset (line 634) | static void OGLReset()
  function OGLClose (line 644) | static void OGLClose()
  function OGLRender (line 657) | static void OGLRender()
  function OGLVramReconfigureSignal (line 667) | static void OGLVramReconfigureSignal()
  function OGLRenderFinish (line 677) | static void OGLRenderFinish()
  function Render3DError (line 884) | Render3DError OpenGLRenderer_1_2::InitExtensions()
  function Render3DError (line 1025) | Render3DError OpenGLRenderer_1_2::CreateVBOs()
  function Render3DError (line 1060) | Render3DError OpenGLRenderer_1_2::CreatePBOs()
  function Render3DError (line 1087) | Render3DError OpenGLRenderer_1_2::LoadShaderPrograms(std::string *outVer...
  function Render3DError (line 1104) | Render3DError OpenGLRenderer_1_2::SetupShaderIO()
  function Render3DError (line 1115) | Render3DError OpenGLRenderer_1_2::CreateShaders(const std::string *verte...
  function Render3DError (line 1229) | Render3DError OpenGLRenderer_1_2::CreateVAOs()
  function Render3DError (line 1265) | Render3DError OpenGLRenderer_1_2::CreateFBOs()
  function Render3DError (line 1316) | Render3DError OpenGLRenderer_1_2::CreateMultisampledFBO()
  function Render3DError (line 1388) | Render3DError OpenGLRenderer_1_2::InitFinalRenderStates(const std::set<s...
  function Render3DError (line 1431) | Render3DError OpenGLRenderer_1_2::InitTextures()
  function Render3DError (line 1438) | Render3DError OpenGLRenderer_1_2::InitTables()
  function Render3DError (line 1456) | Render3DError OpenGLRenderer_1_2::CreateToonTable()
  function Render3DError (line 1476) | Render3DError OpenGLRenderer_1_2::DestroyToonTable()
  function Render3DError (line 1486) | Render3DError OpenGLRenderer_1_2::UploadToonTable(const GLushort *toonTa...
  function Render3DError (line 1496) | Render3DError OpenGLRenderer_1_2::CreateClearImage()
  function Render3DError (line 1525) | Render3DError OpenGLRenderer_1_2::DestroyClearImage()
  function Render3DError (line 1538) | Render3DError OpenGLRenderer_1_2::UploadClearImage(const GLushort *clear...
  function Render3DError (line 1577) | Render3DError OpenGLRenderer_1_2::ExpandFreeTextures()
  function Render3DError (line 1591) | Render3DError OpenGLRenderer_1_2::SetupVertices(const VERTLIST *vertList...
  function Render3DError (line 1668) | Render3DError OpenGLRenderer_1_2::EnableVertexAttributes(const VERTLIST ...
  function Render3DError (line 1735) | Render3DError OpenGLRenderer_1_2::DisableVertexAttributes()
  function Render3DError (line 1766) | Render3DError OpenGLRenderer_1_2::SelectRenderingFramebuffer()
  function Render3DError (line 1779) | Render3DError OpenGLRenderer_1_2::DownsampleFBO()
  function Render3DError (line 1796) | Render3DError OpenGLRenderer_1_2::ReadBackPixels()
  function Render3DError (line 1814) | Render3DError OpenGLRenderer_1_2::DeleteTexture(const TexCacheItem *item)
  function Render3DError (line 1825) | Render3DError OpenGLRenderer_1_2::BeginRender(const GFX3D_State *renderS...
  function Render3DError (line 1865) | Render3DError OpenGLRenderer_1_2::PreRender(const GFX3D_State *renderSta...
  function Render3DError (line 1882) | Render3DError OpenGLRenderer_1_2::DoRender(const GFX3D_State *renderStat...
  function Render3DError (line 1945) | Render3DError OpenGLRenderer_1_2::PostRender()
  function Render3DError (line 1952) | Render3DError OpenGLRenderer_1_2::EndRender(const u64 frameCount)
  function Render3DError (line 1962) | Render3DError OpenGLRenderer_1_2::UpdateClearImage(const u16 *__restrict...
  function Render3DError (line 2019) | Render3DError OpenGLRenderer_1_2::UpdateToonTable(const u16 *toonTableBu...
  function Render3DError (line 2031) | Render3DError OpenGLRenderer_1_2::ClearUsingImage() const
  function Render3DError (line 2064) | Render3DError OpenGLRenderer_1_2::ClearUsingValues(const u8 r, const u8 ...
  function Render3DError (line 2099) | Render3DError OpenGLRenderer_1_2::SetupPolygon(const POLY *thePoly)
  function Render3DError (line 2227) | Render3DError OpenGLRenderer_1_2::SetupTexture(const POLY *thePoly, bool...
  function Render3DError (line 2307) | Render3DError OpenGLRenderer_1_2::SetupViewport(const POLY *thePoly)
  function Render3DError (line 2316) | Render3DError OpenGLRenderer_1_2::Reset()
  function Render3DError (line 2364) | Render3DError OpenGLRenderer_1_2::RenderFinish()
  function Render3DError (line 2402) | Render3DError OpenGLRenderer_1_3::CreateToonTable()
  function Render3DError (line 2422) | Render3DError OpenGLRenderer_1_3::DestroyToonTable()
  function Render3DError (line 2432) | Render3DError OpenGLRenderer_1_3::UploadToonTable(const GLushort *toonTa...
  function Render3DError (line 2442) | Render3DError OpenGLRenderer_1_3::CreateClearImage()
  function Render3DError (line 2471) | Render3DError OpenGLRenderer_1_3::DestroyClearImage()
  function Render3DError (line 2484) | Render3DError OpenGLRenderer_1_3::UploadClearImage(const GLushort *clear...
  function Render3DError (line 2501) | Render3DError OpenGLRenderer_1_4::InitFinalRenderStates(const std::set<s...
  function Render3DError (line 2544) | Render3DError OpenGLRenderer_1_5::CreateVBOs()
  function Render3DError (line 2579) | Render3DError OpenGLRenderer_1_5::CreatePBOs()
  function Render3DError (line 2608) | Render3DError OpenGLRenderer_1_5::CreateVAOs()
  function Render3DError (line 2631) | Render3DError OpenGLRenderer_1_5::EnableVertexAttributes(const VERTLIST ...
  function Render3DError (line 2681) | Render3DError OpenGLRenderer_1_5::DisableVertexAttributes()
  function Render3DError (line 2709) | Render3DError OpenGLRenderer_1_5::ReadBackPixels()
  function Render3DError (line 2727) | Render3DError OpenGLRenderer_1_5::RenderFinish()
  function Render3DError (line 2765) | Render3DError OpenGLRenderer_2_0::InitExtensions()
  function Render3DError (line 2886) | Render3DError OpenGLRenderer_2_0::InitFinalRenderStates(const std::set<s...
  function Render3DError (line 2909) | Render3DError OpenGLRenderer_2_0::SetupVertices(const VERTLIST *vertList...
  function Render3DError (line 2947) | Render3DError OpenGLRenderer_2_0::EnableVertexAttributes(const VERTLIST ...
  function Render3DError (line 2977) | Render3DError OpenGLRenderer_2_0::DisableVertexAttributes()
  function Render3DError (line 2996) | Render3DError OpenGLRenderer_2_0::BeginRender(const GFX3D_State *renderS...
  function Render3DError (line 3022) | Render3DError OpenGLRenderer_2_0::PreRender(const GFX3D_State *renderSta...
  function Render3DError (line 3033) | Render3DError OpenGLRenderer_2_0::SetupPolygon(const POLY *thePoly)
  function Render3DError (line 3146) | Render3DError OpenGLRenderer_2_0::SetupTexture(const POLY *thePoly, bool...
  function Render3DError (line 3201) | Render3DError OpenGLRenderer_2_1::ReadBackPixels()
  function Render3DError (line 3216) | Render3DError OpenGLRenderer_2_1::RenderFinish()

FILE: app/src/main/jni/desmume/src/OGLRender.h
  type OGLVertexAttributeID (line 265) | enum OGLVertexAttributeID
  type OGLTextureUnitID (line 272) | enum OGLTextureUnitID
  type OGLErrorCode (line 279) | enum OGLErrorCode
  type OGLRenderRef (line 298) | struct OGLRenderRef
  type GFX3D_State (line 353) | struct GFX3D_State
  type VERTLIST (line 354) | struct VERTLIST
  type POLYLIST (line 355) | struct POLYLIST
  type INDEXLIST (line 356) | struct INDEXLIST
  type POLY (line 357) | struct POLY
  function class (line 395) | class OpenGLRenderer : public Render3D
  function virtual (line 544) | virtual Render3DError ClearUsingImage() const;
  function class (line 573) | class OpenGLRenderer_1_4 : public OpenGLRenderer_1_3
  function class (line 579) | class OpenGLRenderer_1_5 : public OpenGLRenderer_1_4
  function class (line 598) | class OpenGLRenderer_2_0 : public OpenGLRenderer_1_5
  function class (line 615) | class OpenGLRenderer_2_1 : public OpenGLRenderer_2_0

FILE: app/src/main/jni/desmume/src/OGLRender_3_2.cpp
  function OGLLoadEntryPoints_3_2 (line 52) | void OGLLoadEntryPoints_3_2()
  function OGLCreateRenderer_3_2 (line 200) | void OGLCreateRenderer_3_2(OpenGLRenderer **rendererPtr)
  function Render3DError (line 218) | Render3DError OpenGLRenderer_3_2::InitExtensions()
  function Render3DError (line 291) | Render3DError OpenGLRenderer_3_2::CreateFBOs()
  function Render3DError (line 380) | Render3DError OpenGLRenderer_3_2::CreateMultisampledFBO()
  function Render3DError (line 450) | Render3DError OpenGLRenderer_3_2::CreateVAOs()
  function Render3DError (line 486) | Render3DError OpenGLRenderer_3_2::LoadShaderPrograms(std::string *outVer...
  function Render3DError (line 494) | Render3DError OpenGLRenderer_3_2::SetupShaderIO()
  function Render3DError (line 518) | Render3DError OpenGLRenderer_3_2::EnableVertexAttributes(const VERTLIST ...
  function Render3DError (line 529) | Render3DError OpenGLRenderer_3_2::DisableVertexAttributes()
  function Render3DError (line 535) | Render3DError OpenGLRenderer_3_2::SelectRenderingFramebuffer()
  function Render3DError (line 551) | Render3DError OpenGLRenderer_3_2::DownsampleFBO()
  function Render3DError (line 568) | Render3DError OpenGLRenderer_3_2::ClearUsingImage() const

FILE: app/src/main/jni/desmume/src/OGLRender_3_2.h
  function class (line 60) | class OpenGLRenderer_3_2 : public OpenGLRenderer_2_1

FILE: app/src/main/jni/desmume/src/ROMReader.cpp
  function ROMReader_struct (line 34) | ROMReader_struct * ROMReaderInit(char ** filename)
  type _stat (line 73) | struct _stat
  type stat (line 75) | struct stat
  function STDROMReaderDeInit (line 86) | void STDROMReaderDeInit(void * file)
  function u32 (line 92) | u32 STDROMReaderSize(void * file)
  function STDROMReaderSeek (line 105) | int STDROMReaderSeek(void * file, int offset, int whence)
  function STDROMReaderRead (line 111) | int STDROMReaderRead(void * file, void * buffer, u32 size)
  function GZIPROMReaderDeInit (line 140) | void GZIPROMReaderDeInit(void * file)
  function u32 (line 145) | u32 GZIPROMReaderSize(void * file)
  function GZIPROMReaderSeek (line 160) | int GZIPROMReaderSeek(void * file, int offset, int whence)
  function GZIPROMReaderRead (line 165) | int GZIPROMReaderRead(void * file, void * buffer, u32 size)
  function ZIPROMReaderDeInit (line 206) | void ZIPROMReaderDeInit(void * file)
  function u32 (line 211) | u32 ZIPROMReaderSize(void * file)
  function ZIPROMReaderSeek (line 222) | int ZIPROMReaderSeek(void * file, int offset, int whence)
  function ZIPROMReaderRead (line 227) | int ZIPROMReaderRead(void * file, void * buffer, u32 size)

FILE: app/src/main/jni/desmume/src/ROMReader.h
  type ROMReader_struct (line 31) | typedef struct

FILE: app/src/main/jni/desmume/src/SPU.cpp
  function s16 (line 44) | static inline s16 read16(u32 addr) { return (s16)_MMU_read16<ARMCPU_ARM7...
  function u8 (line 45) | static inline u8 read08(u32 addr) { return _MMU_read08<ARMCPU_ARM7,MMU_A...
  function s8 (line 46) | static inline s8 read_s8(u32 addr) { return (s8)_MMU_read08<ARMCPU_ARM7,...
  function FORCEINLINE (line 117) | static FORCEINLINE T MinMax(T val, T min, T max)
  function SPU_ChangeSoundCore (line 129) | int SPU_ChangeSoundCore(int coreid, int buffersize)
  function SoundInterface_struct (line 182) | SoundInterface_struct *SPU_SoundCore()
  function SPU_ReInit (line 187) | void SPU_ReInit()
  function SPU_Init (line 192) | int SPU_Init(int coreid, int buffersize)
  function SPU_Pause (line 223) | void SPU_Pause(int pause)
  function SPU_CloneUser (line 233) | void SPU_CloneUser()
  function SPU_SetSynchMode (line 242) | void SPU_SetSynchMode(int mode, int method)
  function SPU_ClearOutputBuffer (line 264) | void SPU_ClearOutputBuffer()
  function SPU_SetVolume (line 270) | void SPU_SetVolume(int volume)
  function SPU_Reset (line 278) | void SPU_Reset(void)
  function SPU_DeInit (line 338) | void SPU_DeInit(void)
  function FORCEINLINE (line 356) | static FORCEINLINE void adjust_channel_timer(channel_struct *chan)
  function u8 (line 449) | u8 SPU_ReadByte(u32 addr) {
  function u16 (line 453) | u16 SPU_ReadWord(u32 addr) {
  function u32 (line 457) | u32 SPU_ReadLong(u32 addr) {
  function u16 (line 462) | u16 SPU_struct::ReadWord(u32 addr)
  function u32 (line 467) | u32 SPU_struct::ReadLong(u32 addr)
  function u8 (line 472) | u8 SPU_struct::ReadByte(u32 addr)
  function s16 (line 579) | s16 SPUFifo::dequeue()
  function SPU_WriteByte (line 747) | void SPU_WriteByte(u32 addr, u8 val)
  function SPU_WriteWord (line 764) | void SPU_WriteWord(u32 addr, u16 val)
  function SPU_WriteLong (line 783) | void SPU_WriteLong(u32 addr, u32 val)
  function FORCEINLINE (line 795) | static FORCEINLINE s32 Interpolate(s32 a, s32 b, double ratio)
  function FORCEINLINE (line 825) | static FORCEINLINE void Fetch8BitData(channel_struct *chan, s32 *data)
  function FORCEINLINE (line 847) | static FORCEINLINE void Fetch16BitData(const channel_struct * const chan...
  function FORCEINLINE (line 871) | static FORCEINLINE void FetchADPCMData(channel_struct * const chan, s32 ...
  function FORCEINLINE (line 910) | static FORCEINLINE void FetchPSGData(channel_struct *chan, s32 *data)
  function FORCEINLINE (line 957) | static FORCEINLINE void MixL(SPU_struct* SPU, channel_struct *chan, s32 ...
  function FORCEINLINE (line 963) | static FORCEINLINE void MixR(SPU_struct* SPU, channel_struct *chan, s32 ...
  function FORCEINLINE (line 969) | static FORCEINLINE void MixLR(SPU_struct* SPU, channel_struct *chan, s32...
  function FORCEINLINE (line 978) | static FORCEINLINE void TestForLoop(SPU_struct *SPU, channel_struct *chan)
  function FORCEINLINE (line 1001) | static FORCEINLINE void TestForLoop2(SPU_struct *SPU, channel_struct *chan)
  function FORCEINLINE (line 1035) | FORCEINLINE static void SPU_Mix(SPU_struct* SPU, channel_struct *chan, s...
  function FORCEINLINE (line 1048) | FORCEINLINE static void ____SPU_ChanUpdate(SPU_struct* const SPU, channe...
  function FORCEINLINE (line 1074) | FORCEINLINE static void ___SPU_ChanUpdate(const bool actuallyMix, SPU_st...
  function FORCEINLINE (line 1087) | FORCEINLINE static void __SPU_ChanUpdate(const bool actuallyMix, SPU_str...
  function FORCEINLINE (line 1099) | FORCEINLINE static void _SPU_ChanUpdate(const bool actuallyMix, SPU_stru...
  function SPU_MixAudio_Advanced (line 1111) | static void SPU_MixAudio_Advanced(bool actuallyMix, SPU_struct *SPU, int...
  function SPU_MixAudio (line 1322) | static void SPU_MixAudio(bool actuallyMix, SPU_struct *SPU, int length)
  function SPU_Emulate_core (line 1391) | void SPU_Emulate_core()
  function SPU_Emulate_user (line 1427) | void SPU_Emulate_user(bool mix)
  function SPU_DefaultFetchSamples (line 1475) | void SPU_DefaultFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESyn...
  function SPU_DefaultPostProcessSamples (line 1483) | size_t SPU_DefaultPostProcessSamples(s16 *postProcessBuffer, size_t requ...
  function SNDDummyInit (line 1539) | int SNDDummyInit(int buffersize) { return 0; }
  function SNDDummyDeInit (line 1540) | void SNDDummyDeInit() {}
  function SNDDummyUpdateAudio (line 1541) | void SNDDummyUpdateAudio(s16 *buffer, u32 num_samples) { }
  function u32 (line 1542) | u32 SNDDummyGetAudioSpace() { return DESMUME_SAMPLE_RATE/60 + 5; }
  function SNDDummyMuteAudio (line 1543) | void SNDDummyMuteAudio() {}
  function SNDDummyUnMuteAudio (line 1544) | void SNDDummyUnMuteAudio() {}
  function SNDDummySetVolume (line 1545) | void SNDDummySetVolume(int volume) {}
  function SNDDummyClearBuffer (line 1546) | void SNDDummyClearBuffer() {}
  function SNDDummyFetchSamples (line 1547) | void SNDDummyFetchSamples(s16 *sampleBuffer, size_t sampleCount, ESynchM...
  function SNDDummyPostProcessSamples (line 1548) | size_t SNDDummyPostProcessSamples(s16 *postProcessBuffer, size_t request...
  function WAV_End (line 1644) | void WAV_End()
  function WAV_Begin (line 1649) | bool WAV_Begin(const char* fname, WAVMode mode)
  function WAV_IsRecording (line 1665) | bool WAV_IsRecording(WAVMode mode)
  function WAV_WavSoundUpdate (line 1672) | void WAV_WavSoundUpdate(void* soundData, int numSamples, WAVMode mode)
  function spu_savestate (line 1682) | void spu_savestate(EMUFILE* os)
  function spu_loadstate (line 1744) | bool spu_loadstate(EMUFILE* is, int size)

FILE: app/src/main/jni/desmume/src/SPU.h
  function FORCEINLINE (line 38) | FORCEINLINE u32 sputrunc(float f) { return u32floor(f); }
  function FORCEINLINE (line 39) | FORCEINLINE u32 sputrunc(double d) { return u32floor(d); }
  function FORCEINLINE (line 40) | FORCEINLINE s32 spumuldiv7(s32 val, u8 multiplier) {
  type SPUInterpolationMode (line 45) | enum SPUInterpolationMode
  type SoundInterface_struct (line 52) | struct SoundInterface_struct
  type channel_struct (line 72) | struct channel_struct
  function class (line 104) | class SPUFifo
  type LeftOutputMode (line 147) | enum LeftOutputMode
  type RightOutputMode (line 152) | enum RightOutputMode
  type Runtime (line 164) | struct Runtime {

FILE: app/src/main/jni/desmume/src/addons.cpp
  function BOOL (line 53) | BOOL addonsInit()
  function addonsClose (line 58) | void addonsClose()
  function addonsReset (line 63) | void addonsReset()
  function BOOL (line 68) | BOOL addonsChangePak(NDS_ADDON_TYPE type)

FILE: app/src/main/jni/desmume/src/addons.h
  type ADDONINTERFACE (line 25) | struct ADDONINTERFACE
  type NDS_ADDON_TYPE (line 56) | enum NDS_ADDON_TYPE
  type ADDON_CFLASH_MODE (line 70) | enum ADDON_CFLASH_MODE
  function CFlash_IsUsingPath (line 77) | inline bool CFlash_IsUsingPath() { return CFlash_Mode==ADDON_CFLASH_MODE...

FILE: app/src/main/jni/desmume/src/addons/slot1_none.cpp
  function slot1_info (line 22) | static void slot1_info(char *info) { strcpy(info, "Slot1 no-card emulati...
  function slot1_config (line 23) | static void slot1_config(void) {}
  function BOOL (line 25) | static BOOL slot1_init() { return (TRUE); }
  function slot1_reset (line 27) | static void slot1_reset() {}
  function slot1_close (line 29) | static void slot1_close() {}
  function slot1_write08 (line 32) | static void slot1_write08(u8 PROCNUM, u32 adr, u8 val) {}
  function slot1_write16 (line 33) | static void slot1_write16(u8 PROCNUM, u32 adr, u16 val) {}
  function slot1_write32 (line 34) | static void slot1_write32(u8 PROCNUM, u32 adr, u32 val) {}
  function u8 (line 36) | static u8 slot1_read08(u8 PROCNUM, u32 adr)
  function u16 (line 40) | static u16 slot1_read16(u8 PROCNUM, u32 adr)
  function u32 (line 44) | static u32 slot1_read32(u8 PROCNUM, u32 adr)

FILE: app/src/main/jni/desmume/src/addons/slot1_r4.cpp
  function init_r4_flash (line 31) | static void init_r4_flash()
  function info (line 44) | static void info(char *info) { strcpy(info, "Slot1 R4 Emulation"); }
  function config (line 45) | static void config(void) {}
  function BOOL (line 47) | static BOOL init()
  function reset (line 53) | static void reset() {
  function close (line 57) | static void close() {
  function write08 (line 62) | static void write08(u8 PROCNUM, u32 adr, u8 val) {}
  function write16 (line 63) | static void write16(u8 PROCNUM, u32 adr, u16 val) {}
  function write32_GCROMCTRL (line 65) | static void write32_GCROMCTRL(u32 val)
  function write32_GCDATAIN (line 88) | static void write32_GCDATAIN(u32 val)
  function write32 (line 146) | static void write32(u8 PROCNUM, u32 adr, u32 val)
  function u8 (line 159) | static u8 read08(u8 PROCNUM, u32 adr)
  function u16 (line 163) | static u16 read16(u8 PROCNUM, u32 adr)
  function u32 (line 169) | static u32 read32_GCDATAIN()
  function u32 (line 214) | static u32 read32(u8 PROCNUM, u32 adr)

FILE: app/src/main/jni/desmume/src/addons/slot1_retail.cpp
  function info (line 25) | static void info(char *info) { strcpy(info, "Slot1 Retail card emulation...
  function config (line 26) | static void config(void) {}
  function BOOL (line 28) | static BOOL init() { return (TRUE); }
  function reset (line 30) | static void reset() {}
  function close (line 32) | static void close() {}
  function write08 (line 35) | static void write08(u8 PROCNUM, u32 adr, u8 val) {}
  function write16 (line 36) | static void write16(u8 PROCNUM, u32 adr, u16 val) {}
  function write32_GCROMCTRL (line 38) | static void write32_GCROMCTRL(u8 PROCNUM, u32 val)
  function write32 (line 62) | static void write32(u8 PROCNUM, u32 adr, u32 val)
  function u8 (line 72) | static u8 read08(u8 PROCNUM, u32 adr)
  function u16 (line 76) | static u16 read16(u8 PROCNUM, u32 adr)
  function u32 (line 81) | static u32 read32_GCDATAIN(u8 PROCNUM)
  function u32 (line 144) | static u32 read32(u8 PROCNUM, u32 adr)

FILE: app/src/main/jni/desmume/src/addons/slot1_retail_nand.cpp
  function info (line 25) | static void info(char *info) { strcpy(info, "Slot1 Retail NAND card emul...
  function config (line 26) | static void config(void) {}
  function BOOL (line 28) | static BOOL init() { return (TRUE); }
  function reset (line 30) | static void reset() {}
  function close (line 32) | static void close() {}
  function write08 (line 35) | static void write08(u8 PROCNUM, u32 adr, u8 val) {}
  function write16 (line 36) | static void write16(u8 PROCNUM, u32 adr, u16 val) {}
  function write32_GCROMCTRL (line 38) | static void write32_GCROMCTRL(u8 PROCNUM, u32 val)
  function write32 (line 81) | static void write32(u8 PROCNUM, u32 adr, u32 val)
  function u8 (line 91) | static u8 read08(u8 PROCNUM, u32 adr)
  function u16 (line 95) | static u16 read16(u8 PROCNUM, u32 adr)
  function u32 (line 100) | static u32 read32_GCDATAIN(u8 PROCNUM)
  function u32 (line 174) | static u32 read32(u8 PROCNUM, u32 adr)

FILE: app/src/main/jni/desmume/src/addons/slot2_expMemory.cpp
  function BOOL (line 34) | static BOOL ExpMemory_init(void) { return (TRUE); }
  function ExpMemory_reset (line 35) | static void ExpMemory_reset(void)
  function ExpMemory_close (line 45) | static void ExpMemory_close(void)
  function ExpMemory_config (line 53) | static void ExpMemory_config(void) {}
  function ExpMemory_write08 (line 54) | static void ExpMemory_write08(u32 procnum, u32 adr, u8 val)
  function ExpMemory_write16 (line 64) | static void ExpMemory_write16(u32 procnum, u32 adr, u16 val)
  function ExpMemory_write32 (line 74) | static void ExpMemory_write32(u32 procnum, u32 adr, u32 val)
  function u8 (line 93) | static u8 ExpMemory_read08(u32 procnum, u32 adr)
  function u16 (line 109) | static u16 ExpMemory_read16(u32 procnum, u32 adr)
  function u32 (line 127) | static u32 ExpMemory_read32(u32 procnum, u32 adr)
  function ExpMemory_info (line 142) | static void ExpMemory_info(char *info) { strcpy(info, "Memory Expansion ...

FILE: app/src/main/jni/desmume/src/addons/slot2_gbagame.cpp
  function gbaWriteFlash (line 49) | static void gbaWriteFlash(u32 adr, u8 val)
  function u8 (line 183) | static u8 gbaReadFlash(u32 adr)
  function u8 (line 218) | static u8 getSaveTypeGBA(const u8 *data, const u32 size)
  function BOOL (line 268) | static BOOL GBAgame_init(void)
  function GBAgame_reset (line 273) | static void GBAgame_reset(void)
  function GBAgame_close (line 353) | static void GBAgame_close(void)
  function GBAgame_config (line 368) | static void GBAgame_config(void) {}
  function GBAgame_write08 (line 370) | static void GBAgame_write08(u32 procnum, u32 adr, u8 val)
  function GBAgame_write16 (line 388) | static void GBAgame_write16(u32 procnum, u32 adr, u16 val)
  function GBAgame_write32 (line 393) | static void GBAgame_write32(u32 procnum, u32 adr, u32 val)
  function u8 (line 398) | static u8   GBAgame_read08(u32 procnum, u32 adr)
  function u16 (line 426) | static u16  GBAgame_read16(u32 procnum, u32 adr)
  function u32 (line 441) | static u32  GBAgame_read32(u32 procnum, u32 adr)
  function GBAgame_info (line 456) | static void GBAgame_info(char *info)

FILE: app/src/main/jni/desmume/src/addons/slot2_guitarGrip.cpp
  function BOOL (line 25) | static BOOL guitarGrip_init(void) { return (TRUE); }
  function guitarGrip_reset (line 26) | static void guitarGrip_reset(void)
  function guitarGrip_close (line 31) | static void guitarGrip_close(void) {}
  function guitarGrip_config (line 32) | static void guitarGrip_config(void) {}
  function guitarGrip_write08 (line 33) | static void guitarGrip_write08(u32 procnum, u32 adr, u8 val) {}
  function guitarGrip_write16 (line 34) | static void guitarGrip_write16(u32 procnum, u32 adr, u16 val) {}
  function guitarGrip_write32 (line 35) | static void guitarGrip_write32(u32 procnum, u32 adr, u32 val) {}
  function u8 (line 36) | static u8   guitarGrip_read08(u32 procnum, u32 adr)
  function u16 (line 43) | static u16  guitarGrip_read16(u32 procnum, u32 adr)
  function u32 (line 48) | static u32  guitarGrip_read32(u32 procnum, u32 adr)
  function guitarGrip_info (line 53) | static void guitarGrip_info(char *info) { strcpy(info, "Guitar Grip for ...
  function guitarGrip_setKey (line 55) | void guitarGrip_setKey(bool green, bool red, bool yellow, bool blue)

FILE: app/src/main/jni/desmume/src/addons/slot2_mpcf.cpp
  type EListCallbackArg (line 73) | enum EListCallbackArg {
  function BOOL (line 77) | static BOOL cflash_init()
  function cflash_read (line 142) | static unsigned int cflash_read(unsigned int address)
  function cflash_write (line 178) | static void cflash_write(unsigned int address,unsigned int data)
  function cflash_close (line 260) | static void cflash_close( void)
  function BOOL (line 269) | static BOOL init(void)
  function reset (line 274) | static void reset(void)
  function close (line 280) | static void close(void)
  function config (line 285) | static void config(void)
  function write08 (line 289) | static void write08(u32 procnum, u32 adr, u8 val)
  function write16 (line 294) | static void write16(u32 procnum, u32 adr, u16 val)
  function write32 (line 299) | static void write32(u32 procnum, u32 adr, u32 val)
  function u8 (line 304) | static u8 read08(u32 procnum, u32 adr)
  function u16 (line 309) | static u16 read16(u32 procnum, u32 adr)
  function u32 (line 314) | static u32 read32(u32 procnum, u32 adr)
  function info (line 319) | static void info(char *info)

FILE: app/src/main/jni/desmume/src/addons/slot2_none.cpp
  function BOOL (line 24) | static BOOL None_init(void) { return (TRUE); }
  function None_reset (line 25) | static void None_reset(void) {}
  function None_close (line 26) | static void None_close(void) {}
  function None_config (line 27) | static void None_config(void) {}
  function None_write08 (line 28) | static void None_write08(u32 procnum, u32 adr, u8 val) {}
  function None_write16 (line 29) | static void None_write16(u32 procnum, u32 adr, u16 val) {}
  function None_write32 (line 30) | static void None_write32(u32 procnum, u32 adr, u32 val) {}
  function u8 (line 31) | static u8   None_read08(u32 procnum, u32 adr){ return (0xFF); }
  function u16 (line 32) | static u16  None_read16(u32 procnum, u32 adr){ return (0xFFFF); }
  function u32 (line 33) | static u32  None_read32(u32 procnum, u32 adr){ return (0xFFFFFFFF); }
  function None_info (line 34) | static void None_info(char *info) { strcpy(info, "Nothing in GBA slot"); }

FILE: app/src/main/jni/desmume/src/addons/slot2_paddle.cpp
  function BOOL (line 43) | static BOOL init(void) { return (TRUE); }
  function reset (line 44) | static void reset(void)
  function calibrate (line 48) | static void calibrate()
  function close (line 53) | static void close(void) {}
  function config (line 54) | static void config(void) {}
  function write08 (line 55) | static void write08(u32 procnum, u32 adr, u8 val)
  function write16 (line 60) | static void write16(u32 procnum, u32 adr, u16 val)
  function write32 (line 64) | static void write32(u32 procnum, u32 adr, u32 val)
  function Validate (line 70) | static bool Validate(u32 procnum, bool rom) {
  function u8 (line 76) | static u8 read08(u32 procnum, u32 adr)
  function u16 (line 98) | static u16 read16(u32 procnum, u32 adr)
  function u32 (line 114) | static u32 read32(u32 procnum, u32 adr)
  function info (line 130) | static void info(char *info) { strcpy(info, "Paddle"); }

FILE: app/src/main/jni/desmume/src/addons/slot2_piano.cpp
  function BOOL (line 22) | static BOOL piano_init(void) { return (TRUE); }
  function piano_reset (line 23) | static void piano_reset(void)
  function piano_close (line 29) | static void piano_close(void) {}
  function piano_config (line 30) | static void piano_config(void) {}
  function piano_write08 (line 31) | static void piano_write08(u32 procnum, u32 adr, u8 val)
  function piano_write16 (line 35) | static void piano_write16(u32 procnum, u32 adr, u16 val)
  function piano_write32 (line 39) | static void piano_write32(u32 procnum, u32 adr, u32 val)
  function u8 (line 44) | static u8 piano_read08(u32 procnum, u32 adr)
  function u16 (line 78) | static u16 piano_read16(u32 procnum, u32 adr)
  function u32 (line 87) | static u32 piano_read32(u32 procnum, u32 adr)
  function piano_info (line 92) | static void piano_info(char *info) { strcpy(info, "Piano for EasyPiano"); }
  function piano_setKey (line 94) | void piano_setKey(bool c, bool cs, bool d, bool ds, bool e, bool f, bool...

FILE: app/src/main/jni/desmume/src/addons/slot2_rumblepak.cpp
  function BOOL (line 29) | static BOOL RumblePak_init(void) { return (TRUE); }
  function RumblePak_reset (line 31) | static void RumblePak_reset(void)
  function RumblePak_close (line 38) | static void RumblePak_close(void) {}
  function RumblePak_config (line 40) | static void RumblePak_config(void) {}
  function RumblePak_write08 (line 42) | static void RumblePak_write08(u32 procnum, u32 adr, u8 val)
  function RumblePak_write16 (line 46) | static void RumblePak_write16(u32 procnum, u32 adr, u16 val)
  function RumblePak_write32 (line 61) | static void RumblePak_write32(u32 procnum, u32 adr, u32 val)
  function u8 (line 65) | static u8   RumblePak_read08(u32 procnum, u32 adr)
  function u16 (line 71) | static u16  RumblePak_read16(u32 procnum, u32 adr)
  function u32 (line 76) | static u32  RumblePak_read32(u32 procnum, u32 adr)
  function RumblePak_info (line 81) | static void RumblePak_info(char *info)

FILE: app/src/main/jni/desmume/src/agg2d.h
  type Pre (line 101) | typedef Pre PixFormatPre;
  type SG (line 102) | typedef SG SpanGenerator;
  function class (line 105) | class Agg2DBase
  type ImageFilter (line 202) | enum ImageFilter
  type ImageResample (line 216) | enum ImageResample
  type FontCacheType (line 223) | enum FontCacheType
  type BlendMode (line 229) | enum BlendMode
  type Direction (line 260) | enum Direction
  type Image (line 273) | typedef Image<PixFormatSet> MyImage;
  type agg (line 274) | typedef agg::order_bgra ComponentOrder;
  type agg (line 276) | typedef agg::rgba8                                               ColorType;
  type agg (line 277) | typedef agg::blender_rgba<ColorType, ComponentOrder>             Blender;
  type agg (line 278) | typedef agg::comp_op_adaptor_rgba<ColorType, ComponentOrder>     Blender...
  type agg (line 279) | typedef agg::blender_rgba_pre<ColorType, ComponentOrder>         Blender...
  type agg (line 280) | typedef agg::comp_op_adaptor_rgba_pre<ColorType, ComponentOrder> Blender...
  type agg (line 287) | typedef agg::pixfmt_custom_blend_rgba<BlenderComp,agg::rendering_buffer>...
  type typename (line 290) | typedef typename PixFormatSet::PixFormatPre PixFormatPre;
  type agg (line 293) | typedef agg::pixfmt_custom_blend_rgba<BlenderCompPre,agg::rendering_buff...
  type agg (line 295) | typedef agg::renderer_base<PixFormat>        RendererBase;
  type agg (line 296) | typedef agg::renderer_base<PixFormatComp>    RendererBaseComp;
  type agg (line 297) | typedef agg::renderer_base<PixFormatPre>     RendererBasePre;
  type agg (line 298) | typedef agg::renderer_base<PixFormatCompPre> RendererBaseCompPre;
  type agg (line 300) | typedef agg::renderer_scanline_aa_solid<RendererBase>     RendererSolid;
  type agg (line 301) | typedef agg::renderer_scanline_aa_solid<RendererBaseComp> RendererSolidC...
  type agg (line 303) | typedef agg::span_allocator<ColorType> SpanAllocator;
  type agg (line 304) | typedef agg::pod_auto_array<ColorType, 256> GradientArray;
  type agg (line 306) | typedef agg::span_gradient<ColorType, agg::span_interpolator_linear<>, a...
  type agg (line 307) | typedef agg::span_gradient<ColorType, agg::span_interpolator_linear<>, a...
  type agg (line 311) | typedef agg::font_engine_freetype_int32       FontEngine;
  type agg (line 313) | typedef agg::font_engine_win32_tt_int32       FontEngine;
  type agg (line 316) | typedef agg::font_cache_manager<FontEngine>   FontCacheManager;
  type FontCacheManager (line 317) | typedef FontCacheManager::gray8_adaptor_type  FontRasterizer;
  type FontCacheManager (line 318) | typedef FontCacheManager::gray8_scanline_type FontScanline;
  type agg (line 321) | typedef agg::conv_curve<agg::path_storage>    ConvCurve;
  type agg (line 322) | typedef agg::conv_stroke<ConvCurve>           ConvStroke;
  type agg (line 323) | typedef agg::conv_transform<ConvCurve>        PathTransform;
  type agg (line 324) | typedef agg::conv_transform<ConvStroke>       StrokeTransform;
  type Gradient (line 325) | enum Gradient
  type ColorType (line 335) | typedef ColorType         Color;
  type State (line 339) | struct State
  function RectD (line 396) | RectD clipBox() const;
  function BlendMode (line 420) | BlendMode blendMode() const;
  function agg (line 436) | const agg::int8u* font() { return m_font; }
  function Color (line 446) | Color fillColor() const;
  function AGG2D_IMAGE_TEMPLATE (line 620) | AGG2D_IMAGE_TEMPLATE void transformImage(const TIMAGE& img,
  function AGG2D_IMAGE_TEMPLATE (line 634) | AGG2D_IMAGE_TEMPLATE void transformImage(const TIMAGE& img,
  function AGG2D_IMAGE_TEMPLATE (line 649) | AGG2D_IMAGE_TEMPLATE void transformImage(const TIMAGE& img, const double...
  function AGG2D_IMAGE_TEMPLATE (line 663) | AGG2D_IMAGE_TEMPLATE void transformImagePath(const TIMAGE& img,
  function AGG2D_IMAGE_TEMPLATE (line 672) | AGG2D_IMAGE_TEMPLATE void transformImagePath(const TIMAGE& img,
  function AGG2D_IMAGE_TEMPLATE (line 681) | AGG2D_IMAGE_TEMPLATE void transformImagePath(const TIMAGE& img,
  function AGG2D_IMAGE_TEMPLATE (line 689) | AGG2D_IMAGE_TEMPLATE  void transformImagePath(const TIMAGE& img, const d...
  function renderText (line 717) | void renderText(double dstX, double dstY, const std::string& str)
  function pi (line 790) | static double pi() { return agg::pi; }
  function deg2Rad (line 791) | static double deg2Rad(double v) { return v * agg::pi / 180.0; }
  function rad2Deg (line 792) | static double rad2Deg(double v) { return v * 180.0 / agg::pi; }
  function AGG2D_IMAGE_TEMPLATE (line 808) | AGG2D_IMAGE_TEMPLATE void renderImage(const TIMAGE& img, int x1, int y1,...

FILE: app/src/main/jni/desmume/src/aggdraw.cpp
  function Agg_init_fonts (line 113) | static void Agg_init_fonts()
  function Agg_init (line 139) | void Agg_init()

FILE: app/src/main/jni/desmume/src/aggdraw.h
  type agg (line 50) | typedef agg::rgba8 AggColor;
  function namespace (line 52) | namespace agg
  type my_blender_rgb555 (line 97) | struct my_blender_rgb555
  function pixel_type (line 119) | pixel_type make_pix(unsigned r, unsigned g, unsigned b)
  function AGG_INLINE (line 126) | static AGG_INLINE color_type make_color(pixel_type p)
  function m_source_image (line 149) | span_simple_blur_rgb24(const rendering_buffer& src) :
  function source_image (line 153) | void source_image(const rendering_buffer& src) { m_source_image = &src; }
  function prepare (line 157) | void prepare() {}
  function generate (line 160) | void generate(color_type* span, int x, int y, int len)
  type pixfmt_alpha_blend_rgb_packed (line 214) | typedef pixfmt_alpha_blend_rgb_packed<my_blender_rgb555_pre, rendering_b...
  type pixfmt_alpha_blend_rgb_packed (line 216) | typedef pixfmt_alpha_blend_rgb_packed<my_blender_rgb555, rendering_buffe...
  type PixFormatSetDeclaration (line 221) | typedef PixFormatSetDeclaration<agg::my_pixfmt_rgb555,agg::my_pixfmt_rgb...
  type PixFormatSetDeclaration (line 222) | typedef PixFormatSetDeclaration<agg::pixfmt_bgra32,agg::pixfmt_bgra32_pr...
  function class (line 223) | class AggDrawTarget
  function undirty (line 233) | void undirty() { empty = true; }
  function AGG2D_IMAGE_TEMPLATE (line 245) | AGG2D_IMAGE_TEMPLATE TIMAGE image() { return TIMAGE(buf()); }
  function virtual (line 252) | virtual Agg2DBase::RectD clipBox() const = 0;
  function virtual (line 428) | virtual double pi() { return agg::pi; }
  function virtual (line 429) | virtual double deg2Rad(double v) { return v * agg::pi / 180.0; }
  function virtual (line 430) | virtual double rad2Deg(double v) { return v * 180.0 / agg::pi; }
  type typename (line 439) | typedef typename pixfmt::color_type color_type;
  type Agg2D (line 441) | typedef Agg2D<PixFormatSet> BASE;
  function virtual (line 449) | virtual void clear() {
  function virtual (line 457) | virtual agg::rendering_buffer & buf() { dirty(); return BASE::buf(); }
  function typename (line 458) | typename BASE::MyImage image() { return BASE::MyImage(buf()); }
  function virtual (line 461) | virtual void  attach(unsigned char* buf, unsigned width, unsigned height...
  function virtual (line 464) | virtual void  clipBox(double x1, double y1, double x2, double y2) { BASE...
  function virtual (line 465) | virtual Agg2DBase::RectD clipBox() const {return BASE::clipBox();};
  function virtual (line 470) | virtual void  clearClipBox(AggColor c) {BASE::clearClipBox(c);}
  function virtual (line 479) | virtual double worldToScreen(double scalar) const {return BASE::worldToS...
  function virtual (line 480) | virtual double screenToWorld(double scalar) const {return BASE::screenTo...
  function virtual (line 482) | virtual bool   inBox(double worldX, double worldY) const {return BASE::i...
  function virtual (line 485) | virtual void blendMode(Agg2DBase::BlendMode m) {BASE::blendMode(m);}
  function virtual (line 486) | virtual Agg2DBase::BlendMode blendMode() {return BASE::blendMode();}
  function virtual (line 488) | virtual void imageBlendMode(Agg2DBase::BlendMode m) {BASE::imageBlendMod...
  function virtual (line 489) | virtual Agg2DBase::BlendMode imageBlendMode() {return BASE::imageBlendMo...
  function virtual (line 491) | virtual void imageBlendColor(AggColor c) {BASE::imageBlendColor(c);}
  function virtual (line 493) | virtual AggColor imageBlendColor() {return BASE::imageBlendColor();}
  function virtual (line 495) | virtual void masterAlpha(double a) {BASE::masterAlpha(a);}
  function virtual (line 496) | virtual double masterAlpha() {return BASE::masterAlpha();}
  function virtual (line 498) | virtual void antiAliasGamma(double g) {BASE::antiAliasGamma(g);}
  function virtual (line 499) | virtual double antiAliasGamma() {return BASE::antiAliasGamma();}
  function virtual (line 504) | virtual void fillColor(AggColor c) {BASE::fillColor(c);}
  function virtual (line 506) | virtual void noFill() {BASE::noFill();}
  function virtual (line 508) | virtual void lineColor(AggColor c) {BASE::lineColor(c);}
  function virtual (line 510) | virtual void noLine() {BASE::noLine();}
  function virtual (line 512) | virtual AggColor fillColor() {return BASE::fillColor();}
  function virtual (line 513) | virtual AggColor lineColor() {return BASE::lineColor();}
  function virtual (line 521) | virtual void fillRadialGradient(double x, double y, double r, AggColor c...
  function virtual (line 522) | virtual void lineRadialGradient(double x, double y, double r, AggColor c...
  function virtual (line 523) | virtual void fillRadialGradient(double x, double y, double r) {dirty(); ...
  function virtual (line 524) | virtual void lineRadialGradient(double x, double y, double r) {dirty(); ...
  function virtual (line 526) | virtual void lineWidth(double w) {BASE::lineWidth(w);}
  function virtual (line 527) | virtual double lineWidth() {return BASE::lineWidth();}
  function virtual (line 529) | virtual void lineCap(Agg2DBase::LineCap cap) {BASE::lineCap(cap);}
  function virtual (line 530) | virtual Agg2DBase::LineCap lineCap() {return BASE::lineCap();}
  function virtual (line 532) | virtual void lineJoin(Agg2DBase::LineJoin join) {BASE::lineJoin(join);}
  function virtual (line 533) | virtual Agg2DBase::LineJoin lineJoin() {return BASE::lineJoin();}
  function virtual (line 535) | virtual void fillEvenOdd(bool evenOddFlag) {BASE::fillEvenOdd(evenOddFla...
  function virtual (line 536) | virtual bool fillEvenOdd() {return BASE::fillEvenOdd();}
  function virtual (line 538) | virtual void transformImage(const Agg2DBase::Image<T_AGG_PF_RGBA>& img, ...
  function virtual (line 542) | virtual Agg2DBase::Transformations transformations() {return BASE::trans...
  function virtual (line 543) | virtual void transformations(const Agg2DBase::Transformations& tr) {BASE...
  function virtual (line 545) | virtual const Agg2DBase::Affine& affine() {return BASE::affine();}
  function virtual (line 548) | virtual void resetTransformations() {BASE::resetTransformations();}
  function virtual (line 549) | virtual void matrix(const Agg2DBase::Affine& tr) {BASE::matrix(tr);}
  function virtual (line 550) | virtual void matrix(const Agg2DBase::Transformations& tr) {BASE::matrix(...
  function virtual (line 551) | virtual void rotate(double angle) {BASE::rotate(angle);}
  function virtual (line 552) | virtual void rotate(double angle, double cx, double cy) {BASE::rotate(an...
  function virtual (line 553) | virtual void scale(double s) {BASE::scale(s);}
  function virtual (line 554) | virtual void scale(double sx, double sy) {BASE::scale(sx, sy);}
  function virtual (line 555) | virtual void skew(double sx, double sy) {BASE::skew(sx, sy);}
  function virtual (line 556) | virtual void translate(double x, double y) {BASE::translate(x, y);}
  function virtual (line 557) | virtual void parallelogram(double x1, double y1, double x2, double y2, c...
  function virtual (line 561) | virtual void line(double x1, double y1, double x2, double y2) {dirty(); ...
  function virtual (line 562) | virtual void triangle(double x1, double y1, double x2, double y2, double...
  function virtual (line 563) | virtual void rectangle(double x1, double y1, double x2, double y2) {dirt...
  function virtual (line 564) | virtual void roundedRect(double x1, double y1, double x2, double y2, dou...
  function virtual (line 565) | virtual void roundedRect(double x1, double y1, double x2, double y2, dou...
  function virtual (line 566) | virtual void roundedRect(double x1, double y1, double x2, double y2,doub...
  function virtual (line 567) | virtual void ellipse(double cx, double cy, double rx, double ry) {dirty(...
  function virtual (line 568) | virtual void arc(double cx, double cy, double rx, double ry, double star...
  function virtual (line 569) | virtual void star(double cx, double cy, double r1, double r2, double sta...
  function virtual (line 570) | virtual void curve(double x1, double y1, double x2, double y2, double x3...
  function virtual (line 571) | virtual void curve(double x1, double y1, double x2, double y2, double x3...
  function virtual (line 572) | virtual void polygon(double* xy, int numPoints) {dirty(); BASE::polygon(...
  function virtual (line 573) | virtual void polyline(double* xy, int numPoints) {dirty(); BASE::polylin...
  function virtual (line 575) | virtual void setFont(const std::string& name) { BASE::font(lookupFont(na...
  function virtual (line 576) | virtual void renderText(double dstX, double dstY, const std::string& str) {
  function virtual (line 585) | virtual void resetPath() {BASE::resetPath();}
  function virtual (line 587) | virtual void moveTo(double x, double y) {BASE::moveTo(x, y);}
  function virtual (line 588) | virtual void moveRel(double dx, double dy) {BASE::moveRel(dx,dy);}
  function virtual (line 590) | virtual void lineTo(double x, double y) {BASE::lineTo(x, y);}
  function virtual (line 591) | virtual void lineRel(double dx, double dy) {BASE::lineRel(dx, dy);}
  function virtual (line 593) | virtual void horLineTo(double x) {BASE::horLineTo(x);}
  function virtual (line 594) | virtual void horLineRel(double dx) {BASE::horLineRel(dx);}
  function virtual (line 596) | virtual void verLineTo(double y) {BASE::verLineTo(y);}
  function virtual (line 597) | virtual void verLineRel(double dy) {BASE::verLineRel(dy);}
  function virtual (line 599) | virtual void arcTo(double rx, double ry, double angle, bool largeArcFlag...
  function virtual (line 601) | virtual void arcRel(double rx, double ry, double angle, bool largeArcFla...
  function virtual (line 603) | virtual void quadricCurveTo(double xCtrl, double yCtrl, double xTo, doub...
  function virtual (line 604) | virtual void quadricCurveRel(double dxCtrl, double dyCtrl, double dxTo, ...
  function virtual (line 605) | virtual void quadricCurveTo(double xTo, double yTo) {BASE::quadricCurveT...
  function virtual (line 606) | virtual void quadricCurveRel(double dxTo, double dyTo) {BASE::quadricCur...
  function virtual (line 608) | virtual void cubicCurveTo(double xCtrl1, double yCtrl1, double xCtrl2, d...
  function virtual (line 609) | virtual void cubicCurveRel(double dxCtrl1, double dyCtrl1, double dxCtrl...
  function virtual (line 610) | virtual void cubicCurveTo(double xCtrl2, double yCtrl2, double xTo, doub...
  function virtual (line 611) | virtual void cubicCurveRel(double xCtrl2, double yCtrl2, double xTo, dou...
  function virtual (line 613) | virtual void addEllipse(double cx, double cy, double rx, double ry, Agg2...
  function virtual (line 614) | virtual void closePolygon() {BASE::closePolygon();}
  function virtual (line 620) | virtual void imageFilter(Agg2DBase::ImageFilter f) {BASE::imageFilter(f);}
  function virtual (line 621) | virtual Agg2DBase::ImageFilter imageFilter() {return BASE::imageFilter();}
  function virtual (line 623) | virtual void imageResample(Agg2DBase::ImageResample f) {BASE::imageResam...
  function virtual (line 624) | virtual Agg2DBase::ImageResample imageResample() {return BASE::imageResa...
  function virtual (line 627) | virtual double pi() { return agg::pi; }
  function virtual (line 628) | virtual double deg2Rad(double v) { return v * agg::pi / 180.0; }
  function virtual (line 629) | virtual double rad2Deg(double v) { return v * 180.0 / agg::pi; }
  type AggDrawTargetImplementation (line 633) | typedef AggDrawTargetImplementation<T_AGG_PF_RGB555> T_AGG_RGB555;
  type AggDrawTargetImplementation (line 634) | typedef AggDrawTargetImplementation<T_AGG_PF_RGBA> T_AGG_RGBA;
  function class (line 637) | class AggDraw
  type AggTarget (line 646) | enum AggTarget
  function class (line 654) | class AggDraw_Desmume : public AggDraw
  type font_type (line 667) | struct font_type

FILE: app/src/main/jni/desmume/src/android/7z/C/7zCrc.c
  function CrcGenerateTable (line 11) | CrcGenerateTable(void)
  function UInt32 (line 24) | UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
  function UInt32 (line 32) | UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)

FILE: app/src/main/jni/desmume/src/android/7z/C/7zCrcT8.c
  function CrcGenerateTable (line 13) | void MY_FAST_CALL CrcGenerateTable()
  function UInt32 (line 35) | UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
  function UInt32 (line 40) | UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)

FILE: app/src/main/jni/desmume/src/android/7z/C/Aes.c
  function AesGenTables (line 42) | void AesGenTables(void)
  function Aes_SetKeyEncode (line 107) | void Aes_SetKeyEncode(CAes *p, const Byte *key, unsigned keySize)
  function Aes_SetKeyDecode (line 132) | void Aes_SetKeyDecode(CAes *p, const Byte *key, unsigned keySize)
  function AesEncode32 (line 150) | static void AesEncode32(UInt32 *dest, const UInt32 *src, const UInt32 *w...
  function AesDecode32 (line 171) | static void AesDecode32(UInt32 *dest, const UInt32 *src, const UInt32 *w...
  function Aes_Encode32 (line 191) | void Aes_Encode32(const CAes *p, UInt32 *dest, const UInt32 *src)
  function Aes_Decode32 (line 196) | void Aes_Decode32(const CAes *p, UInt32 *dest, const UInt32 *src)
  function AesCbc_Init (line 201) | void AesCbc_Init(CAesCbc *p, const Byte *iv)
  function SizeT (line 208) | SizeT AesCbc_Encode(CAesCbc *p, Byte *data, SizeT size)
  function SizeT (line 233) | SizeT AesCbc_Decode(CAesCbc *p, Byte *data, SizeT size)

FILE: app/src/main/jni/desmume/src/android/7z/C/Aes.h
  type CAes (line 13) | typedef struct
  type CAesCbc (line 32) | typedef struct

FILE: app/src/main/jni/desmume/src/android/7z/C/Bra.c
  function SizeT (line 6) | SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)
  function SizeT (line 33) | SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)
  function SizeT (line 69) | SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)
  function SizeT (line 99) | SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)

FILE: app/src/main/jni/desmume/src/android/7z/C/Bra86.c
  function SizeT (line 11) | SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int ...

FILE: app/src/main/jni/desmume/src/android/7z/C/BraIA64.c
  function SizeT (line 14) | SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding)

FILE: app/src/main/jni/desmume/src/android/7z/C/BwtSort.c
  function SetGroupSize (line 43) | static void SetGroupSize(UInt32 *p, UInt32 size)
  function UInt32 (line 63) | UInt32 NO_INLINE SortGroup(UInt32 BlockSize, UInt32 NumSortedBytes, UInt...
  function UInt32 (line 352) | UInt32 BlockSort(UInt32 *Indices, const Byte *data, UInt32 blockSize)

FILE: app/src/main/jni/desmume/src/android/7z/C/HuffEnc.c
  function Huffman_Generate (line 17) | void Huffman_Generate(const UInt32 *freqs, UInt32 *p, Byte *lens, UInt32...

FILE: app/src/main/jni/desmume/src/android/7z/C/LzFind.c
  function LzInWindow_Free (line 17) | static void LzInWindow_Free(CMatchFinder *p, ISzAlloc *alloc)
  function LzInWindow_Create (line 28) | static int LzInWindow_Create(CMatchFinder *p, UInt32 keepSizeReserv, ISz...
  function Byte (line 45) | Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p) { return p->bu...
  function Byte (line 46) | Byte MatchFinder_GetIndexByte(CMatchFinder *p, Int32 index) { return p->...
  function UInt32 (line 48) | UInt32 MatchFinder_GetNumAvailableBytes(CMatchFinder *p) { return p->str...
  function MatchFinder_ReduceOffsets (line 50) | void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue)
  function MatchFinder_ReadBlock (line 57) | static void MatchFinder_ReadBlock(CMatchFinder *p)
  function MatchFinder_MoveBlock (line 81) | void MatchFinder_MoveBlock(CMatchFinder *p)
  function MatchFinder_NeedMove (line 89) | int MatchFinder_NeedMove(CMatchFinder *p)
  function MatchFinder_ReadIfRequired (line 95) | void MatchFinder_ReadIfRequired(CMatchFinder *p)
  function MatchFinder_CheckAndMoveAndRead (line 103) | static void MatchFinder_CheckAndMoveAndRead(CMatchFinder *p)
  function MatchFinder_SetDefaultSettings (line 110) | static void MatchFinder_SetDefaultSettings(CMatchFinder *p)
  function MatchFinder_Construct (line 122) | void MatchFinder_Construct(CMatchFinder *p)
  function MatchFinder_FreeThisClassMemory (line 140) | static void MatchFinder_FreeThisClassMemory(CMatchFinder *p, ISzAlloc *a...
  function MatchFinder_Free (line 146) | void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc)
  function CLzRef (line 152) | static CLzRef* AllocRefs(UInt32 num, ISzAlloc *alloc)
  function MatchFinder_Create (line 160) | int MatchFinder_Create(CMatchFinder *p, UInt32 historySize,
  function MatchFinder_SetLimits (line 236) | static void MatchFinder_SetLimits(CMatchFinder *p)
  function MatchFinder_Init (line 261) | void MatchFinder_Init(CMatchFinder *p)
  function UInt32 (line 275) | static UInt32 MatchFinder_GetSubValue(CMatchFinder *p)
  function MatchFinder_Normalize3 (line 280) | void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, UInt32 numIt...
  function MatchFinder_Normalize (line 294) | static void MatchFinder_Normalize(CMatchFinder *p)
  function MatchFinder_CheckLimits (line 301) | static void MatchFinder_CheckLimits(CMatchFinder *p)
  function UInt32 (line 312) | static UInt32 * Hc_GetMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt...
  function UInt32 (line 343) | UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, c...
  function SkipMatchesSpec (line 398) | static void SkipMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos...
  function MatchFinder_MovePos (line 455) | static void MatchFinder_MovePos(CMatchFinder *p) { MOVE_POS; }
  function UInt32 (line 474) | static UInt32 Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distan...
  function UInt32 (line 485) | UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
  function UInt32 (line 496) | static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distan...
  function UInt32 (line 529) | static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distan...
  function UInt32 (line 576) | static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distan...
  function UInt32 (line 625) | UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances)
  function Bt2_MatchFinder_Skip (line 637) | static void Bt2_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function Bt3Zip_MatchFinder_Skip (line 650) | void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function Bt3_MatchFinder_Skip (line 663) | static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function Bt4_MatchFinder_Skip (line 678) | static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function Hc4_MatchFinder_Skip (line 694) | static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function Hc3Zip_MatchFinder_Skip (line 711) | void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num)
  function MatchFinder_CreateVTable (line 725) | void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable)

FILE: app/src/main/jni/desmume/src/android/7z/C/LzFind.h
  type UInt32 (line 9) | typedef UInt32 CLzRef;
  type CMatchFinder (line 11) | typedef struct _CMatchFinder
  type Byte (line 83) | typedef Byte (*Mf_GetIndexByte_Func)(void *object, Int32 index);
  type UInt32 (line 84) | typedef UInt32 (*Mf_GetNumAvailableBytes_Func)(void *object);
  type Byte (line 85) | typedef const Byte * (*Mf_GetPointerToCurrentPos_Func)(void *object);
  type UInt32 (line 86) | typedef UInt32 (*Mf_GetMatches_Func)(void *object, UInt32 *distances);
  type IMatchFinder (line 89) | typedef struct _IMatchFinder

FILE: app/src/main/jni/desmume/src/android/7z/C/LzFindMt.c
  function MtSync_Construct (line 8) | void MtSync_Construct(CMtSync *p)
  function MtSync_GetNextBlock (line 21) | void MtSync_GetNextBlock(CMtSync *p)
  function MtSync_StopWriting (line 49) | void MtSync_StopWriting(CMtSync *p)
  function MtSync_Destruct (line 72) | void MtSync_Destruct(CMtSync *p)
  function SRes (line 100) | static SRes MtSync_Create2(CMtSync *p, unsigned (MY_STD_CALL *startAddre...
  function SRes (line 122) | static SRes MtSync_Create(CMtSync *p, unsigned (MY_STD_CALL *startAddres...
  function MtSync_Init (line 130) | void MtSync_Init(CMtSync *p) { p->needStart = True; }
  function HashThreadFunc (line 148) | void HashThreadFunc(CMatchFinderMt *mt)
  function MatchFinderMt_GetNextBlock_Hash (line 218) | void MatchFinderMt_GetNextBlock_Hash(CMatchFinderMt *p)
  function Int32 (line 234) | Int32 NO_INLINE GetMatchesSpecN(UInt32 lenLimit, UInt32 pos, const Byte ...
  function BtGetMatches (line 311) | void BtGetMatches(CMatchFinderMt *p, UInt32 *distances)
  function BtFillBlock (line 380) | void BtFillBlock(CMatchFinderMt *p, UInt32 globalBlockIndex)
  function BtThreadFunc (line 405) | void BtThreadFunc(CMatchFinderMt *mt)
  function MatchFinderMt_Construct (line 431) | void MatchFinderMt_Construct(CMatchFinderMt *p)
  function MatchFinderMt_FreeMem (line 438) | void MatchFinderMt_FreeMem(CMatchFinderMt *p, ISzAlloc *alloc)
  function MatchFinderMt_Destruct (line 444) | void MatchFinderMt_Destruct(CMatchFinderMt *p, ISzAlloc *alloc)
  function HashThreadFunc2 (line 454) | static unsigned MY_STD_CALL HashThreadFunc2(void *p) { HashThreadFunc((C...
  function BtThreadFunc2 (line 455) | static unsigned MY_STD_CALL BtThreadFunc2(void *p)
  function SRes (line 465) | SRes MatchFinderMt_Create(CMatchFinderMt *p, UInt32 historySize, UInt32 ...
  function MatchFinderMt_Init (line 490) | void MatchFinderMt_Init(CMatchFinderMt *p)
  function MatchFinderMt_ReleaseStream (line 515) | void MatchFinderMt_ReleaseStream(CMatchFinderMt *p)
  function MatchFinderMt_Normalize (line 521) | void MatchFinderMt_Normalize(CMatchFinderMt *p)
  function MatchFinderMt_GetNextBlock_Bt (line 527) | void MatchFinderMt_GetNextBlock_Bt(CMatchFinderMt *p)
  function Byte (line 539) | const Byte * MatchFinderMt_GetPointerToCurrentPos(CMatchFinderMt *p)
  function UInt32 (line 546) | UInt32 MatchFinderMt_GetNumAvailableBytes(CMatchFinderMt *p)
  function Byte (line 552) | Byte MatchFinderMt_GetIndexByte(CMatchFinderMt *p, Int32 index)
  function UInt32 (line 557) | UInt32 * MixMatches2(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *dist...
  function UInt32 (line 577) | UInt32 * MixMatches3(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *dist...
  function UInt32 (line 667) | UInt32 MatchFinderMt2_GetMatches(CMatchFinderMt *p, UInt32 *distances)
  function UInt32 (line 685) | UInt32 MatchFinderMt_GetMatches(CMatchFinderMt *p, UInt32 *distances)
  function MatchFinderMt0_Skip (line 718) | void MatchFinderMt0_Skip(CMatchFinderMt *p, UInt32 num)

FILE: app/src/main/jni/desmume/src/android/7z/C/LzFindMt.h
  type CMtSync (line 18) | typedef struct _CMtSync
  type UInt32 (line 37) | typedef UInt32 * (*Mf_Mix_Matches)(void *p, UInt32 matchMinPos, UInt32 *...
  type CMatchFinderMt (line 45) | typedef struct _CMatchFinderMt

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaDec.c
  function LzmaDec_DecodeReal (line 137) | static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, con...
  function LzmaDec_WriteRem (line 436) | static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit)
  function LzmaDec_DecodeReal2 (line 462) | static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, co...
  type ELzmaDummy (line 487) | typedef enum
  function ELzmaDummy (line 495) | static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, S...
  function IF_BIT_0_CHECK (line 608) | IF_BIT_0_CHECK(probLen)
  function IF_BIT_0_CHECK (line 619) | IF_BIT_0_CHECK(probLen)
  function LzmaDec_InitRc (line 686) | static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data)
  function LzmaDec_InitDicAndState (line 693) | void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState)
  function LzmaDec_Init (line 709) | void LzmaDec_Init(CLzmaDec *p)
  function LzmaDec_InitStateReal (line 715) | static void LzmaDec_InitStateReal(CLzmaDec *p)
  function SRes (line 727) | SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, S...
  function SRes (line 848) | SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const ...
  function LzmaDec_FreeProbs (line 888) | void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc)
  function LzmaDec_FreeDict (line 894) | static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc)
  function LzmaDec_Free (line 900) | void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc)
  function SRes (line 906) | SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size)
  function SRes (line 932) | static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNe...
  function SRes (line 946) | SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned prop...
  function SRes (line 955) | SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize...
  function SRes (line 977) | SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaDec.h
  type CLzmaProps (line 24) | typedef struct _CLzmaProps
  type CLzmaDec (line 46) | typedef struct
  type ELzmaFinishMode (line 75) | typedef enum
  type ELzmaStatus (line 96) | typedef enum

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaEnc.c
  function LzmaEncProps_Init (line 45) | void LzmaEncProps_Init(CLzmaEncProps *p)
  function LzmaEncProps_Normalize (line 53) | void LzmaEncProps_Normalize(CLzmaEncProps *p)
  function UInt32 (line 76) | UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2)
  function UInt32 (line 93) | UInt32 GetPosSlot1(UInt32 pos)
  function LzmaEnc_FastPosInit (line 107) | void LzmaEnc_FastPosInit(Byte *g_FastPos)
  type CState (line 140) | typedef unsigned CState;
  type COptimal (line 142) | typedef struct _COptimal
  type CLenEnc (line 204) | typedef struct
  type CLenPriceEnc (line 213) | typedef struct
  type CRangeEnc (line 221) | typedef struct _CRangeEnc
  type CSeqInStreamBuf (line 235) | typedef struct _CSeqInStreamBuf
  function SRes (line 242) | static SRes MyRead(void *pp, void *data, size_t *size)
  type CSaveState (line 255) | typedef struct
  type CLzmaEnc (line 277) | typedef struct _CLzmaEnc
  function LzmaEnc_SaveState (line 360) | void LzmaEnc_SaveState(CLzmaEncHandle pp)
  function LzmaEnc_RestoreState (line 386) | void LzmaEnc_RestoreState(CLzmaEncHandle pp)
  function SRes (line 412) | SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2)
  function RangeEnc_Construct (line 477) | static void RangeEnc_Construct(CRangeEnc *p)
  function RangeEnc_Alloc (line 486) | static int RangeEnc_Alloc(CRangeEnc *p, ISzAlloc *alloc)
  function RangeEnc_Free (line 498) | static void RangeEnc_Free(CRangeEnc *p, ISzAlloc *alloc)
  function RangeEnc_Init (line 504) | static void RangeEnc_Init(CRangeEnc *p)
  function RangeEnc_FlushStream (line 518) | static void RangeEnc_FlushStream(CRangeEnc *p)
  function RangeEnc_ShiftLow (line 530) | static void MY_FAST_CALL RangeEnc_ShiftLow(CRangeEnc *p)
  function RangeEnc_FlushData (line 551) | static void RangeEnc_FlushData(CRangeEnc *p)
  function RangeEnc_EncodeDirectBits (line 558) | static void RangeEnc_EncodeDirectBits(CRangeEnc *p, UInt32 value, int nu...
  function RangeEnc_EncodeBit (line 573) | static void RangeEnc_EncodeBit(CRangeEnc *p, CLzmaProb *prob, UInt32 sym...
  function LitEnc_Encode (line 596) | static void LitEnc_Encode(CRangeEnc *p, CLzmaProb *probs, UInt32 symbol)
  function LitEnc_EncodeMatched (line 607) | static void LitEnc_EncodeMatched(CRangeEnc *p, CLzmaProb *probs, UInt32 ...
  function LzmaEnc_InitPriceTables (line 621) | void LzmaEnc_InitPriceTables(UInt32 *ProbPrices)
  function UInt32 (line 657) | static UInt32 LitEnc_GetPrice(const CLzmaProb *probs, UInt32 symbol, UIn...
  function UInt32 (line 670) | static UInt32 LitEnc_GetPriceMatched(const CLzmaProb *probs, UInt32 symb...
  function RcTree_Encode (line 687) | static void RcTree_Encode(CRangeEnc *rc, CLzmaProb *probs, int numBitLev...
  function RcTree_ReverseEncode (line 701) | static void RcTree_ReverseEncode(CRangeEnc *rc, CLzmaProb *probs, int nu...
  function UInt32 (line 714) | static UInt32 RcTree_GetPrice(const CLzmaProb *probs, int numBitLevels, ...
  function UInt32 (line 726) | static UInt32 RcTree_ReverseGetPrice(const CLzmaProb *probs, int numBitL...
  function LenEnc_Init (line 742) | static void LenEnc_Init(CLenEnc *p)
  function LenEnc_Encode (line 754) | static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, UInt32 symbol, UInt...
  function LenEnc_SetPrices (line 777) | static void LenEnc_SetPrices(CLenEnc *p, UInt32 posState, UInt32 numSymb...
  function LenPriceEnc_UpdateTable (line 800) | static void MY_FAST_CALL LenPriceEnc_UpdateTable(CLenPriceEnc *p, UInt32...
  function LenPriceEnc_UpdateTables (line 806) | static void LenPriceEnc_UpdateTables(CLenPriceEnc *p, UInt32 numPosState...
  function LenEnc_Encode2 (line 813) | static void LenEnc_Encode2(CLenPriceEnc *p, CRangeEnc *rc, UInt32 symbol...
  function MovePos (line 824) | static void MovePos(CLzmaEnc *p, UInt32 num)
  function UInt32 (line 837) | static UInt32 ReadMatchDistances(CLzmaEnc *p, UInt32 *numDistancePairsRes)
  function UInt32 (line 877) | static UInt32 GetRepLen1Price(CLzmaEnc *p, UInt32 state, UInt32 posState)
  function UInt32 (line 884) | static UInt32 GetPureRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 state...
  function UInt32 (line 906) | static UInt32 GetRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 len, UInt...
  function UInt32 (line 912) | static UInt32 Backward(CLzmaEnc *p, UInt32 *backRes, UInt32 cur)
  function UInt32 (line 950) | static UInt32 GetOptimum(CLzmaEnc *p, UInt32 position, UInt32 *backRes)
  function UInt32 (line 1510) | static UInt32 GetOptimumFast(CLzmaEnc *p, UInt32 *backRes)
  function WriteEndMarker (line 1618) | static void WriteEndMarker(CLzmaEnc *p, UInt32 posState)
  function SRes (line 1631) | static SRes CheckErrors(CLzmaEnc *p)
  function SRes (line 1644) | static SRes Flush(CLzmaEnc *p, UInt32 nowPos)
  function FillAlignPrices (line 1655) | static void FillAlignPrices(CLzmaEnc *p)
  function FillDistancesPrices (line 1663) | static void FillDistancesPrices(CLzmaEnc *p)
  function LzmaEnc_Construct (line 1697) | void LzmaEnc_Construct(CLzmaEnc *p)
  function CLzmaEncHandle (line 1721) | CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc)
  function LzmaEnc_FreeLits (line 1730) | void LzmaEnc_FreeLits(CLzmaEnc *p, ISzAlloc *alloc)
  function LzmaEnc_Destruct (line 1738) | void LzmaEnc_Destruct(CLzmaEnc *p, ISzAlloc *alloc, ISzAlloc *allocBig)
  function LzmaEnc_Destroy (line 1748) | void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig)
  function SRes (line 1754) | static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, Bool useLimits, UInt32 max...
  function SRes (line 1919) | static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAlloc *...
  function LzmaEnc_Init (line 1969) | void LzmaEnc_Init(CLzmaEnc *p)
  function LzmaEnc_InitPrices (line 2027) | void LzmaEnc_InitPrices(CLzmaEnc *p)
  function SRes (line 2042) | static SRes LzmaEnc_AllocAndInit(CLzmaEnc *p, UInt32 keepWindowSize, ISz...
  function SRes (line 2059) | static SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqInStream *inStream, I...
  function SRes (line 2068) | SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp,
  function LzmaEnc_SetInputBuf (line 2077) | static void LzmaEnc_SetInputBuf(CLzmaEnc *p, const Byte *src, SizeT srcLen)
  function SRes (line 2084) | SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen,
  function LzmaEnc_Finish (line 2093) | void LzmaEnc_Finish(CLzmaEncHandle pp)
  type CSeqOutStreamBuf (line 2104) | typedef struct _CSeqOutStreamBuf
  function MyWrite (line 2112) | static size_t MyWrite(void *pp, const void *data, size_t size)
  function UInt32 (line 2127) | UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp)
  function Byte (line 2133) | const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp)
  function SRes (line 2139) | SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, Bool reInit,
  function SRes (line 2173) | SRes LzmaEnc_Encode(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInS...
  function SRes (line 2207) | SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size)
  function SRes (line 2236) | SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, co...
  function SRes (line 2261) | SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen,

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaEnc.h
  type CLzmaEncProps (line 11) | typedef struct _CLzmaEncProps

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Dec.c
  function SzFree (line 16) | static void SzFree(void *p, void *address) { p = p; MyFree(address); }
  function SRes (line 19) | SRes Lzma86_GetUnpackSize(const Byte *src, SizeT srcLen, UInt64 *unpackS...
  function SRes (line 30) | SRes Lzma86_Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *s...

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Enc.c
  function SzFree (line 17) | static void SzFree(void *p, void *address) { p = p; MyFree(address); }
  function Lzma86_Encode (line 23) | int Lzma86_Encode(Byte *dest, size_t *destLen, const Byte *src, size_t s...

FILE: app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Enc.h
  type ESzFilterMode (line 62) | enum ESzFilterMode

FILE: app/src/main/jni/desmume/src/android/7z/C/Sha256.c
  function Sha256_Init (line 12) | void Sha256_Init(CSha256 *p)
  function Sha256_Transform (line 93) | static void Sha256_Transform(UInt32 *state, const UInt32 *data)
  function Sha256_WriteByteBlock (line 147) | static void Sha256_WriteByteBlock(CSha256 *p)
  function Sha256_Update (line 160) | void Sha256_Update(CSha256 *p, const Byte *data, size_t size)
  function Sha256_Final (line 176) | void Sha256_Final(CSha256 *p, Byte *digest)

FILE: app/src/main/jni/desmume/src/android/7z/C/Sha256.h
  type CSha256 (line 11) | typedef struct

FILE: app/src/main/jni/desmume/src/android/7z/C/Sort.c
  function HeapSort (line 17) | void HeapSort(UInt32 *p, UInt32 size)

FILE: app/src/main/jni/desmume/src/android/7z/C/Threads.c
  function WRes (line 22) | WRes Thread_Create(CThread *thread, THREAD_FUNC_RET_TYPE (THREAD_FUNC_CA...
  function WRes (line 34) | WRes Thread_Wait(CThread *thread)
  function WRes (line 55) | WRes Thread_Close(CThread *thread)
  function WRes (line 65) | WRes Event_Create(CEvent *p, BOOL manualReset, int initialSignaled)
  function WRes (line 75) | WRes Event_Set(CEvent *p) {
  function WRes (line 88) | WRes Event_Reset(CEvent *p) {
  function WRes (line 95) | WRes Event_Wait(CEvent *p) {
  function WRes (line 113) | WRes Event_Close(CEvent *p) {
  function WRes (line 122) | WRes Semaphore_Create(CSemaphore *p, UInt32 initiallyCount, UInt32 maxCo...
  function WRes (line 132) | WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 releaseCount)
  function WRes (line 156) | WRes Semaphore_Wait(CSemaphore *p) {
  function WRes (line 171) | WRes Semaphore_Close(CSemaphore *p) {
  function WRes (line 180) | WRes CriticalSection_Init(CCriticalSection * lpCriticalSection)
  function WRes (line 188) | WRes Thread_Create(CThread *thread, THREAD_FUNC_RET_TYPE (THREAD_FUNC_CA...
  function WRes (line 212) | WRes Thread_Wait(CThread *thread)
  function WRes (line 226) | WRes Thread_Close(CThread *thread)
  function dump_error (line 240) | static void dump_error(int ligne,int ret,const char *text,void *param)
  function WRes (line 246) | WRes Event_Create(CEvent *p, BOOL manualReset, int initialSignaled)
  function WRes (line 268) | WRes Event_Set(CEvent *p) {
  function WRes (line 285) | WRes Event_Reset(CEvent *p) {
  function WRes (line 297) | WRes Event_Wait(CEvent *p) {
  function WRes (line 320) | WRes Event_Close(CEvent *p) {
  function WRes (line 333) | WRes Semaphore_Create(CSemaphore *p, UInt32 initiallyCount, UInt32 maxCo...
  function WRes (line 355) | WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 releaseCount)
  function WRes (line 383) | WRes Semaphore_Wait(CSemaphore *p) {
  function WRes (line 403) | WRes Semaphore_Close(CSemaphore *p) {
  function WRes (line 416) | WRes CriticalSection_Init(CCriticalSection * lpCriticalSection)
  function CriticalSection_Enter (line 434) | void CriticalSection_Enter(CCriticalSection * lpCriticalSection)
  function CriticalSection_Leave (line 443) | void CriticalSection_Leave(CCriticalSection * lpCriticalSection)
  function CriticalSection_Delete (line 452) | void CriticalSection_Delete(CCriticalSection * lpCriticalSection)
  function WRes (line 463) | WRes Event_Create(CEvent *p, BOOL manualReset, int initialSignaled)
  function WRes (line 473) | WRes Event_Set(CEvent *p) {
  function WRes (line 481) | WRes Event_Reset(CEvent *p) {
  function WRes (line 488) | WRes Event_Wait(CEvent *p) {
  function WRes (line 502) | WRes Event_Close(CEvent *p) {
  function WRes (line 512) | WRes Semaphore_Create(CSemaphore *p, UInt32 initiallyCount, UInt32 maxCo...
  function WRes (line 522) | WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 releaseCount)
  function WRes (line 542) | WRes Semaphore_Wait(CSemaphore *p) {
  function WRes (line 553) | WRes Semaphore_Close(CSemaphore *p) {
  function WRes (line 563) | WRes CriticalSection_Init(CCriticalSection * lpCriticalSection)
  function WRes (line 572) | WRes ManualResetEvent_Create(CManualResetEvent *p, int initialSignaled)
  function WRes (line 575) | WRes ManualResetEvent_CreateNotSignaled(CManualResetEvent *p)
  function WRes (line 578) | WRes AutoResetEvent_Create(CAutoResetEvent *p, int initialSignaled)
  function WRes (line 580) | WRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *p)

FILE: app/src/main/jni/desmume/src/android/7z/C/Threads.h
  type CThread (line 19) | typedef struct _CThread
  type THREAD_FUNC_RET_TYPE (line 33) | typedef unsigned THREAD_FUNC_RET_TYPE;
  type CEvent (line 41) | typedef struct _CEvent
  type CEvent (line 56) | typedef CEvent CAutoResetEvent;
  type CEvent (line 57) | typedef CEvent CManualResetEvent;
  type CSemaphore (line 72) | typedef struct _CSemaphore
  type CCriticalSection (line 95) | typedef struct {

FILE: app/src/main/jni/desmume/src/android/7z/C/Types.h
  type SRes (line 31) | typedef int SRes;
  type DWORD (line 34) | typedef DWORD WRes;
  type WRes (line 36) | typedef int WRes;
  type Byte (line 43) | typedef unsigned char Byte;
  type Int16 (line 44) | typedef short Int16;
  type UInt16 (line 45) | typedef unsigned short UInt16;
  type Int32 (line 48) | typedef long Int32;
  type UInt32 (line 49) | typedef unsigned long UInt32;
  type Int32 (line 51) | typedef int Int32;
  type UInt32 (line 52) | typedef unsigned int UInt32;
  type Int64 (line 60) | typedef long Int64;
  type UInt64 (line 61) | typedef unsigned long UInt64;
  type __int64 (line 66) | typedef __int64 Int64;
  type UInt64 (line 67) | typedef unsigned __int64 UInt64;
  type Int64 (line 69) | typedef long long int Int64;
  type UInt64 (line 70) | typedef unsigned long long int UInt64;
  type UInt32 (line 76) | typedef UInt32 SizeT;
  type SizeT (line 78) | typedef size_t SizeT;
  type Bool (line 81) | typedef int Bool;
  type ISeqInStream (line 109) | typedef struct
  type ISeqOutStream (line 121) | typedef struct
  type ESzSeek (line 128) | typedef enum
  type ISeekInStream (line 135) | typedef struct
  type ILookInStream (line 141) | typedef struct
  type CLookToRead (line 164) | typedef struct
  type CSecToLook (line 176) | typedef struct
  type CSecToRead (line 184) | typedef struct
  type ICompressProgress (line 192) | typedef struct
  type ISzAlloc (line 199) | typedef struct

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zCompressionMode.h
  function namespace (line 12) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zDecode.cpp
  type NArchive (line 12) | namespace NArchive {
    type N7z (line 13) | namespace N7z {
      function ConvertFolderItemInfoToBindInfo (line 15) | static void ConvertFolderItemInfoToBindInfo(const CFolder &folder,
      function AreCodersEqual (line 44) | static bool AreCodersEqual(const NCoderMixer::CCoderStreamsInfo &a1,
      function AreBindPairsEqual (line 51) | static bool AreBindPairsEqual(const NCoderMixer::CBindPair &a1, cons...
      function AreBindInfoExEqual (line 57) | static bool AreBindInfoExEqual(const CBindInfoEx &a1, const CBindInf...
      function HRESULT (line 89) | HRESULT CDecoder::Decode(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zDecode.h
  function namespace (line 19) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zEncode.cpp
  type NArchive (line 20) | namespace NArchive {
    type N7z (line 21) | namespace N7z {
      function ConvertBindInfoToFolderItemInfo (line 23) | static void ConvertBindInfoToFolderItemInfo(const NCoderMixer::CBind...
      function HRESULT (line 53) | HRESULT CEncoder::CreateMixerCoder(
      function HRESULT (line 136) | HRESULT CEncoder::Encode(
      function HRESULT (line 295) | HRESULT CEncoder::EncoderConstr()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zEncode.h
  function namespace (line 19) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zExtract.cpp
  type CExtractFolderInfo (line 18) | struct CExtractFolderInfo

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderInStream.cpp
  type NArchive (line 7) | namespace NArchive {
    type N7z (line 8) | namespace N7z {
      function HRESULT (line 30) | HRESULT CFolderInStream::OpenStream()
      function HRESULT (line 72) | HRESULT CFolderInStream::CloseStream()
      function STDMETHODIMP (line 83) | STDMETHODIMP CFolderInStream::Read(void *data, UInt32 size, UInt32 *...
      function STDMETHODIMP (line 113) | STDMETHODIMP CFolderInStream::GetSubStreamSize(UInt64 subStream, UIn...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderInStream.h
  function namespace (line 15) | namespace N7z {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderOutStream.cpp
  type NArchive (line 7) | namespace NArchive {
    type N7z (line 8) | namespace N7z {
      function HRESULT (line 16) | HRESULT CFolderOutStream::Init(
      function HRESULT (line 40) | HRESULT CFolderOutStream::OpenFile()
      function HRESULT (line 66) | HRESULT CFolderOutStream::WriteEmptyFiles()
      function STDMETHODIMP (line 81) | STDMETHODIMP CFolderOutStream::Write(const void *data,
      function HRESULT (line 137) | HRESULT CFolderOutStream::FlushCorrupted(Int32 resultEOperationResult)
      function HRESULT (line 157) | HRESULT CFolderOutStream::WasWritingFinished()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderOutStream.h
  function namespace (line 12) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandler.cpp
  function STDMETHODIMP (line 52) | STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
  function IMP_IInArchive_ArcProps_NO (line 60) | IMP_IInArchive_ArcProps_NO
  function STDMETHODIMP (line 67) | STDMETHODIMP CHandler::GetPropertyInfo(UInt32 /* index */,
  function SetPropFromUInt64Def (line 133) | static void SetPropFromUInt64Def(CUInt64DefVector &v, int index, NCOM::C...
  function UString (line 147) | static UString ConvertUInt32ToString(UInt32 value)
  function UString (line 154) | static UString GetStringForSizeValue(UInt32 value)
  function wchar_t (line 182) | static wchar_t GetHex(Byte value)
  function UString (line 186) | static inline UString GetHex2(Byte value)
  function STDMETHODIMP (line 211) | STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID,  PROPVAR...
  function STDMETHODIMP (line 401) | STDMETHODIMP CHandler::Open(IInStream *stream,
  function STDMETHODIMP (line 446) | STDMETHODIMP CHandler::Close()
  function STDMETHODIMP (line 458) | STDMETHODIMP CHandler::SetProperties(const wchar_t **names, const PROPVA...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandler.h
  function namespace (line 18) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandlerOut.cpp
  type NArchive (line 21) | namespace NArchive {
    type N7z (line 22) | namespace N7z {
      function IsCopyMethod (line 34) | static inline bool IsCopyMethod(const UString &methodName)
      function STDMETHODIMP (line 37) | STDMETHODIMP CHandler::GetFileTimeType(UInt32 *type)
      function HRESULT (line 43) | HRESULT CHandler::SetPassword(CCompressionMethodMode &methodMode,
      function HRESULT (line 68) | HRESULT CHandler::SetCompressionMethod(
      function HRESULT (line 122) | HRESULT CHandler::SetCompressionMethod(
      function HRESULT (line 188) | static HRESULT GetTime(IArchiveUpdateCallback *updateCallback, int i...
      function STDMETHODIMP (line 206) | STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, ...
      function HRESULT (line 416) | static HRESULT GetBindInfoPart(UString &srcString, UInt32 &coder, UI...
      function HRESULT (line 434) | static HRESULT GetBindInfo(UString &srcString, CBind &bind)
      function STDMETHODIMP (line 446) | STDMETHODIMP CHandler::SetProperties(const wchar_t **names, const PR...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHeader.cpp
  type NArchive (line 6) | namespace NArchive {
    type N7z (line 7) | namespace N7z {
      class SignatureInitializer (line 14) | class SignatureInitializer
        method SignatureInitializer (line 17) | SignatureInitializer()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHeader.h
  function namespace (line 8) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zIn.cpp
  type NArchive (line 26) | namespace NArchive {
    type N7z (line 27) | namespace N7z {
      function BoolVector_Fill_False (line 29) | static void BoolVector_Fill_False(CBoolVector &v, int size)
      function BoolVector_GetAndSet (line 37) | static bool BoolVector_GetAndSet(CBoolVector &v, UInt32 index)
      class CInArchiveException (line 109) | class CInArchiveException {}
      function ThrowException (line 111) | static void ThrowException() {  }
      function ThrowEndOfData (line 112) | static inline void ThrowEndOfData()   { ThrowException(); }
      function ThrowUnsupported (line 113) | static inline void ThrowUnsupported() { ThrowException(); }
      function ThrowIncorrect (line 114) | static inline void ThrowIncorrect()   { ThrowException(); }
      function ThrowUnsupportedVersion (line 115) | static inline void ThrowUnsupportedVersion() { ThrowException(); }
      class CStreamSwitch (line 138) | class CStreamSwitch
        method CStreamSwitch (line 143) | CStreamSwitch(): _needRemove(false) {}
      function Byte (line 186) | Byte CInByte2::ReadByte()
      function UInt64 (line 213) | UInt64 CInByte2::ReadNumber()
      function CNum (line 236) | CNum CInByte2::ReadNum()
      function UInt32 (line 244) | UInt32 CInByte2::ReadUInt32()
      function UInt64 (line 253) | UInt64 CInByte2::ReadUInt64()
      function TestSignatureCandidate (line 286) | static inline bool TestSignatureCandidate(const Byte *p)
      function HRESULT (line 294) | HRESULT CInArchive::FindAndReadSignature(IInStream *stream, const UI...
      function HRESULT (line 345) | HRESULT CInArchive::Open(IInStream *stream, const UInt64 *searchHead...
      function HRESULT (line 766) | HRESULT CInArchive::ReadAndDecodePackedStreams(
      function HRESULT (line 848) | HRESULT CInArchive::ReadHeader(
      function HRESULT (line 1121) | HRESULT CInArchive::ReadDatabase2(
      function HRESULT (line 1240) | HRESULT CInArchive::ReadDatabase(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zIn.h
  function namespace (line 16) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zItem.h
  function namespace (line 13) | namespace NArchive {
  type CFileItem (line 131) | struct CFileItem
  function IsItemAnti (line 243) | bool IsItemAnti(int index) const { return (index < IsAnti.Size() && IsAn...
  function SetItemAnti (line 244) | void SetItemAnti(int index, bool isAnti)

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zOut.cpp
  function HRESULT (line 15) | static HRESULT WriteBytes(ISequentialOutStream *stream, const void *data...
  type NArchive (line 30) | namespace NArchive {
    type N7z (line 31) | namespace N7z {
      function HRESULT (line 33) | HRESULT COutArchive::WriteDirect(const void *data, UInt32 size)
      function HRESULT (line 38) | HRESULT COutArchive::WriteSignature()
      function HRESULT (line 48) | HRESULT COutArchive::WriteFinishSignature()
      function SetUInt32 (line 59) | static void SetUInt32(Byte *p, UInt32 d)
      function SetUInt64 (line 65) | static void SetUInt64(Byte *p, UInt64 d)
      function HRESULT (line 71) | HRESULT COutArchive::WriteStartHeader(const CStartHeader &h)
      function HRESULT (line 82) | HRESULT COutArchive::WriteFinishHeader(const CFinishHeader &h)
      function HRESULT (line 99) | HRESULT COutArchive::Create(ISequentialOutStream *stream, bool endMa...
      function HRESULT (line 144) | HRESULT COutArchive::SkeepPrefixArchiveHeader()
      function UInt64 (line 153) | UInt64 COutArchive::GetPos() const
      function UInt32 (line 229) | static UInt32 GetBigNumberSize(UInt64 value)
      function UInt32 (line 239) | UInt32 COutArchive::GetVolHeadersSize(UInt64 dataSize, int nameLengt...
      function UInt64 (line 257) | UInt64 COutArchive::GetVolPureSize(UInt64 volSize, int nameLength, b...
      function HRESULT (line 544) | HRESULT COutArchive::EncodeStream(
      function HRESULT (line 563) | HRESULT COutArchive::EncodeStream(
      function HRESULT (line 752) | HRESULT COutArchive::WriteDatabase(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zOut.h
  function namespace (line 13) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zProperties.cpp
  type NArchive (line 11) | namespace NArchive {
    type N7z (line 12) | namespace N7z {
      type CPropMap (line 14) | struct CPropMap
      function FindPropInMap (line 53) | static int FindPropInMap(UInt64 filePropID)
      function CopyOneItem (line 61) | static void CopyOneItem(CRecordVector<UInt64> &src,
      function RemoveOneItem (line 73) | static void RemoveOneItem(CRecordVector<UInt64> &src, UInt32 item)
      function InsertToHead (line 83) | static void InsertToHead(CRecordVector<UInt64> &dest, UInt32 item)
      function STDMETHODIMP (line 143) | STDMETHODIMP CHandler::GetNumberOfProperties(UInt32 *numProperties)
      function STDMETHODIMP (line 149) | STDMETHODIMP CHandler::GetPropertyInfo(UInt32 index, BSTR *name, PRO...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zProperties.h
  function namespace (line 8) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zRegister.cpp
  function IInArchive (line 8) | static IInArchive *CreateArc() { return new NArchive::N7z::CHandler;  }
  function IOutArchive (line 10) | static IOutArchive *CreateArcOut() { return new NArchive::N7z::CHandler;  }
  function Register7z (line 18) | void Register7z()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zSpecStream.cpp
  function STDMETHODIMP (line 7) | STDMETHODIMP CSequentialInStreamSizeCount2::Read(void *data, UInt32 size...
  function STDMETHODIMP (line 17) | STDMETHODIMP CSequentialInStreamSizeCount2::GetSubStreamSize(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zUpdate.cpp
  type NArchive (line 22) | namespace NArchive {
    type N7z (line 23) | namespace N7z {
      function HRESULT (line 30) | static HRESULT WriteRange(IInStream *inStream, ISequentialOutStream ...
      function GetReverseSlashPos (line 45) | static int GetReverseSlashPos(const UString &name)
      function UString (line 64) | UString CUpdateItem::GetExtension() const
      function CompareBuffers (line 71) | static int CompareBuffers(const CByteBuffer &a1, const CByteBuffer &a2)
      function CompareCoders (line 81) | static int CompareCoders(const CCoderInfo &c1, const CCoderInfo &c2)
      function CompareBindPairs (line 89) | static int CompareBindPairs(const CBindPair &b1, const CBindPair &b2)
      function CompareFolders (line 95) | static int CompareFolders(const CFolder &f1, const CFolder &f2)
      function CompareFiles (line 111) | static int CompareFiles(const CFileItem &f1, const CFileItem &f2)
      function CompareFolderRefs (line 116) | static int CompareFolderRefs(const int *p1, const int *p2, void *param)
      function CompareEmptyItems (line 136) | static int CompareEmptyItems(const int *p1, const int *p2, void *param)
      function GetExtIndex (line 185) | int GetExtIndex(const char *ext)
      type CRefItem (line 218) | struct CRefItem
        method CRefItem (line 225) | CRefItem(UInt32 index, const CUpdateItem &ui, bool sortByType):
      function CompareUpdateItems (line 265) | static int CompareUpdateItems(const CRefItem *p1, const CRefItem *p2...
      type CSolidGroup (line 295) | struct CSolidGroup
      function IsExeFile (line 311) | static bool IsExeFile(const UString &ext)
      function IsExeFile (line 319) | static bool IsExeFile(const CUpdateItem &ui)
      function GetMethodFull (line 353) | static bool GetMethodFull(UInt64 methodID,
      function MakeExeMethod (line 362) | static bool MakeExeMethod(const CCompressionMethodMode &method,
      function SplitFilesToGroups (line 434) | static void SplitFilesToGroups(
      function FromUpdateItemToFileItem (line 490) | static void FromUpdateItemToFileItem(const CUpdateItem &ui,
      function HRESULT (line 508) | static HRESULT Update2(
      function HRESULT (line 846) | HRESULT Update(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zUpdate.h
  function namespace (line 12) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/ArchiveExports.cpp
  function RegisterArc (line 18) | void RegisterArc(const CArcInfo *arcInfo)
  function HRESULT (line 29) | static inline HRESULT SetPropString(const char *s, unsigned int size, PR...
  function HRESULT (line 36) | static inline HRESULT SetPropGUID(const GUID &guid, PROPVARIANT *value)
  function FindFormatCalssId (line 41) | int FindFormatCalssId(const GUID *clsID)
  function STDAPI (line 54) | STDAPI CreateArchiver(const GUID *clsid, const GUID *iid, void **outObject)
  function STDAPI (line 84) | STDAPI GetHandlerProperty2(UInt32 formatIndex, PROPID propID, PROPVARIAN...
  function STDAPI (line 122) | STDAPI GetHandlerProperty(PROPID propID, PROPVARIANT *value)
  function STDAPI (line 127) | STDAPI GetNumberOfFormats(UINT32 *numFormats)
  function Do7ZipRegistration (line 147) | void Do7ZipRegistration()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/ArjHandler.cpp
  type NArchive (line 31) | namespace NArchive {
    type NArj (line 32) | namespace NArj {
      type NSignature (line 37) | namespace NSignature
      type NFileHeader (line 43) | namespace NFileHeader
        type NCompressionMethod (line 45) | namespace NCompressionMethod
        type NFileType (line 59) | namespace NFileType
        type NFlags (line 72) | namespace NFlags
        type NHostOS (line 81) | namespace NHostOS
          type EEnum (line 83) | enum EEnum
      type CArchiveHeader (line 101) | struct CArchiveHeader
      function HRESULT (line 124) | static HRESULT ReadString(const Byte *p, unsigned &size, AString &res)
      function HRESULT (line 141) | HRESULT CArchiveHeader::Parse(const Byte *p, unsigned size)
      type CItem (line 174) | struct CItem
        method IsEncrypted (line 198) | bool IsEncrypted() const { return (Flags & NFileHeader::NFlags::kG...
        method IsDir (line 199) | bool IsDir() const { return (FileType == NFileHeader::NFileType::k...
        method UInt32 (line 200) | UInt32 GetWinAttributes() const
      function HRESULT (line 220) | HRESULT CItem::Parse(const Byte *p, unsigned size)
      type CInArchiveException (line 254) | struct CInArchiveException
        type CCauseType (line 256) | enum CCauseType
        method CInArchiveException (line 263) | CInArchiveException(CCauseType cause): Cause(cause) {}
      class CInArchive (line 266) | class CInArchive
      function TestMarkerCandidate (line 289) | static inline bool TestMarkerCandidate(const Byte *p, unsigned maxSize)
      function HRESULT (line 305) | static HRESULT FindAndReadMarker(ISequentialInStream *stream, const ...
      function HRESULT (line 356) | HRESULT CInArchive::SafeReadBytes(void *data, UInt32 size)
      function HRESULT (line 365) | HRESULT CInArchive::ReadBlock(bool &filled)
      function HRESULT (line 383) | HRESULT CInArchive::ReadSignatureAndBlock(bool &filled)
      function HRESULT (line 392) | HRESULT CInArchive::SkeepExtendedHeaders()
      function HRESULT (line 405) | HRESULT CInArchive::Open(const UInt64 *searchHeaderSizeLimit)
      function HRESULT (line 418) | HRESULT CInArchive::GetNextItem(bool &filled, CItem &item)
      class CHandler (line 436) | class CHandler:
      function IMP_IInArchive_Props (line 496) | IMP_IInArchive_Props
      function SetHostOS (line 514) | static void SetHostOS(Byte hostOS, NWindows::NCOM::CPropVariant &prop)
      function SetUnicodeString (line 519) | static void SetUnicodeString(const AString &s, NWindows::NCOM::CProp...
      function STDMETHODIMP (line 525) | STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT...
      function STDMETHODIMP (line 542) | STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
      function STDMETHODIMP (line 548) | STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROP...
      function HRESULT (line 572) | HRESULT CHandler::Open2(IInStream *inStream, const UInt64 *maxCheckS...
      function STDMETHODIMP (line 619) | STDMETHODIMP CHandler::Open(IInStream *inStream,
      function STDMETHODIMP (line 639) | STDMETHODIMP CHandler::Close()
      function STDMETHODIMP (line 646) | STDMETHODIMP CHandler::Extract(const UInt32* indices, UInt32 numItems,
      function IInArchive (line 783) | static IInArchive *CreateArc() { return new CHandler;  }

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Handler.cpp
  type NArchive (line 19) | namespace NArchive {
    type NBZip2 (line 20) | namespace NBZip2 {
      function IMP_IInArchive_Props (line 29) | IMP_IInArchive_Props
      function STDMETHODIMP (line 38) | STDMETHODIMP CHandler::GetProperty(UInt32 /* index */, PROPID propID...
      function STDMETHODIMP (line 49) | STDMETHODIMP CHandler::Open(IInStream *stream,
      function STDMETHODIMP (line 72) | STDMETHODIMP CHandler::Close()
      function STDMETHODIMP (line 79) | STDMETHODIMP CHandler::Extract(const UInt32* indices, UInt32 numItems,

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Handler.h
  function namespace (line 15) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2HandlerOut.cpp
  type NArchive (line 26) | namespace NArchive {
    type NBZip2 (line 27) | namespace NBZip2 {
      function STDMETHODIMP (line 29) | STDMETHODIMP CHandler::GetFileTimeType(UInt32 *type)
      function HRESULT (line 35) | static HRESULT CopyStreams(ISequentialInStream *inStream, ISequentia...
      function STDMETHODIMP (line 41) | STDMETHODIMP CHandler::UpdateItems(ISequentialOutStream *outStream, ...
      function STDMETHODIMP (line 106) | STDMETHODIMP CHandler::SetProperties(const wchar_t **names, const PR...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Item.h
  function namespace (line 6) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Update.cpp
  type NArchive (line 11) | namespace NArchive {
    type NBZip2 (line 12) | namespace NBZip2 {
      function HRESULT (line 16) | HRESULT UpdateArchive(

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Update.h
  function namespace (line 9) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/bz2Register.cpp
  function IInArchive (line 8) | static IInArchive *CreateArc() { return new NArchive::NBZip2::CHandler;  }
  function IOutArchive (line 10) | static IOutArchive *CreateArcOut() { return new NArchive::NBZip2::CHandl...
  function RegisterBZip2 (line 18) | void RegisterBZip2()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabBlockInStream.cpp
  type NArchive (line 16) | namespace NArchive {
    type NCab (line 17) | namespace NCab {
      class CCheckSum2 (line 33) | class CCheckSum2
        method CCheckSum2 (line 39) | CCheckSum2(): m_Value(0){}
        method Init (line 40) | void Init() { m_Value = 0;  m_Pos = 0; }
        method FinishDataUpdate (line 42) | void FinishDataUpdate()
        method UpdateUInt32 (line 47) | void UpdateUInt32(UInt32 v) { m_Value ^= v; }
        method UInt32 (line 48) | UInt32 GetResult() const {  return m_Value; }
      class CTempCabInBuffer2 (line 90) | class CTempCabInBuffer2
        method Byte (line 95) | Byte ReadByte()
        method UInt32 (line 99) | UInt32 ReadUInt32()
        method UInt16 (line 106) | UInt16 ReadUInt16()
      function HRESULT (line 115) | HRESULT CCabBlockInStream::PreRead(UInt32 &packSize, UInt32 &unpackS...
      function STDMETHODIMP (line 173) | STDMETHODIMP CCabBlockInStream::Read(void *data, UInt32 size, UInt32...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabBlockInStream.h
  function namespace (line 9) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHandler.cpp
  type NArchive (line 28) | namespace NArchive {
    type NCab (line 29) | namespace NCab {
      function IMP_IInArchive_Props (line 75) | IMP_IInArchive_Props
      function STDMETHODIMP (line 126) | STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID,  PRO...
      function STDMETHODIMP (line 223) | STDMETHODIMP CHandler::Open(IInStream *inStream,
      function STDMETHODIMP (line 325) | STDMETHODIMP CHandler::Close()
      class CCabFolderOutStream (line 331) | class CCabFolderOutStream:
        method UInt64 (line 370) | UInt64 GetRemain() const { return m_FolderSize - m_PosInFolder; }
        method UInt64 (line 371) | UInt64 GetPosInFolder() const { return m_PosInFolder; }
      function HRESULT (line 396) | HRESULT CCabFolderOutStream::OpenFile()
      function HRESULT (line 408) | HRESULT CCabFolderOutStream::WriteEmptyFiles()
      function HRESULT (line 428) | HRESULT CCabFolderOutStream::Write2(const void *data, UInt32 size, U...
      function STDMETHODIMP (line 506) | STDMETHODIMP CCabFolderOutStream::Write(const void *data, UInt32 siz...
      function HRESULT (line 511) | HRESULT CCabFolderOutStream::FlushCorrupted()
      function HRESULT (line 528) | HRESULT CCabFolderOutStream::Unsupported()
      function STDMETHODIMP (line 543) | STDMETHODIMP CHandler::Extract(const UInt32* indices, UInt32 numItems,
      function STDMETHODIMP (line 816) | STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHandler.h
  function namespace (line 10) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHeader.cpp
  type NArchive (line 7) | namespace NArchive{
    type NCab (line 8) | namespace NCab{
      type NHeader (line 9) | namespace NHeader{
        type SignatureInitializer (line 13) | struct SignatureInitializer { SignatureInitializer() {  kMarker[0]...
          method SignatureInitializer (line 13) | SignatureInitializer() {  kMarker[0]--;  }

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHeader.h
  function namespace (line 8) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabIn.cpp
  type NArchive (line 9) | namespace NArchive {
    type NCab (line 10) | namespace NCab {
      function Byte (line 12) | Byte CInArchive::ReadByte()
      function UInt16 (line 20) | UInt16 CInArchive::ReadUInt16()
      function UInt32 (line 31) | UInt32 CInArchive::ReadUInt32()
      function AString (line 42) | AString CInArchive::SafeReadName()
      function HRESULT (line 66) | HRESULT CInArchive::Open2(IInStream *stream,
      function HRESULT (line 156) | HRESULT CInArchive::Open(
      function CompareMvItems2 (line 164) | static int CompareMvItems2(const CMvItem *p1, const CMvItem *p2)
      function CompareMvItems (line 170) | static int CompareMvItems(const CMvItem *p1, const CMvItem *p2, void...

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabIn.h
  function namespace (line 11) | namespace NArchive {
  function CArchiveInfo (line 69) | struct CInArchiveInfo: public CArchiveInfo
  function class (line 76) | class CDatabase
  function class (line 107) | class CDatabaseEx: public CDatabase
  type CMvItem (line 113) | struct CMvItem
  function class (line 119) | class CMvDatabaseEx
  function class (line 144) | class CInArchive

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabItem.h
  function namespace (line 10) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabRegister.cpp
  function IInArchive (line 8) | static IInArchive *CreateArc() { return new NArchive::NCab::CHandler;  }

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmHandler.cpp
  type NArchive (line 27) | namespace NArchive {
    type NChm (line 28) | namespace NChm {
      function IMP_IInArchive_Props (line 60) | IMP_IInArchive_Props
      class CProgressImp (line 163) | class CProgressImp: public CProgressVirt
        method CProgressImp (line 169) | CProgressImp(IArchiveOpenCallback *callback): _callback(callback) {}
      function STDMETHODIMP (line 172) | STDMETHODIMP CProgressImp::SetTotal(const UInt64 *numFiles)
      function STDMETHODIMP (line 179) | STDMETHODIMP CProgressImp::SetCompleted(const UInt64 *numFiles)
      function STDMETHODIMP (line 186) | STDMETHODIMP CHandler::Open(IInStream *inStream,
      function STDMETHODIMP (line 211) | STDMETHODIMP CHandler::Close()
      class CChmFolderOutStream (line 218) | class CChmFolderOutStream:
      function HRESULT (line 269) | HRESULT CChmFolderOutStream::OpenFile()
      function HRESULT (line 282) | HRESULT CChmFolderOutStream::WriteEmptyFiles()
      function HRESULT (line 300) | HRESULT CChmFolderOutStream::Write2(const void *data, UInt32 size, U...
      function STDMETHODIMP (line 376) | STDMETHODIMP CChmFolderOutStream::Write(const void *data, UInt32 siz...
      function HRESULT (line 381) | HRESULT CChmFolderOutStream::FlushCorrupted(UInt64 maxSize)
      function STDMETHODIMP (line 401) | STDMETHODIMP CHandler::Extract(const UInt32* indices, UInt32 numItems,
      function STDMETHODIMP (line 712) | STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmHandler.h
  function namespace (line 10) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmHeader.cpp
  type NArchive (line 7) | namespace NArchive{
    type NChm (line 8) | namespace NChm{
      type NHeader (line 9) | namespace NHeader{
        class CSignatureInitializer (line 13) | class CSignatureInitializer
          method CSignatureInitializer (line 16) | CSignatureInitializer()

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmHeader.h
  function namespace (line 8) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmIn.cpp
  type NArchive (line 14) | namespace NArchive{
    type NChm (line 15) | namespace NChm{
      function AreGuidsEqual (line 27) | static bool AreGuidsEqual(REFGUID g1, REFGUID g2)
      function GetHex (line 39) | static char GetHex(Byte value)
      function PrintByte (line 44) | static void PrintByte(Byte b, AString &s)
      function PrintUInt16 (line 50) | static void PrintUInt16(UInt16 v, AString &s)
      function PrintUInt32 (line 56) | static void PrintUInt32(UInt32 v, AString &s)
      function AString (line 62) | AString CMethodInfo::GetGuidString() const
      function UString (line 93) | UString CMethodInfo::GetName() const
      function UString (line 131) | UString CSectionInfo::GetMethodName() const
      function Byte (line 150) | Byte CInArchive::ReadByte()
      function UInt16 (line 170) | UInt16 CInArchive::ReadUInt16()
      function UInt32 (line 178) | UInt32 CInArchive::ReadUInt32()
      function UInt64 (line 186) | UInt64 CInArchive::ReadUInt64()
      function UInt64 (line 194) | UInt64 CInArchive::ReadEncInt()
      function HRESULT (line 246) | HRESULT CInArchive::ReadChunk(IInStream *inStream, UInt64 pos, UInt6...
      function HRESULT (line 258) | HRESULT CInArchive::ReadDirEntry(CDatabase &database)
      function HRESULT (line 272) | HRESULT CInArchive::OpenChm(IInStream *inStream, CDatabase &database)
      function HRESULT (line 385) | HRESULT CInArchive::OpenHelp2(IInStream *inStream, CDatabase &database)
      function HRESULT (line 595) | HRESULT CInArchive::DecompressStream(IInStream *inStream, const CDat...
      function AString (line 616) | static AString GetSectionPrefix(const AString &name)
      function CompareFiles (line 623) | static int CompareFiles(const int *p1, const int *p2, void *param)
      function HRESULT (line 683) | HRESULT CInArchive::OpenHighLevel(IInStream *inStream, CFilesDatabas...
      function HRESULT (line 848) | HRESULT CInArchive::Open2(IInStream *inStream,
      function HRESULT (line 926) | HRESULT CInArchive::Open(IInStream *inStream,

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmIn.h
  function namespace (line 12) | namespace NArchive {
  function Clear (line 44) | struct CDatabase
  function GetCompressedSizeOfBlock (line 69) | struct CResetTable
  function UInt64 (line 90) | UInt64 GetNumBlocks(UInt64 size) const
  type CLzxInfo (line 96) | struct CLzxInfo
  function UInt64 (line 116) | UInt64 GetFolder(UInt64 offset) const { return offset / GetFolderSize(); }
  function UInt64 (line 117) | UInt64 GetFolderPos(UInt64 folderIndex) const { return folderIndex * Get...
  function UInt64 (line 118) | UInt64 GetBlockIndexFromFolderIndex(UInt64 folderIndex) const { return f...
  function GetOffsetOfFolder (line 119) | bool GetOffsetOfFolder(UInt64 folderIndex, UInt64 &offset) const
  function GetCompressedSizeOfFolder (line 127) | bool GetCompressedSizeOfFolder(UInt64 folderIndex, UInt64 &size) const
  type CMethodInfo (line 134) | struct CMethodInfo
  type CSectionInfo (line 145) | struct CSectionInfo
  function class (line 158) | class CFilesDatabase: public CDatabase
  function class (line 203) | class CProgressVirt
  function class (line 210) | class CInArchive

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Chm/ChmRegister.cpp
  function IInArchive (line 8) | static IInArchive *CreateArc() { return new NArchive::NChm::CHandler;  }

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Com/ComHandler.cpp
  type NArchive (line 10) | namespace NArchive {
    type NCom (line 11) | namespace NCom {
      function IMP_IInArchive_Props (line 30) | IMP_IInArchive_Props
      function STDMETHODIMP (line 46) | STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROP...
      function STDMETHODIMP (line 88) | STDMETHODIMP CHandler::Open(IInStream *inStream,
      function STDMETHODIMP (line 105) | STDMETHODIMP CHandler::Close()
      function STDMETHODIMP (line 112) | STDMETHODIMP CHandler::Extract(const UInt32* indices, UInt32 numItems,
      function STDMETHODIMP (line 233) | STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Com/ComHandler.h
  function namespace (line 10) | namespace NArchive {

FILE: app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Com/ComIn.cpp
  type NArchive (line 18) | namespace NArchive{
    type NCom (line 19) | namespace NCom{
      function HRESULT (line 42) | static HRESULT ReadSector(IInStream *inStream, Byte *buf, int sector...
      function HRESULT (line 48) | static HRESULT ReadIDs(IInStream *inStream, Byte *buf, int sectorSiz...
      function GetFileTimeFromMem (line 57) | static void GetFileTimeFromMem(const Byte *p, FILETIME *ft)
      function ReadItem (line 63) | static void ReadItem(Byte *p, CItem &item, bool mode64bit)
      function HRESULT (line 82) | HRESULT CDatabase::AddNode(int parent, UInt32 did)
      function UString (line 109) | UString DWORDToString(UInt32 val)
      function UString (line 116) | static UString CompoundNameToFileName(const UString &s)
      function CompoundMsiNameToFileName (line 145) | bool CompoundMsiNameToFileName(cons
Copy disabled (too large) Download .json
Condensed preview — 1931 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,227K chars).
[
  {
    "path": ".gitignore",
    "chars": 663,
    "preview": "# Built application files\r\n/*/build/\r\napp/src/main/libs\r\napp/src/main/objs\r\nbuild/\r\n\r\n# Crashlytics configuations\r\ncom_c"
  },
  {
    "path": ".idea/gradle.xml",
    "chars": 687,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GradleSettings\">\n    <option name=\"linke"
  },
  {
    "path": ".idea/runConfigurations.xml",
    "chars": 564,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"RunConfigurationProducerService\">\n    <o"
  },
  {
    "path": "LICENSE",
    "chars": 35141,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 319,
    "preview": "# nds4droid\nnds4droid is a free (including ad-free) open source Nintendo DS emulator for Android smartphones. It is base"
  },
  {
    "path": "app/build.gradle",
    "chars": 661,
    "preview": "apply plugin: 'com.android.application'\r\n\r\nandroid {\r\n    compileSdkVersion 10\r\n    buildToolsVersion \"23.0.2\"\r\n\r\n    de"
  },
  {
    "path": "app/lint.xml",
    "chars": 53,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<lint>\n</lint>"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 2270,
    "preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\r\n    package=\"com.opendoorstudios.ds4droid\"\r\n    an"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/About.java",
    "chars": 1446,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\nimport android.app.Activity;\r\nimport android.content.pm.PackageManager.NameNotF"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/Button.java",
    "chars": 9149,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/ButtonLayoutEditor.java",
    "chars": 6683,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\n\r\nimport android.app.Ac"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/Cheats.java",
    "chars": 5400,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\nimport android.app.Activity;\r\nimport android.app.AlertDialog;\r\nimport android.a"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/Controls.java",
    "chars": 14516,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/DeSmuME.java",
    "chars": 4235,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\n\tCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\n\tThis file is free software: you c"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/EmulatorThread.java",
    "chars": 5363,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/FileDialog.java",
    "chars": 7300,
    "preview": "package com.opendoorstudios.ds4droid;\n\n/*\n\tCopyright (C) 2012 Jeffrey Quesnelle\n\n\tThis file is free software: you can re"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/KeyMapPreference.java",
    "chars": 10633,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n\r\nimport android.content.Context;\r\nimport android.preference.DialogPreference;\r"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/KeyMapSettings.java",
    "chars": 1008,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/MainActivity.java",
    "chars": 26923,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\n\tCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\n\tThis file is free software: you c"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/CollectionActivity.java",
    "chars": 7067,
    "preview": "package com.opendoorstudios.ds4droid.NDSScanner;\n\nimport android.app.Activity;\nimport android.app.AlertDialog;\nimport an"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/NdsRom.java",
    "chars": 8958,
    "preview": "package com.opendoorstudios.ds4droid.NDSScanner;\n\nimport android.graphics.Bitmap;\nimport android.graphics.Canvas;\nimport"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomCollection.java",
    "chars": 7509,
    "preview": "package com.opendoorstudios.ds4droid.NDSScanner;\n\nimport android.content.ContentValues;\nimport android.content.Context;\n"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/NDSScanner/RomDatabaseHelper.java",
    "chars": 1353,
    "preview": "package com.opendoorstudios.ds4droid.NDSScanner;\n\nimport android.content.Context;\nimport android.database.sqlite.SQLiteD"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/Settings.java",
    "chars": 12480,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/SliderPreference.java",
    "chars": 2315,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\nimport android.content.Context;\r\nimport android.preference.DialogPreference;\r\ni"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/TransparencyPreference.java",
    "chars": 3179,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\nCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\nThis file is free software: you can"
  },
  {
    "path": "app/src/main/java/com/opendoorstudios/ds4droid/ds4droidApplication.java",
    "chars": 892,
    "preview": "package com.opendoorstudios.ds4droid;\r\n\r\n/*\r\n\tCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\n\tThis file is free software: you c"
  },
  {
    "path": "app/src/main/jni/Android.mk",
    "chars": 399,
    "preview": "# Android ndk makefile for ds4droid\r\n\r\nLOCAL_BUILD_PATH := $(call my-dir)\r\n\r\ninclude $(CLEAR_VARS)\r\n\r\ninclude $(LOCAL_BU"
  },
  {
    "path": "app/src/main/jni/Application.mk",
    "chars": 1569,
    "preview": "# Android ndk makefile for nds4droid\r\n\r\nAPP_STL := gnustl_static\r\nAPP_ABI := armeabi armeabi-v7a x86\r\n\r\n# For releases\r\n"
  },
  {
    "path": "app/src/main/jni/android-ndk-profiler/Android.mk",
    "chars": 741,
    "preview": "TARGET_thumb_release_CFLAGS := $(filter-out -ffunction-sections,$(TARGET_thumb_release_CFLAGS))\nTARGET_thumb_release_CFL"
  },
  {
    "path": "app/src/main/jni/android-ndk-profiler/prof.h",
    "chars": 515,
    "preview": "/*\n * Part of the android-ndk-profiler library.\n * Copyright (C) Richard Quirk\n *\n * This library is free software: you "
  },
  {
    "path": "app/src/main/jni/cpudetect/cpu.cpp",
    "chars": 1482,
    "preview": "/*\r\n\tCopyright (C) 2012 Jeffrey Quesnelle\r\n\r\n\tThis file is free software: you can redistribute it and/or modify\r\n\tit und"
  },
  {
    "path": "app/src/main/jni/cpudetect/cpudetect.mk",
    "chars": 404,
    "preview": "# Android ndk makefile for cpudetect\r\n\r\nLOCAL_PATH := $(call my-dir)\r\n\r\nMY_LOCAL_PATH := $(LOCAL_PATH)\r\n\r\ninclude $(CLEA"
  },
  {
    "path": "app/src/main/jni/desmume/AUTHORS",
    "chars": 641,
    "preview": "Original author\r\n---------------\r\nyopyop\r\n\r\nCurrent team\r\n------------\r\nGuillaume Duhamel\r\nNormmatt\r\nBernat Muoz (shash)"
  },
  {
    "path": "app/src/main/jni/desmume/COPYING",
    "chars": 17992,
    "preview": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
  },
  {
    "path": "app/src/main/jni/desmume/ChangeLog",
    "chars": 32541,
    "preview": "0.9.7 -> 0.9.8 (r3812-r4228)\n\nYes, it's been a while since the last release, but we haven't been completely idle. There'"
  },
  {
    "path": "app/src/main/jni/desmume/INSTALL",
    "chars": 15744,
    "preview": "Installation Instructions\n*************************\n\nCopyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundat"
  },
  {
    "path": "app/src/main/jni/desmume/Makefile.am",
    "chars": 146,
    "preview": "EXTRA_DIST = README.LIN README.MAC README.WIN dsm.txt dsv.txt autogen.sh \\\n\t\t$(PO_FILES_IN)\nDISTCLEANFILES = $(PO_FILES)"
  },
  {
    "path": "app/src/main/jni/desmume/Makefile.in",
    "chars": 25490,
    "preview": "# Makefile.in generated by automake 1.11.5 from Makefile.am.\n# @configure_input@\n\n# Copyright (C) 1994, 1995, 1996, 1997"
  },
  {
    "path": "app/src/main/jni/desmume/NEWS",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/src/main/jni/desmume/README",
    "chars": 3862,
    "preview": "                                       DeSmuME\n                      _________________________________________\n         "
  },
  {
    "path": "app/src/main/jni/desmume/README.LIN",
    "chars": 6011,
    "preview": "                        DeSmuME\n        _________________________________________\n        Copyright (C) 2006 yopyop\n    "
  },
  {
    "path": "app/src/main/jni/desmume/README.MAC",
    "chars": 11929,
    "preview": "                                       DeSmuME\n                      _________________________________________\n         "
  },
  {
    "path": "app/src/main/jni/desmume/README.WIN",
    "chars": 81765,
    "preview": "Manual\r\nFrom DeSmuME\r\nJump to: navigation, search\r\nContents\r\n[hide]\r\n\r\n    * 1 DeSmuME Platform Specific Manuals\r\n    * "
  },
  {
    "path": "app/src/main/jni/desmume/aclocal.m4",
    "chars": 68348,
    "preview": "# generated automatically by aclocal 1.11.5 -*- Autoconf -*-\n\n# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, "
  },
  {
    "path": "app/src/main/jni/desmume/autogen.sh",
    "chars": 374,
    "preview": "#!/bin/sh\n# intltoolize is optionnal as it's only required for the gtk-glade UI.\n\nif test ! \"x$(which intltoolize)\" = \"x"
  },
  {
    "path": "app/src/main/jni/desmume/compile",
    "chars": 3707,
    "preview": "#! /bin/sh\n# Wrapper for compilers which do not understand `-c -o'.\n\nscriptversion=2005-05-14.22\n\n# Copyright (C) 1999, "
  },
  {
    "path": "app/src/main/jni/desmume/config.guess",
    "chars": 44826,
    "preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,"
  },
  {
    "path": "app/src/main/jni/desmume/config.sub",
    "chars": 35454,
    "preview": "#! /bin/sh\n# Configuration validation subroutine script.\n#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 199"
  },
  {
    "path": "app/src/main/jni/desmume/configure",
    "chars": 303026,
    "preview": "#! /bin/sh\n# Guess values for system-dependent variables and create Makefiles.\n# Generated by GNU Autoconf 2.68 for desm"
  },
  {
    "path": "app/src/main/jni/desmume/configure.ac",
    "chars": 12096,
    "preview": "dnl --- Package name is first argument to AC_INIT\ndnl --- Release version is second argument to AC_INIT\n\nAC_INIT(desmume"
  },
  {
    "path": "app/src/main/jni/desmume/depcomp",
    "chars": 20899,
    "preview": "#! /bin/sh\n# depcomp - compile a program generating dependencies as side-effects\n\nscriptversion=2012-03-27.16; # UTC\n\n# "
  },
  {
    "path": "app/src/main/jni/desmume/dsm.txt",
    "chars": 4449,
    "preview": "DSM is ascii plain text. It is derived from the FCEUX FM2 format.\r\nIt consists of several key-value pairs followed by an"
  },
  {
    "path": "app/src/main/jni/desmume/dsv.txt",
    "chars": 1792,
    "preview": "The desmume save file format is merely a raw save file with a FOOTER.\r\n\r\nThis was chosen in order to maximize compatibil"
  },
  {
    "path": "app/src/main/jni/desmume/install-sh",
    "chars": 13998,
    "preview": "#!/bin/sh\n# install - install a program, script, or datafile\n\nscriptversion=2011-01-19.21; # UTC\n\n# This originates from"
  },
  {
    "path": "app/src/main/jni/desmume/missing",
    "chars": 10346,
    "preview": "#! /bin/sh\n# Common stub for a few missing GNU programs while installing.\n\nscriptversion=2012-01-06.13; # UTC\n\n# Copyrig"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmAnalyze.cpp",
    "chars": 116083,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmAnalyze.h",
    "chars": 5987,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmAnalyze_tabdef.inc",
    "chars": 1969,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2007-2012 DeSmuME team\n\tThis file is free software: you can redistribute it"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmCJit.cpp",
    "chars": 113445,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmCJit.h",
    "chars": 1121,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmLJit.cpp",
    "chars": 171350,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmLJit.h",
    "chars": 775,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmThreadedInterpreter.cpp",
    "chars": 200741,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/ArmThreadedInterpreter.h",
    "chars": 2055,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/CpuBase.cpp",
    "chars": 718,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/CpuBase.h",
    "chars": 1064,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/Disassembler.cpp",
    "chars": 111560,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2012 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/Disassembler.h",
    "chars": 951,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2009 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/FIFO.cpp",
    "chars": 9017,
    "preview": "/*\n\tCopyright 2006 yopyop\n\tCopyright 2007 shash\n\tCopyright 2007-2012 DeSmuME team\n\n\tThis file is free software: you can "
  },
  {
    "path": "app/src/main/jni/desmume/src/FIFO.h",
    "chars": 2268,
    "preview": "/*\n\tCopyright 2006 yopyop\n\tCopyright 2007 shash\n\tCopyright 2007-2011 DeSmuME team\n\n\tThis file is free software: you can "
  },
  {
    "path": "app/src/main/jni/desmume/src/GPU.cpp",
    "chars": 82186,
    "preview": "/*\r\n\tCopyright (C) 2006 yopyop\r\n\tCopyright (C) 2006-2007 Theo Berkau\r\n\tCopyright (C) 2007 shash\r\n\tCopyright (C) 2008-201"
  },
  {
    "path": "app/src/main/jni/desmume/src/GPU.h",
    "chars": 29655,
    "preview": "/*\r\n\tCopyright (C) 2006 yopyop\r\n\tCopyright (C) 2006-2007 Theo Berkau\r\n\tCopyright (C) 2007 shash\r\n\tCopyright (C) 2009-201"
  },
  {
    "path": "app/src/main/jni/desmume/src/GPU_osd.cpp",
    "chars": 20565,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2011 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/GPU_osd.h",
    "chars": 2774,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2008-2012 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/GPU_osd_stub.cpp",
    "chars": 951,
    "preview": "/*\n\tCopyright (C) 2010 DeSmumE team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under the te"
  },
  {
    "path": "app/src/main/jni/desmume/src/JitCommon.cpp",
    "chars": 29878,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/JitCommon.h",
    "chars": 8004,
    "preview": "/*\n\tCopyright (C) 2008-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/MMU.cpp",
    "chars": 140974,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2007 shash\n\tCopyright (C) 2007-2012 DeSmuME team\n\n\tThis file is free softwa"
  },
  {
    "path": "app/src/main/jni/desmume/src/MMU.h",
    "chars": 28873,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2007 shash\n\tCopyright (C) 2007-2012 DeSmuME team\n\n\tThis file is free softwa"
  },
  {
    "path": "app/src/main/jni/desmume/src/MMU_timing.h",
    "chars": 13958,
    "preview": " /*\r\n\tCopyright (C) 2006 yopyop\r\n\tCopyright (C) 2007 shash\r\n\tCopyright (C) 2007-2011 DeSmuME team\r\n\r\n\tThis file is free "
  },
  {
    "path": "app/src/main/jni/desmume/src/Makefile.am",
    "chars": 3844,
    "preview": "include $(top_srcdir)/src/desmume.mk\n\nAM_CPPFLAGS += $(SDL_CFLAGS) $(GTHREAD_CFLAGS) $(X_CFLAGS) $(ALSA_CFLAGS) $(LIBAGG"
  },
  {
    "path": "app/src/main/jni/desmume/src/Makefile.in",
    "chars": 111988,
    "preview": "# Makefile.in generated by automake 1.11.5 from Makefile.am.\n# @configure_input@\n\n# Copyright (C) 1994, 1995, 1996, 1997"
  },
  {
    "path": "app/src/main/jni/desmume/src/NDSSystem.cpp",
    "chars": 88585,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/NDSSystem.h",
    "chars": 15398,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free software: you can redistribute i"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLES2Render.cpp",
    "chars": 49116,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLES2Render.h",
    "chars": 11574,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLRender.cpp",
    "chars": 101513,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLRender.h",
    "chars": 25351,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLRender_3_2.cpp",
    "chars": 17820,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/OGLRender_3_2.h",
    "chars": 2784,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006-2007 shash\n\tCopyright (C) 2008-2013 DeSmuME team\n\n\tThis file is free s"
  },
  {
    "path": "app/src/main/jni/desmume/src/PACKED.h",
    "chars": 199,
    "preview": "#ifndef __GNUC__\n#pragma pack(push, 1)\n#pragma warning(disable : 4103)\n#endif\n\n#ifndef __PACKED\n\t#ifdef __GNUC__\n\t#defin"
  },
  {
    "path": "app/src/main/jni/desmume/src/PACKED_END.h",
    "chars": 42,
    "preview": "#ifndef __GNUC__\n#pragma pack(pop)\n#endif\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/ROMReader.cpp",
    "chars": 4993,
    "preview": "/*\n\tCopyright 2007 Guillaume Duhamel\n\tCopyright 2007-2012 DeSmuME team\n\n\tThis file is free software: you can redistribut"
  },
  {
    "path": "app/src/main/jni/desmume/src/ROMReader.h",
    "chars": 1372,
    "preview": "/*\n\tCopyright (C) 2007 Guillaume Duhamel\n\tCopyright (C) 2007 DeSmuME team\n\n\tThis file is free software: you can redistri"
  },
  {
    "path": "app/src/main/jni/desmume/src/SPU.cpp",
    "chars": 49818,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006 Theo Berkau\n\tCopyright (C) 2008-2012 DeSmuME team\n\n\tIdeas borrowed fro"
  },
  {
    "path": "app/src/main/jni/desmume/src/SPU.h",
    "chars": 6191,
    "preview": "/*\n\tCopyright 2006 Theo Berkau\n\tCopyright (C) 2006-2010 DeSmuME team\n\n\tThis file is free software: you can redistribute "
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot1_none.cpp",
    "chars": 1687,
    "preview": "/*  Copyright (C) 2010-2011 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can re"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot1_r4.cpp",
    "chars": 4970,
    "preview": "/*  Copyright (C) 2010-2011 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can re"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot1_retail.cpp",
    "chars": 6992,
    "preview": "/*  Copyright (C) 2010-2011 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can re"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot1_retail_nand.cpp",
    "chars": 5009,
    "preview": "/*  Copyright (C) 2011 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can redistr"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_expMemory.cpp",
    "chars": 4145,
    "preview": "/*  Copyright (C) 2009-2010 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can re"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_gbagame.cpp",
    "chars": 9482,
    "preview": "/*  Copyright (C) 2009 CrazyMax\n\tCopyright (C) 2009 DeSmuME team\n\n    This file is part of DeSmuME\n\n    DeSmuME is free "
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_guitarGrip.cpp",
    "chars": 2361,
    "preview": "/*  Copyright (C) 2009-2010 DeSmuME team\r\n\r\n    This file is part of DeSmuME\r\n\r\n    DeSmuME is free software; you can re"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_mpcf.cpp",
    "chars": 6670,
    "preview": "/*\n\tCopyright (C) 2006 yopyop\n\tCopyright (C) 2006 Mic\n\tCopyright (C) 2009-2011 DeSmuME team\n\n\tThis file is part of DeSmu"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_none.cpp",
    "chars": 1679,
    "preview": "/*  Copyright (C) 2009 CrazyMax\n\tCopyright (C) 2009 DeSmuME team\n\n    This file is part of DeSmuME\n\n    DeSmuME is free "
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_paddle.cpp",
    "chars": 3816,
    "preview": "/*\tCopyright (C) 2011 DeSmuME team\r\n\r\n\tThis file is free software: you can redistribute it and/or modify\r\n\tit under the "
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_piano.cpp",
    "chars": 3579,
    "preview": "/*  Copyright (C) 2010-2011 DeSmuME team\r\n\r\n\tThis file is free software: you can redistribute it and/or modify\r\n\tit unde"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons/slot2_rumblepak.cpp",
    "chars": 2289,
    "preview": "/*  Copyright (C) 2009-2010 DeSmuME team\n\n    This file is part of DeSmuME\n\n    DeSmuME is free software; you can redist"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons.cpp",
    "chars": 1917,
    "preview": "/*\n\tCopyright (C) 2009-2012 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/addons.h",
    "chars": 3074,
    "preview": "/*\n\tCopyright (C) 2009-2011 DeSmuME team\n\n\tThis file is free software: you can redistribute it and/or modify\n\tit under t"
  },
  {
    "path": "app/src/main/jni/desmume/src/agg2d.h",
    "chars": 28881,
    "preview": "//----------------------------------------------------------------------------\r\n// Agg2D - Version 1.0\r\n// Based on Anti"
  },
  {
    "path": "app/src/main/jni/desmume/src/agg2d.inl",
    "chars": 66485,
    "preview": "//----------------------------------------------------------------------------\r\n// Agg2D - Version 1.0\r\n// Based on Anti"
  },
  {
    "path": "app/src/main/jni/desmume/src/aggdraw.cpp",
    "chars": 23560,
    "preview": "/*\r\nThe MIT License\r\n\r\nCopyright (C) 2009-2010 DeSmuME team\r\n\r\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "app/src/main/jni/desmume/src/aggdraw.h",
    "chars": 31409,
    "preview": "/*\r\nThe MIT License\r\n\r\nCopyright (C) 2009-2010 DeSmuME team\r\n\r\nPermission is hereby granted, free of charge, to any pers"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/7z.mk",
    "chars": 5553,
    "preview": "# Android ndk makefile for p7zip https://sourceforge.net/projects/p7zip/\r\n\r\nLOCAL_PATH := $(call my-dir)\r\n\r\nMY_LOCAL_PAT"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/Asm/x64/7zCrcT8U.asm",
    "chars": 1579,
    "preview": "\r\n\r\nglobal CrcUpdateT8:function\r\nglobal _CrcUpdateT8:function\r\n\r\nSECTION .text\r\n\r\n%macro CRC1b 0\r\n    movzx EDX, BYTE [R"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/Asm/x86/7zCrcT8U.asm",
    "chars": 1713,
    "preview": "\r\nSECTION .text\r\n\r\n%macro CRC1b 0\r\n    movzx EDX, BYTE [ESI]\r\n    inc ESI\r\n    movzx EBX, AL\r\n    xor EDX, EBX\r\n    shr "
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/7zCrc.c",
    "chars": 683,
    "preview": "/* 7zCrc.c -- CRC32 calculation\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#include \"7zCrc.h\"\n\n#define kCrcPoly 0xEDB88320"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/7zCrc.h",
    "chars": 531,
    "preview": "/* 7zCrc.h -- CRC32 calculation\n2008-03-13\nIgor Pavlov\nPublic domain */\n\n#ifndef __7Z_CRC_H\n#define __7Z_CRC_H\n\n#include"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/7zCrcT8.c",
    "chars": 953,
    "preview": "/* 7zCrcT8.c -- CRC32 calculation with 8 tables\n2008-03-19\nIgor Pavlov\nPublic domain */\n\n#include \"7zCrc.h\"\n\n#define kCr"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/7zVersion.h",
    "chars": 254,
    "preview": "#define MY_VER_MAJOR 4\n#define MY_VER_MINOR 65\n#define MY_VER_BUILD 0\n#define MY_VERSION \"4.65\"\n#define MY_DATE \"2009-02"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Aes.c",
    "chars": 7625,
    "preview": "/* Aes.c -- AES encryption / decryption\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#include \"Aes.h\"\n#include \"CpuArch.h\"\n\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Aes.h",
    "chars": 1317,
    "preview": "/* Aes.h -- AES encryption / decryption\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#ifndef __AES_H\n#define __AES_H\n\n#inclu"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Alloc.h",
    "chars": 651,
    "preview": "/* Alloc.h -- Memory allocation functions\n2008-03-13\nIgor Pavlov\nPublic domain */\n\n#ifndef __COMMON_ALLOC_H\n#define __CO"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Bra.c",
    "chars": 3140,
    "preview": "/* Bra.c -- Converters for RISC code\n2008-10-04 : Igor Pavlov : Public domain */\n\n#include \"Bra.h\"\n\nSizeT ARM_Convert(By"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Bra.h",
    "chars": 1830,
    "preview": "/* Bra.h -- Branch converters for executables\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __BRA_H\n#define __BRA"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Bra86.c",
    "chars": 2184,
    "preview": "/* Bra86.c -- Converter for x86 code (BCJ)\n2008-10-04 : Igor Pavlov : Public domain */\n\n#include \"Bra.h\"\n\n#define Test86"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/BraIA64.c",
    "chars": 1748,
    "preview": "/* BraIA64.c -- Converter for IA-64 code\n2008-10-04 : Igor Pavlov : Public domain */\n\n#include \"Bra.h\"\n\nstatic const Byt"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/BwtSort.c",
    "chars": 12776,
    "preview": "/* BwtSort.c -- BWT block sorting\n2008-08-17\nIgor Pavlov\nPublic domain */\n\n#include \"BwtSort.h\"\n#include \"Sort.h\"\n\n/* #d"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/BwtSort.h",
    "chars": 590,
    "preview": "/* BwtSort.h -- BWT block sorting\n2008-03-26\nIgor Pavlov\nPublic domain */\n\n#ifndef __BWTSORT_H\n#define __BWTSORT_H\n\n#inc"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/CpuArch.h",
    "chars": 1949,
    "preview": "/* CpuArch.h\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#ifndef __CPUARCH_H\n#define __CPUARCH_H\n\n/*\nLITTLE_ENDIAN_UNALIGN "
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/HuffEnc.c",
    "chars": 3383,
    "preview": "/* HuffEnc.c -- functions for Huffman encoding\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#include \"HuffEnc.h\"\n#include \"S"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/HuffEnc.h",
    "chars": 406,
    "preview": "/* HuffEnc.h -- functions for Huffman encoding\n2008-03-26\nIgor Pavlov\nPublic domain */\n\n#ifndef __HUFFENC_H\n#define __HU"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzFind.c",
    "chars": 19493,
    "preview": "/* LzFind.c -- Match finder for LZ algorithms\n2008-10-04 : Igor Pavlov : Public domain */\n\n#include <string.h>\n\n#include"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzFind.h",
    "chars": 3220,
    "preview": "/* LzFind.h -- Match finder for LZ algorithms\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __LZFIND_H\n#define __"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzFindMt.c",
    "chars": 22129,
    "preview": "/* LzFindMt.c -- multithreaded Match finder for LZ algorithms\n2008-10-04 : Igor Pavlov : Public domain */\n\n#include \"LzH"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzFindMt.h",
    "chars": 2368,
    "preview": "/* LzFindMt.h -- multithreaded Match finder for LZ algorithms\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __LZF"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzHash.h",
    "chars": 1962,
    "preview": "/* LzHash.h -- HASH functions for LZ algorithms\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __LZHASH_H\n#define "
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaDec.c",
    "chars": 27409,
    "preview": "/* LzmaDec.c -- LZMA Decoder\n2008-11-06 : Igor Pavlov : Public domain */\n\n#include \"LzmaDec.h\"\n\n#include <string.h>\n\n#de"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaDec.h",
    "chars": 6794,
    "preview": "/* LzmaDec.h -- LZMA Decoder\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __LZMADEC_H\n#define __LZMADEC_H\n\n#incl"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaEnc.c",
    "chars": 62865,
    "preview": "/* LzmaEnc.c -- LZMA Encoder\n2009-02-02 : Igor Pavlov : Public domain */\n\n#include <string.h>\n\n/* #define SHOW_STAT */\n/"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaEnc.h",
    "chars": 2834,
    "preview": "/*  LzmaEnc.h -- LZMA Encoder\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __LZMAENC_H\n#define __LZMAENC_H\n\n#inc"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Dec.c",
    "chars": 1528,
    "preview": "/* Lzma86Dec.c -- LZMA + x86 (BCJ) Filter Decoder\n2008-04-07\nIgor Pavlov\nPublic domain */\n\n#include \"Lzma86Dec.h\"\n\n#incl"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Dec.h",
    "chars": 1003,
    "preview": "/* Lzma86Dec.h -- LZMA + x86 (BCJ) Filter Decoder\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#ifndef __LZMA86DEC_H\n#define"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Enc.c",
    "chars": 2883,
    "preview": "/* Lzma86Enc.c -- LZMA + x86 (BCJ) Filter Encoder\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#include <string.h>\n\n#include"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/LzmaUtil/Lzma86Enc.h",
    "chars": 2197,
    "preview": "/* Lzma86Enc.h -- LZMA + x86 (BCJ) Filter Encoder\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#ifndef __LZMA86ENC_H\n#define"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/RotateDefs.h",
    "chars": 387,
    "preview": "/* RotateDefs.h -- Rotate functions\n2008-08-05\nIgor Pavlov\nPublic domain */\n\n#ifndef __ROTATEDEFS_H\n#define __ROTATEDEFS"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Sha256.c",
    "chars": 5000,
    "preview": "/* Crypto/Sha256.c -- SHA-256 Hash function\n2008-11-06 : Igor Pavlov : Public domain\nThis code is based on public domain"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Sha256.h",
    "chars": 422,
    "preview": "/* Crypto/Sha256.h -- SHA-256 Hash function\n2008-10-04 : Igor Pavlov : Public domain */\n\n#ifndef __CRYPTO_SHA256_H\n#defi"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Sort.c",
    "chars": 1706,
    "preview": "/* Sort.c -- Sort functions\n2008-08-17\nIgor Pavlov\nPublic domain */\n\n#include \"Sort.h\"\n\n#define HeapSortDown(p, k, size,"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Sort.h",
    "chars": 239,
    "preview": "/* Sort.h -- Sort functions\n2008-03-19\nIgor Pavlov\nPublic domain */\n\n#ifndef __7Z_SORT_H\n#define __7Z_SORT_H\n\n#include \""
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Threads.c",
    "chars": 14422,
    "preview": "/* Threads.c */\n\n#include \"Threads.h\"\n\n#ifdef ENV_BEOS\n#include <kernel/OS.h>\n#else\n#include <pthread.h>\n#include <stdli"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Threads.h",
    "chars": 3035,
    "preview": "/* Threads.h -- multithreading library\n2008-11-22 : Igor Pavlov : Public domain */\n\n#ifndef __7Z_THRESDS_H\n#define __7Z_"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/C/Types.h",
    "chars": 4665,
    "preview": "/* Types.h -- Basic types\n2008-11-23 : Igor Pavlov : Public domain */\n\n#ifndef __7Z_TYPES_H\n#define __7Z_TYPES_H\n\n#inclu"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zCompressionMode.cpp",
    "chars": 46,
    "preview": "// CompressionMethod.cpp\n\n#include \"StdAfx.h\"\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zCompressionMode.h",
    "chars": 924,
    "preview": "// 7zCompressionMode.h\n\n#ifndef __7Z_COMPRESSION_MODE_H\n#define __7Z_COMPRESSION_MODE_H\n\n#include \"../../../Common/MyStr"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zDecode.cpp",
    "chars": 9970,
    "preview": "// 7zDecode.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/LimitedStreams.h\"\n#include \"../../Common/LockedStream.h\"\n#i"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zDecode.h",
    "chars": 1459,
    "preview": "// 7zDecode.h\n\n#ifndef __7Z_DECODE_H\n#define __7Z_DECODE_H\n\n#include \"../../IStream.h\"\n#include \"../../IPassword.h\"\n\n#in"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zEncode.cpp",
    "chars": 13760,
    "preview": "// Encode.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zEncode.h\"\n#include \"7zSpecStream.h\"\n\n#include \"../../IPassword.h\"\n#inclu"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zEncode.h",
    "chars": 1288,
    "preview": "// 7zEncode.h\n\n#ifndef __7Z_ENCODE_H\n#define __7Z_ENCODE_H\n\n// #include \"../../Common/StreamObjects.h\"\n\n#include \"7zComp"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zExtract.cpp",
    "chars": 7161,
    "preview": "// 7zExtract.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zHandler.h\"\n#include \"7zFolderOutStream.h\"\n#include \"7zDecode.h\"\n// #i"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderInStream.cpp",
    "chars": 3043,
    "preview": "// 7zFolderInStream.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zFolderInStream.h\"\n\nnamespace NArchive {\nnamespace N7z {\n\nCFold"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderInStream.h",
    "chars": 1372,
    "preview": "// 7z/FolderInStream.h\n\n#ifndef __7Z_FOLDERINSTREAM_H\n#define __7Z_FOLDERINSTREAM_H\n\n#include \"7zItem.h\"\n#include \"7zHea"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderOutStream.cpp",
    "chars": 4347,
    "preview": "// 7zFolderOutStream.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zFolderOutStream.h\"\n\nnamespace NArchive {\nnamespace N7z {\n\nCFo"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zFolderOutStream.h",
    "chars": 1273,
    "preview": "// 7zFolderOutStream.h\n\n#ifndef __7Z_FOLDEROUTSTREAM_H\n#define __7Z_FOLDEROUTSTREAM_H\n\n#include \"7zIn.h\"\n\n#include \"../."
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandler.cpp",
    "chars": 12795,
    "preview": "// 7zHandler.cpp\n\n#include \"StdAfx.h\"\n\nextern \"C\"\n{\n  #include \"../../../../C/CpuArch.h\"\n}\n\n#include \"../../../Common/Co"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandler.h",
    "chars": 2154,
    "preview": "// 7z/Handler.h\n\n#ifndef __7Z_HANDLER_H\n#define __7Z_HANDLER_H\n\n#include \"../../ICoder.h\"\n#include \"../IArchive.h\"\n#incl"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHandlerOut.cpp",
    "chars": 12460,
    "preview": "// 7zHandlerOut.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../../Windows/PropVariant.h\"\n\n#include \"../../../Common/ComTry.h\""
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHeader.cpp",
    "chars": 460,
    "preview": "// 7z/Header.cpp\n\n#include \"StdAfx.h\"\n#include \"7zHeader.h\"\n\nnamespace NArchive {\nnamespace N7z {\n\nByte kSignature[kSign"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zHeader.h",
    "chars": 1449,
    "preview": "// 7z/7zHeader.h\n\n#ifndef __7Z_HEADER_H\n#define __7Z_HEADER_H\n\n#include \"../../../Common/Types.h\"\n\nnamespace NArchive {\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zIn.cpp",
    "chars": 31488,
    "preview": "// 7zIn.cpp\n\n#include \"StdAfx.h\"\n\nextern \"C\"\n{\n  #include \"../../../../C/7zCrc.h\"\n  #include \"../../../../C/CpuArch.h\"\n}"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zIn.h",
    "chars": 6469,
    "preview": "// 7zIn.h\n\n#ifndef __7Z_IN_H\n#define __7Z_IN_H\n\n#include \"../../../Common/MyCom.h\"\n\n#include \"../../IPassword.h\"\n#includ"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zItem.h",
    "chars": 5327,
    "preview": "// 7zItem.h\n\n#ifndef __7Z_ITEM_H\n#define __7Z_ITEM_H\n\n#include \"../../../Common/Buffer.h\"\n#include \"../../../Common/MySt"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zOut.cpp",
    "chars": 21069,
    "preview": "// 7zOut.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../../Common/AutoPtr.h\"\n#include \"../../Common/StreamObjects.h\"\n\n#includ"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zOut.h",
    "chars": 4014,
    "preview": "// 7z/Out.h\n\n#ifndef __7Z_OUT_H\n#define __7Z_OUT_H\n\n#include \"7zHeader.h\"\n#include \"7zItem.h\"\n#include \"7zCompressionMod"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zProperties.cpp",
    "chars": 4093,
    "preview": "// 7zProperties.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zProperties.h\"\n#include \"7zHeader.h\"\n#include \"7zHandler.h\"\n\n// #de"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zProperties.h",
    "chars": 271,
    "preview": "// 7zProperties.h\n\n#ifndef __7Z_PROPERTIES_H\n#define __7Z_PROPERTIES_H\n\n#include \"../../PropID.h\"\n\nnamespace NArchive {\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zRegister.cpp",
    "chars": 515,
    "preview": "// 7zRegister.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/RegisterArc.h\"\n\n#include \"7zHandler.h\"\nstatic IInArchive "
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zSpecStream.cpp",
    "chars": 602,
    "preview": "// 7zSpecStream.cpp\n\n#include \"StdAfx.h\"\n\n#include \"7zSpecStream.h\"\n\nSTDMETHODIMP CSequentialInStreamSizeCount2::Read(vo"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zSpecStream.h",
    "chars": 840,
    "preview": "// 7zSpecStream.h\n\n#ifndef __7Z_SPEC_STREAM_H\n#define __7Z_SPEC_STREAM_H\n\n#include \"../../IStream.h\"\n#include \"../../ICo"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zUpdate.cpp",
    "chars": 23744,
    "preview": "// 7zUpdate.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/LimitedStreams.h\"\n#include \"../../Common/ProgressUtils.h\"\n\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/7z/7zUpdate.h",
    "chars": 1567,
    "preview": "// 7zUpdate.h\n\n#ifndef __7Z_UPDATE_H\n#define __7Z_UPDATE_H\n\n#include \"7zIn.h\"\n#include \"7zOut.h\"\n#include \"7zCompression"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/ArchiveExports.cpp",
    "chars": 3733,
    "preview": "// ArchiveExports.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/ComTry.h\"\n#include \"../../Common/Types.h\"\n#include \"."
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/ArjHandler.cpp",
    "chars": 19662,
    "preview": "// ArjHandler.cpp\n\n#include \"StdAfx.h\"\n\n#include \"Common/ComTry.h\"\n#include \"Common/StringConvert.h\"\n\n#include \"Windows/"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Handler.cpp",
    "chars": 5052,
    "preview": "// BZip2Handler.cpp\n\n#include \"StdAfx.h\"\n\n#include \"Common/ComTry.h\"\n\n#include \"Windows/PropVariant.h\"\n\n#include \"../../"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Handler.h",
    "chars": 1315,
    "preview": "// BZip2/Handler.h\n\n#ifndef __BZIP2_HANDLER_H\n#define __BZIP2_HANDLER_H\n\n#include \"Common/MyCom.h\"\n#include \"../IArchive"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2HandlerOut.cpp",
    "chars": 3791,
    "preview": "// BZip2HandlerOut.cpp\n\n#include \"StdAfx.h\"\n\n#include \"BZip2Handler.h\"\n#include \"BZip2Update.h\"\n\n#include \"Common/Defs.h"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Item.h",
    "chars": 203,
    "preview": "// Archive/BZip2Item.h\n\n#ifndef __ARCHIVE_BZIP2_ITEM_H\n#define __ARCHIVE_BZIP2_ITEM_H\n\nnamespace NArchive {\nnamespace NB"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Update.cpp",
    "chars": 1935,
    "preview": "// BZip2Update.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/ProgressUtils.h\"\n#include \"../../Common/CreateCoder.h\"\n#"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/BZip2Update.h",
    "chars": 473,
    "preview": "// BZip2Update.h\n\n#ifndef __BZIP2_UPDATE_H\n#define __BZIP2_UPDATE_H\n\n#include \"../IArchive.h\"\n#include \"../../Common/Cre"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/BZip2/bz2Register.cpp",
    "chars": 513,
    "preview": "// BZip2Register.cpp\n\n#include \"StdAfx.h\"\n\n#include \"../../Common/RegisterArc.h\"\n\n#include \"BZip2Handler.h\"\nstatic IInAr"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabBlockInStream.cpp",
    "chars": 4073,
    "preview": "// CabBlockInStream.cpp\n\n#include \"StdAfx.h\"\n\nextern \"C\"\n{\n#include \"../../../../C/Alloc.h\"\n}\n\n#include \"Common/Defs.h\"\n"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabBlockInStream.h",
    "chars": 899,
    "preview": "// CabBlockInStream.cpp\n\n#ifndef __CABBLOCKINSTREAM_H\n#define __CABBLOCKINSTREAM_H\n\n#include \"Common/MyCom.h\"\n#include \""
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHandler.cpp",
    "chars": 23621,
    "preview": "// CabHandler.cpp\n\n#include \"StdAfx.h\"\n\n#include \"Common/ComTry.h\"\n#include \"Common/Defs.h\"\n#include \"Common/IntToString"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHandler.h",
    "chars": 356,
    "preview": "// CabHandler.h\n\n#ifndef __CAB_HANDLER_H\n#define __CAB_HANDLER_H\n\n#include \"Common/MyCom.h\"\n#include \"../IArchive.h\"\n#in"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHeader.cpp",
    "chars": 299,
    "preview": "// Archive/Cab/Header.h\n\n#include \"StdAfx.h\"\n\n#include \"CabHeader.h\"\n\nnamespace NArchive{\nnamespace NCab{\nnamespace NHea"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabHeader.h",
    "chars": 763,
    "preview": "// Archive/Cab/Header.h\n\n#ifndef __ARCHIVE_CAB_HEADER_H\n#define __ARCHIVE_CAB_HEADER_H\n\n#include \"Common/Types.h\"\n\nnames"
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabIn.cpp",
    "chars": 7107,
    "preview": "// Archive/CabIn.cpp\n\n#include \"StdAfx.h\"\n\n#include \"CabIn.h\"\n\n#include \"../Common/FindSignature.h\"\n\nnamespace NArchive "
  },
  {
    "path": "app/src/main/jni/desmume/src/android/7z/CPP/7zip/Archive/Cab/CabIn.h",
    "chars": 3853,
    "preview": "// Archive/CabIn.h\n\n#ifndef __ARCHIVE_CAB_IN_H\n#define __ARCHIVE_CAB_IN_H\n\n#include \"../../IStream.h\"\n#include \"../../Co"
  }
]

// ... and 1731 more files (download for full content)

About this extraction

This page contains the full source code of the jquesnelle/nds4droid GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1931 files (17.0 MB), approximately 4.6M tokens, and a symbol index with 14143 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!