SkyEmu Documentation

repository·dev·Indexed 22 days ago

https://github.com/skylersaleh/skyemu

A low-level emulator for Game Boy, Game Boy Color, Game Boy Advance, and DS systems. Documentation covers installation for desktop, mobile, and web platforms, default control configurations, BIOS and save file management, and instructions for building from source. The repository also includes technical details for integrated components such as the Capstone disassembly framework, cimgui C-API wrapper for Dear ImGui, and libcurl.

Tokens
310.8K
Snippets
842
Records
1.4K
Agent score
78%

What's inside SkyEmu

  1. Overview of the Capstone Disassembly Framework

    dev

    Capstone is a high-performance disassembly framework designed for binary analysis and reversing. It provides an architecture-neutral API to disassemble instructions across multiple hardware architectures and provides detailed semantics for each instruction.

    Key Features

    • Multi-Architecture Support: ARM, ARM64 (ARMv8), Ethereum VM, M68K, Mips, PPC, Sparc, SystemZ, TMS320C64X, M680X, XCore, and X86 (including X86_64).
    • Instruction Semantics: Provides details on disassembled instructions (decomposing) and lists implicit registers read and written.
    • Portability: Implemented in pure C with support for Windows, Mac OSX, iOS, Android, Linux, *BSD, Solaris, etc.
    • Security Focused: High performance and capable of handling various X86 malware tricks; thread-safe by design.
    • Embeddable: Special support for embedding into firmware or OS kernels.
  2. Overview of rcheevos

    dev

    rcheevos is a C library designed to help emulators process RetroAchievements data, including achievements, leaderboards, and rich presence.

    Important Constraints:

    • No Networking: The library does not handle HTTP network connections. The client (the emulator) is responsible for fetching data from RetroAchievements and passing the response to rcheevos for processing.
    • Lua Support: To enable Lua support for achievement triggers, you must compile with the HAVE_LUA flag. rcheevos does not manage the Lua state; you must create your own state and provide it to the library. Calls to rcheevos may allocate or free memory as part of the Lua runtime.
  3. Overview of Capstone disassembly framework

    dev

    Capstone is a high-performance disassembly framework designed for binary analysis and reversing. It is implemented in pure C and is thread-safe by design.

    Key Features:

    • Multi-Architecture Support: ARM, ARM64 (ARMv8), Mips, PPC, Sparc, SystemZ, XCore, and X86 (including X86_64).
    • Detailed Instruction Analysis: Provides instruction details and semantics, such as lists of implicit registers read and written.
    • Cross-Platform: Native support for Windows, Mac OSX, iOS, Android, Linux, *BSD, Solaris, etc.
    • Lightweight API: Architecture-neutral API with wrappers available for C++, C#, Go, Java, NodeJS, Ocaml, Python, Ruby, and Vala.
    • Security Focused: Capable of handling various X86 malware tricks and suitable for embedding into firmware or OS kernels.
    • License: Distributed under the BSD license.
  4. Capabilities of the curl tool

    dev

    The curl command-line tool supports several advanced features for data transfer, including:

    • Configuration: Support for config files.
    • Batching: Multiple URLs in a single command line and multiple file uploads.
    • Globbing: Range support such as [0-13] or {one,two,three}.
    • Performance: Custom maximum transfer rates and parallel transfers.
    • Output: Ability to redirect stderr.
  5. Email protocols (SMTP, POP3, IMAP)

    dev

    Curl provides comprehensive support for email protocols:

    SMTP / SMTPS

    • Authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5, and External.
    • Features: Send emails, mail from support, mail size support, and multiple recipients.
    • Security: SMTPS (implicit) or explicit "STARTTLS" to upgrade plain smtp:// connections.

    POP3 / POP3S

    • Authentication: Clear Text, APOP, and SASL (including Plain, Login, CRAM-MD5, Digest-MD5, NTLM, Kerberos 5, and External).
    • Operations: List and retrieve emails; enhanced command support for CAPA, DELE, TOP, STAT, UIDL, and NOOP.
    • Security: POP3S (implicit) or explicit STLS to upgrade plain pop3:// connections.

    IMAP / IMAPS

    • Authentication: Clear Text and SASL.
    • Operations: List folders, select mailbox (with UIDVALIDITY verification), fetch emails (specifying UID and SECTION), and upload emails via append.
    • Enhanced Commands: EXAMINE, CREATE, DELETE, RENAME, STATUS, STORE, COPY, and UID via custom requests.
    • Security: IMAPS (implicit) or explicit "STARTTLS" to upgrade plain imap:// connections.
  6. Secure file transfer (SCP and SFTP)

    dev

    Curl supports secure file transfers via SCP and SFTP:

    • SCP: Supports both password and public key authentication.
    • SFTP: Supports both password and public key authentication, and allows sending custom commands before or after the transfer (requires libssh2, libssh, or wolfSSH).
  7. FTP and FTPS features

    dev

    Curl supports standard FTP and secure FTPS transfers:

    FTP

    • Operations: Download, upload, upload append, and download/upload resume.
    • Directory Management: Dir listing and dir listing (names-only) with no depth limit.
    • Modes: Active/passive using PORT, EPRT, PASV, or EPSV.
    • Authentication: Supports Kerberos 5 (requires GSS-API implementation).
    • Proxying: All operations can be tunneled through HTTP, HTTPS, or SOCKS proxies; upload via HTTP proxy as HTTP PUT.

    FTPS

    • Implicit: ftps:// support using SSL on both connections.
    • Explicit: Uses "AUTH TLS" and "AUTH SSL" to upgrade plain ftp:// connections to use SSL.
  8. HTTP and HTTPS features

    dev

    Curl provides extensive support for HTTP and HTTPS protocols:

    HTTP

    • Versions: HTTP/0.9, HTTP/1.0, HTTP/1.1, and HTTP/2 (including multiplexing and server push, requires nghttp2).
    • Methods: GET, PUT, HEAD, POST, and multipart formpost (RFC 1867-style).
    • Authentication: Basic, Digest, NTLM, and Negotiate (SPNEGO) for both server and proxy (requires OpenSSL, GnuTLS, mbedTLS, Secure Transport, or SSPI).
    • Transfer Control: Resume (GET and PUT), follow redirects (with configurable maximum redirects), custom HTTP requests, and range support.
    • Cookies: Fully parsed cookie get/send; reads/writes Netscape cookie file format.
    • Headers & Metadata: Custom headers, user-agent, referrer, and automatic data compression (requires libz, brotli, and/or zstd).

    HTTPS

    • Security: All HTTP features plus experimental HTTP/3 support.
    • TLS/SSL: Client certificates, server certificate verification, and selection of specific encryption or SSL versions.
    • Proxying: Support via HTTP proxy, HTTPS proxy, or SOCKS proxy.
  9. Use Capstone Disassembly Engine bindings for VB6

    dev

    This library provides VB6 access to the Capstone disassembly engine via a C-based shim (vbCapstone.dll) that implements a stdcall API. It allows for basic disassembly of all processor architectures supported by Capstone.

    Limitations:

    • Full instruction details are currently only supported for the x86 processor family within the VB code.
    • The current implementation is built against Capstone 3.0 rc4. Future changes to Capstone structures may require adjustments to the shim code.
  10. Capabilities of libcurl

    dev

    The libcurl library provides a robust set of features for programmatic network transfers:

    • Protocol & Syntax: URL RFC 3986 syntax, IPv6 support (Unix/Windows), and happy eyeballs dual-stack connects.
    • Connection Management: Persistent connections, selectable network interfaces, and SOCKS 4 + 5 support (with or without local name resolving).
    • Proxy Support: "Standard" proxy environment variables support, including username/password in environment variables and HTTP proxy "tunneling" via CONNECT.
    • Performance & Control: Custom maximum download time, custom least download speed, and asynchronous name resolving (requires c-ares).
    • Interface: Both push and pull style interfaces, progress bars with time statistics, and replaceable memory functions (malloc, free, etc.).
    • Compatibility: Compiles on Win32 and reported on 70+ operating systems; supports international domain names (requires libidn2 or Windows).
  11. Other supported protocols

    dev

    Curl supports a variety of other protocols:

    • MQTT: Subscribe to and publish topics using the URL scheme mqtt://broker/topic.
    • SMB: SMBv1 over TCP and SSL; supports download, upload, and NTLMv1 authentication.
    • LDAP: Full LDAP URL support (requires OpenLDAP or WinLDAP).
    • TFTP: Download and upload.
    • TELNET: Connection negotiation, custom telnet options, and stdin/stdout I/O.
    • DICT: Extended DICT URL support.
    • FILE: URL support for upload and resume.