Хорошо, я слышал, что есть функция захвата экрана, которая позволяет рисовать 3D на вспомогательном движке (нижний экран), поэтому я посмотрел его и нашел пример .
К сожалению, макросы DCAP
, похоже, не документированы, поэтому я взглянул на реальные определения nds / arm9 / video.h :
// Display capture control
#define REG_DISPCAPCNT (*(vu32*)0x04000064)
#define REG_DISP_MMEM_FIFO (*(vu32*)0x04000068)
#define DCAP_ENABLE BIT(31)
#define DCAP_MODE(n) (((n) & 3) << 29)
#define DCAP_DST(n) (((n) & 3) << 26)
#define DCAP_SRC(n) (((n) & 3) << 24)
#define DCAP_SIZE(n) (((n) & 3) << 20)
#define DCAP_OFFSET(n) (((n) & 3) << 18)
#define DCAP_BANK(n) (((n) & 3) << 16)
#define DCAP_B(n) (((n) & 0x1F) << 8)
#define DCAP_A(n) (((n) & 0x1F) << 0)
Мне кажется, что вы можете захватить 3D, нарисовать его на сабвуфере и использовать буфер кадров на главном, если хотите. Чтобы использовать кадровый буфер на вспомогательном движке, вам нужно поменять местами экраны с помощью lcdSwap()
.