
This commit adds support for all service commands of all 4 QTM services (`qtm:u`, `qtm:s`, `qtm:sp` (which are built on top of one another) and `qtm:c` ("hardware check")), with precise documentation about each command's behaviour and about I/O internals. The existing `qtm:c` code in libctru had a lot of misconceptions; this commit is a full rewrite with breaking changes. In particular: QTM does *not* track the position of 4 points on the user's face. Instead, it tracks the position of the user's eyes (but not the direction they are looking at) and reports their coordinates in camera space and in world space. The data is presented in a console/hardware-agnostic way to the user. QTM is a service process responsible for: - eye tracking (see above). Head tracking data is available even when "super-stable 3D" is disabled - parallax barrier management through the TI TCA6416A I2C->Parallel expander. The parallax barrier hardware on N3DS requires that software (in this case, QTM process) alternates between writing the barrier's mask pattern & polarity followed by the bit-negation of that pattern on polarity continuously, at all times - automatic barrier management by adjusting it with the results of eye-tracking ("super-stable 3D") - automatic (and manual) IR LED emitter management so that eye-tracking can work even in the dark - fowarding camera brightness information from cam:q. GSP uses this for auto-brightness
155 lines
4.6 KiB
C
155 lines
4.6 KiB
C
/**
|
|
* @file 3ds.h
|
|
* @brief Central 3DS header. Includes all others.
|
|
*/
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined(_3DS) && !defined(__3DS__)
|
|
#warning "Please update your Makefile and replace -DARM11 -D_3DS with -D__3DS__"
|
|
#define __3DS__
|
|
#endif
|
|
|
|
//might be missing some
|
|
#include <3ds/types.h>
|
|
#include <3ds/result.h>
|
|
#include <3ds/ipc.h>
|
|
#include <3ds/svc.h>
|
|
#include <3ds/exheader.h>
|
|
#include <3ds/srv.h>
|
|
#include <3ds/errf.h>
|
|
#include <3ds/os.h>
|
|
#include <3ds/synchronization.h>
|
|
#include <3ds/thread.h>
|
|
#include <3ds/gfx.h>
|
|
#include <3ds/console.h>
|
|
#include <3ds/env.h>
|
|
#include <3ds/util/decompress.h>
|
|
#include <3ds/util/utf.h>
|
|
|
|
#include <3ds/allocator/linear.h>
|
|
#include <3ds/allocator/mappable.h>
|
|
#include <3ds/allocator/vram.h>
|
|
|
|
#include <3ds/services/ac.h>
|
|
#include <3ds/services/am.h>
|
|
#include <3ds/services/ampxi.h>
|
|
#include <3ds/services/apt.h>
|
|
#include <3ds/services/boss.h>
|
|
#include <3ds/services/cam.h>
|
|
#include <3ds/services/cfgnor.h>
|
|
#include <3ds/services/cfgu.h>
|
|
#include <3ds/services/csnd.h>
|
|
#include <3ds/services/dsp.h>
|
|
#include <3ds/services/fs.h>
|
|
#include <3ds/services/fspxi.h>
|
|
#include <3ds/services/fsreg.h>
|
|
#include <3ds/services/frd.h>
|
|
#include <3ds/services/gspgpu.h>
|
|
#include <3ds/services/gsplcd.h>
|
|
#include <3ds/services/hid.h>
|
|
#include <3ds/services/irrst.h>
|
|
#include <3ds/services/sslc.h>
|
|
#include <3ds/services/httpc.h>
|
|
#include <3ds/services/uds.h>
|
|
#include <3ds/services/ndm.h>
|
|
#include <3ds/services/nim.h>
|
|
#include <3ds/services/nwmext.h>
|
|
#include <3ds/services/ir.h>
|
|
#include <3ds/services/ns.h>
|
|
#include <3ds/services/pmapp.h>
|
|
#include <3ds/services/pmdbg.h>
|
|
#include <3ds/services/ps.h>
|
|
#include <3ds/services/ptmu.h>
|
|
#include <3ds/services/ptmsysm.h>
|
|
#include <3ds/services/ptmgets.h>
|
|
#include <3ds/services/ptmsets.h>
|
|
#include <3ds/services/pxidev.h>
|
|
#include <3ds/services/pxipm.h>
|
|
#include <3ds/services/soc.h>
|
|
#include <3ds/services/mic.h>
|
|
#include <3ds/services/mvd.h>
|
|
#include <3ds/services/nfc.h>
|
|
#include <3ds/services/news.h>
|
|
#include <3ds/services/qtm.h>
|
|
#include <3ds/services/qtmc.h>
|
|
#include <3ds/services/srvpm.h>
|
|
#include <3ds/services/loader.h>
|
|
#include <3ds/services/y2r.h>
|
|
#include <3ds/services/mcuhwc.h>
|
|
#include <3ds/services/cdcchk.h>
|
|
|
|
#include <3ds/gpu/gx.h>
|
|
#include <3ds/gpu/gpu.h>
|
|
#include <3ds/gpu/shbin.h>
|
|
#include <3ds/gpu/shaderProgram.h>
|
|
|
|
#include <3ds/ndsp/ndsp.h>
|
|
#include <3ds/ndsp/channel.h>
|
|
|
|
#include <3ds/applets/swkbd.h>
|
|
#include <3ds/applets/error.h>
|
|
|
|
#include <3ds/applets/miiselector.h>
|
|
|
|
#include <3ds/archive.h>
|
|
#include <3ds/romfs.h>
|
|
#include <3ds/font.h>
|
|
#include <3ds/mii.h>
|
|
|
|
#include <3ds/gdbhio_dev.h>
|
|
#include <3ds/3dslink.h>
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
/**
|
|
* @example app_launch/source/main.c
|
|
* @example audio/filters/source/main.c
|
|
* @example audio/mic/source/main.c
|
|
* @example audio/streaming/source/main.c
|
|
* @example camera/image/source/main.c
|
|
* @example camera/video/source/main.c
|
|
* @example get_system_language/source/main.c
|
|
* @example graphics/bitmap/24bit-color/source/main.c
|
|
* @example graphics/gpu/both_screens/source/main.c
|
|
* @example graphics/gpu/fragment_light/source/main.c
|
|
* @example graphics/gpu/geoshader/source/main.c
|
|
* @example graphics/gpu/gpusprites/source/main.c
|
|
* @example graphics/gpu/immediate/source/main.c
|
|
* @example graphics/gpu/lenny/source/main.c
|
|
* @example graphics/gpu/loop_subdivision/source/main.c
|
|
* @example graphics/gpu/mipmap_fog/source/main.c
|
|
* @example graphics/gpu/particles/source/main.c
|
|
* @example graphics/gpu/proctex/source/main.c
|
|
* @example graphics/gpu/simple_tri/source/main.c
|
|
* @example graphics/gpu/textured_cube/source/main.c
|
|
* @example graphics/gpu/toon_shading/source/main.c
|
|
* @example graphics/printing/both-screen-text/source/main.c
|
|
* @example graphics/printing/colored-text/source/main.c
|
|
* @example graphics/printing/hello-world/source/main.c
|
|
* @example graphics/printing/multiple-windows-text/source/main.c
|
|
* @example graphics/printing/system-font/source/main.c
|
|
* @example input/read-controls/source/main.c
|
|
* @example input/software-keyboard/source/main.c
|
|
* @example input/touch-screen/source/main.c
|
|
* @example libapplet_launch/source/main.c
|
|
* @example mvd/source/main.c
|
|
* @example network/boss/source/main.c
|
|
* @example network/http/source/main.c
|
|
* @example network/http_post/source/main.c
|
|
* @example network/sockets/source/sockets.c
|
|
* @example network/sslc/source/ssl.c
|
|
* @example network/uds/source/uds.c
|
|
* @example nfc/source/main.c
|
|
* @example qtm/source/main.c
|
|
* @example romfs/source/main.c
|
|
* @example sdmc/source/main.c
|
|
* @example threads/event/source/main.c
|
|
* @example threads/thread-basic/source/main.c
|
|
* @example time/rtc/source/main.c
|
|
*/
|