mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 14:03:23 -05:00
103 lines
5.1 KiB
YAML
103 lines
5.1 KiB
YAML
emulator: DingooEmu
|
|
type: standalone + libretro
|
|
core_classification: pure_libretro
|
|
source: "https://github.com/AloysHF/DingooEmu"
|
|
upstream: "https://github.com/AloysHF/DingooEmu"
|
|
profiled_date: "2026-09-17"
|
|
source_commit: "f57c9339e6021cd37c4bd694c14b0813a9b5ee72"
|
|
core_version: "0.3.0"
|
|
display_name: "Dingoo - A320 / Gemei A330 (DingooEmu)"
|
|
cores:
|
|
- dingooemu
|
|
systems:
|
|
- dingoo-a320
|
|
- gemei-a330
|
|
|
|
notes: |
|
|
Dingoo A320 and Gemei A330 emulator written in Rust by AloysHF. The
|
|
libretro core and the dingoo-emu standalone binary share the
|
|
dingooemu-core crate. Content is read from its full path (need_fullpath
|
|
= true, crates/dingooemu-libretro/src/api.rs:87;
|
|
crates/dingooemu/src/main.rs:226; crates/dingooemu-core/src/emulator.rs:33-37;
|
|
crates/dingooemu-core/src/package.rs:124-135). The CCDL package's load
|
|
address selects the runtime: a .app loaded in the 0x8xxxxxxx range runs on
|
|
the MIPS32 interpreter as an A320, a .cc, .c2s or .c3s loaded at
|
|
0x10100000 (retail SDK) or 0x13800000 (homebrew SDK) runs on the
|
|
ARM32/Thumb interpreter as an A330
|
|
(crates/dingooemu-core/src/content.rs:66-74, 104-121;
|
|
crates/dingooemu-core/src/emulator.rs:44-55). Both runtimes bind the
|
|
package's imports to Rust implementations of the device SDK
|
|
(crates/dingooemu-core/src/a320/runtime/sdk_hle/mod.rs:22-30;
|
|
crates/dingooemu-core/src/a330/runtime/sdk_hle/mod.rs:226-234). No
|
|
firmware code is executed and no font or system file backs those calls.
|
|
|
|
The A320 guest file API
|
|
(crates/dingooemu-core/src/a320/runtime/sdk_hle/files.rs:43-128)
|
|
resolves a name in three steps: a file under the save directory, a
|
|
resource packed inside the .app, then a host file relative to the .app's
|
|
own directory (crates/dingooemu-core/src/a320/runtime.rs:1645-1665,
|
|
crates/dingooemu-core/src/a320/runtime.rs:1592-1618,
|
|
crates/dingooemu-core/src/a320/runtime.rs:1424-1428,
|
|
crates/dingooemu-core/src/a320/runtime.rs:1449-1462). fsys_findfirst
|
|
enumerates the .app's directory and refuses to leave it
|
|
(crates/dingooemu-core/src/a320/runtime.rs:1519-1529).
|
|
|
|
The A330 guest file API
|
|
(crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:74-135)
|
|
resolves a name in five steps: a file under the save directory, a host
|
|
file relative to the content's directory, a resource packed inside the
|
|
package, the zip payload appended to the package, then an entry of the
|
|
firmware archive mounted from the content's directory; a name none of
|
|
them answers fails the open. fsys_findfirst enumerates the content's
|
|
directory and refuses to leave it
|
|
(crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:381-395).
|
|
|
|
Files the game creates land in the frontend save directory
|
|
(crates/dingooemu-libretro/src/api.rs:150-155,
|
|
crates/dingooemu-core/src/emulator.rs:173-179) or, when the frontend
|
|
gives none and in the standalone, beside the content
|
|
(crates/dingooemu-core/src/a320/runtime.rs:372,
|
|
crates/dingooemu-core/src/a330/runtime.rs:415-417). The core queries
|
|
RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY only
|
|
(crates/dingooemu-libretro/src/constants.rs:30); no system directory
|
|
constant exists in the crate.
|
|
|
|
With the diagnostic core option on, dingooemu-diagnostic.txt is written
|
|
to the save directory, or beside the content without one
|
|
(crates/dingooemu-libretro/src/api.rs:156-159,
|
|
crates/dingooemu-libretro/src/diagnostics.rs:8,
|
|
crates/dingooemu-libretro/src/diagnostics.rs:83-89,
|
|
crates/dingooemu-libretro/src/diagnostics.rs:310-318). No include_bytes!
|
|
data is compiled in. The .info declares firmware_count = 0: the one file
|
|
below is read from the content's directory, never from the system
|
|
directory.
|
|
|
|
files:
|
|
- name: "A330.HXF"
|
|
system: gemei-a330
|
|
required: false
|
|
storage: large_file
|
|
load_from: content_dir
|
|
size: 76352901
|
|
validation: [signature]
|
|
md5: "d8e1849773223a842076ca04053a13a4"
|
|
sha1: "69b3544d992a23e8b736c61837914a4d1b4e7bb5"
|
|
description: "Gemei A330 firmware update archive, V1.1 build3 of 2011-02-13"
|
|
note: >-
|
|
Mounted when an A330 package loads
|
|
(crates/dingooemu-core/src/a330/runtime.rs:415-418): the content's directory is
|
|
scanned and the first entry whose extension is hxf, in any case, is
|
|
read whole. The file must start with WADF0100 and declare at offset
|
|
20 a size within its own length; each record is a u32 name length,
|
|
the name, one byte, a u32 data length and the data, and a zero name
|
|
length ends the table. Names are lowercased, backslashes turned to
|
|
slashes and a leading drive letter dropped, so Z:\SYSTEM\nls\c_936.nls
|
|
and system/nls/c_936.nls reach the same entry. The archive is the
|
|
last source consulted when a game opens a file the save directory,
|
|
the content directory, the package's resources and its appended zip
|
|
payload do not hold; without it such an open fails and the runtime
|
|
goes on. The image itself is never hashed, and the hashes here name
|
|
the last firmware Gemei published; the V1.10 image of 2011-01-25
|
|
indexes the same way.
|
|
source_ref: "crates/dingooemu-core/src/a330/firmware_archive.rs:16-50, 54-58, 63-96, 117-124, crates/dingooemu-core/src/a330/runtime/sdk_hle/files.rs:108-133"
|