Add Optimize New 3DS data conversions
Some checks are pending
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux32 flags:32 name:Linux GCC 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linux64 flags:64 name:Linux GCC x64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm32 flags:arm32 name:Linux GCC ARM 32 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:linuxarm64 flags:arm64 name:Linux GCC ARM 64 os:ubuntu-latest]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:macos name:macOS Apple Silicon os:macos-14]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win32 flags:-A Win32 name:Windows VS2022 Win32 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:win64 flags:-A x64 name:Windows VS2022 x64 os:windows-2022]) (push) Waiting to run
CD / ${{ matrix.platform.name }} ${{ matrix.config.name }} (map[flags:-DBUILD_SHARED_LIBS=FALSE name:Static], map[artifact_name:winarm64 flags:-A ARM64 name:Windows VS2022 ARM os:windows-2022]) (push) Waiting to run
CD / Create Pi Mono Setup (push) Blocked by required conditions
CD / Publishing (push) Blocked by required conditions

This commit is contained in:
Lorenzooone
2025-03-31 04:23:35 +02:00
parent 4978076a12
commit c3939a056b
8 changed files with 760 additions and 53 deletions

View File

@@ -20,7 +20,7 @@
#define FTD2_INTRA_PACKET_HEADER_SIZE 2
#define MAX_PACKET_SIZE_FTD2 (MAX_PACKET_SIZE_USB2 - FTD2_INTRA_PACKET_HEADER_SIZE)
enum CaptureConnectionType { CAPTURE_CONN_FTD3, CAPTURE_CONN_USB, CAPTURE_CONN_FTD2, CAPTURE_CONN_IS_NITRO, CAPTURE_CONN_CYPRESS_NISETRO };
enum CaptureConnectionType { CAPTURE_CONN_FTD3, CAPTURE_CONN_USB, CAPTURE_CONN_FTD2, CAPTURE_CONN_IS_NITRO, CAPTURE_CONN_CYPRESS_NISETRO, CAPTURE_CONN_CYPRESS_NEW_OPTIMIZE };
enum InputVideoDataType { VIDEO_DATA_RGB, VIDEO_DATA_BGR, VIDEO_DATA_RGB16, VIDEO_DATA_BGR16 };
enum CaptureScreensType { CAPTURE_SCREENS_BOTH, CAPTURE_SCREENS_TOP, CAPTURE_SCREENS_BOTTOM, CAPTURE_SCREENS_ENUM_END };
enum CaptureSpeedsType { CAPTURE_SPEEDS_FULL, CAPTURE_SPEEDS_HALF, CAPTURE_SPEEDS_THIRD, CAPTURE_SPEEDS_QUARTER, CAPTURE_SPEEDS_ENUM_END };
@@ -76,8 +76,8 @@ struct PACKED USB888New3DSOptimizePixelData {
struct PACKED USBNew3DSOptimizeSingleSoundData {
uint16_t sample_index;
uint16_t sample_r;
uint16_t sample_l;
uint16_t sample_r;
};
struct PACKED USBNew3DSOptimizeHeaderSoundData {
@@ -201,19 +201,23 @@ struct ALIGNED(16) PACKED ISTWLCaptureReceived {
};
struct ALIGNED(16) PACKED USB565New3DSOptimizeCaptureReceived {
USB565New3DSOptimizeInputColumnData columns_data[TOP_WIDTH_3DS + 1];
USB565New3DSOptimizeInputColumnData columns_data[TOP_WIDTH_3DS];
USB565New3DSOptimizePixelData bottom_only_column[HEIGHT_3DS][2];
};
struct ALIGNED(16) PACKED USB565New3DSOptimizeCaptureReceived_3D {
USB565New3DSOptimizeInputColumnData3D columns_data[TOP_WIDTH_3DS + 1];
USB565New3DSOptimizeInputColumnData3D columns_data[TOP_WIDTH_3DS];
USB565New3DSOptimizePixelData bottom_only_column[HEIGHT_3DS][3];
};
struct ALIGNED(16) PACKED USB888New3DSOptimizeCaptureReceived {
USB888New3DSOptimizeInputColumnData columns_data[TOP_WIDTH_3DS + 1];
USB888New3DSOptimizeInputColumnData columns_data[TOP_WIDTH_3DS];
USB888New3DSOptimizePixelData bottom_only_column[HEIGHT_3DS][2];
};
struct ALIGNED(16) PACKED USB888New3DSOptimizeCaptureReceived_3D {
USB888New3DSOptimizeInputColumnData3D columns_data[TOP_WIDTH_3DS + 1];
USB888New3DSOptimizeInputColumnData3D columns_data[TOP_WIDTH_3DS];
USB888New3DSOptimizePixelData bottom_only_column[HEIGHT_3DS][3];
};
#pragma pack(pop)

View File

@@ -5,5 +5,5 @@
#include "display_structs.hpp"
bool convertVideoToOutput(VideoOutputData *p_out, const bool is_big_endian, CaptureDataSingleBuffer* data_buffer, CaptureStatus* status, bool interleaved_3d, bool is_data_3d);
bool convertAudioToOutput(std::int16_t *p_out, uint64_t &n_samples, const bool is_big_endian, CaptureDataSingleBuffer* data_buffer, CaptureStatus* status, bool is_data_3d);
bool convertAudioToOutput(std::int16_t *p_out, uint64_t &n_samples, uint16_t &last_buffer_index, const bool is_big_endian, CaptureDataSingleBuffer* data_buffer, CaptureStatus* status, bool is_data_3d);
#endif

View File

@@ -21,7 +21,7 @@ bool connect(bool print_failed, CaptureData* capture_data, FrontendData* fronten
void captureCall(CaptureData* capture_data);
void capture_error_print(bool print_failed, CaptureData* capture_data, std::string error_string);
void capture_error_print(bool print_failed, CaptureData* capture_data, std::string graphical_string, std::string detailed_string);
uint64_t get_audio_n_samples(CaptureData* capture_data, uint64_t read, bool is_3d);
uint64_t get_audio_n_samples(CaptureData* capture_data, CaptureDataSingleBuffer* data_buffer);
uint64_t get_video_in_size(CaptureData* capture_data, bool is_3d);
std::string get_name_of_device(CaptureStatus* capture_status, bool use_long = false);
int get_usb_speed_of_device(CaptureStatus* capture_status);

View File

@@ -39,6 +39,10 @@
#define WIDTH_NES 256
#define HEIGHT_NES 240
#define SCREEN_WIDTH_DIFFERENCE_3DS (TOP_WIDTH_3DS - BOT_WIDTH_3DS)
#define SCREEN_WIDTH_FIRST_PIXEL_BOTTOM_3DS (SCREEN_WIDTH_DIFFERENCE_3DS / 2)
#define SCREEN_WIDTH_LAST_PIXEL_BOTTOM_3DS (BOT_WIDTH_3DS + SCREEN_WIDTH_FIRST_PIXEL_BOTTOM_3DS)
#define TOP_SIZE_3DS (TOP_WIDTH_3DS * HEIGHT_3DS)
#define BOT_SIZE_3DS (BOT_WIDTH_3DS * HEIGHT_3DS)
#define TOP_SIZE_DS (WIDTH_DS * HEIGHT_DS)