MAME Emulation Framework

repository·master·Indexed 27 days ago

https://github.com/mamedev/mame

A multi-purpose emulation framework dedicated to preserving software history by documenting and recreating the functionality of vintage hardware, including arcade machines, computers, and consoles.

Tokens
221.1K
Snippets
470
Records
1.3K
Agent score
94%

What's inside MAME

  1. Overview of LuaFileSystem

    master
    LuaFileSystem is a portable Lua library designed to complement the standard Lua distribution by providing extended file system functions. It allows developers to access underlying directory structures and file attributes in a portable manner. It is licensed under the MIT license (the same as Lua 5.x).
  2. Overview of MAME Object Finders

    master

    Object finders are used to tie emulated devices together by specifying connections, accessing resources efficiently, and validating that necessary resources are available. They search for a target object by a tag relative to a base device.

    Key Behaviors

    • Required vs. Optional:
      • Required versions (e.g., required_device) will raise an error if the target is not found, preventing the device from starting or causing a validation error.
      • Optional versions (e.g., optional_device) will log a verbose message if the target is missing and provide methods to check if the object was successfully found.
    • Tag Lifetime: Object finders do not copy tag strings. The caller must ensure the tag string remains valid until validation and object resolution are complete.
    • API Location: Declarations are in src/emu/devfind.h.
  3. Overview of FLAC Components

    master

    FLAC (Free Lossless Audio Codec) is a reference implementation for reducing digital audio storage without information loss. It consists of the following components:

    • libFLAC: A library implementing reference encoders and decoders for native FLAC and Ogg FLAC, including a metadata interface.
    • libFLAC++: A C++ object wrapper library around libFLAC.
    • flac: A command-line program for encoding and decoding files.
    • metaflac: A command-line program for viewing and editing FLAC metadata.
    • Documentation: Includes API documentation (Doxygen) and command-line tool manuals.
  4. Overview of PC-9801 SIMM emulation

    master

    MAME emulates proprietary NEC 54SIMM and 61SIMM sockets used in PC-9801 systems.

    Key technical characteristics:

    • 54SIMM: Features a 16-bit data width.
    • 61SIMM: Features a 32-bit data width.

    For usability within the emulator, these are emulated as a single mappable slot. While the sockets are proprietary NEC designs, the emulation also accounts for third-party options from manufacturers such as I/O Data and Melco / Buffalo.

  5. Overview of PortAudio

    master

    PortAudio is a portable audio I/O library designed for cross-platform audio support. It provides two primary methods for audio processing:

    1. Callback mechanism: The library requests audio processing via a callback function.
    2. Blocking calls: Uses blocking read/write calls to buffer data between the native audio subsystem and the client.

    Supported audio formats include 32-bit floating point, which PortAudio converts to the native format internally.

  6. Overview of AsmJit Instruction Database

    master
    The AsmJit Instruction Database is a collection of instruction definitions used by AsmJit to generate its internal database and assembler implementations. Each instruction is defined using a single line in a JSON data file. This data is subsequently processed by architecture-specific readers to create canonical instruction data.
  7. Overview of bgfx rendering library

    master
    bgfx is a cross-platform rendering library used in a wide variety of applications, including game engines (GPlayEngine, NeoAxis Engine, Equilibrium Engine), visualization frameworks (HARFANG 3D), and commercial games (Minecraft, Guild Wars 2, Griftlands). It is designed to provide a consistent graphics API across different platforms.
  8. Overview of the USSR driver files

    master
    The src/mame/ussr directory contains driver files for hardware manufactured in the Soviet Union (USSR). This includes hardware from the Soviet era as well as newer hardware that utilizes typical Soviet-era architecture. Note that intellectual property for these systems was generally publicly owned.