mirror of
https://gitee.com/anod/open_agb_firm.git
synced 2025-05-06 13:54:09 +08:00
颜色不对齐貌似无法解决,试验一下偏倚一点
This commit is contained in:
parent
a7d4e30e82
commit
c1aadf37c0
@ -675,16 +675,23 @@ static void gbaGfxHandler(void *args)
|
||||
// 地址0x18180000保存的是360x240大小的贴图数据rgb888(序列:↑↘↑)
|
||||
// 地址0x18200000保存的是512x512大小的GBA的240x160贴图数据(序列:→↙→)
|
||||
// 所以GPU做的事情就是将18200000的数据逆时针旋转90°
|
||||
int offset = 0;
|
||||
if( g_oafConfig.scaler == 0 ) offset = 3 * (240-160) / 2 + 1;
|
||||
GX_displayTransfer((u32*)(0x18180000 + (16 * 240 * 3)), 368u<<16 | 240u,
|
||||
GFX_getFramebuffer(SCREEN_TOP) + (16 * 240 * 3) + offset, 368u<<16 | 240u, 1u<<12 | 1u<<8);
|
||||
int src_offset = 160*240*3;
|
||||
int dst_offset = src_offset;
|
||||
if( g_oafConfig.scaler == 0 )
|
||||
{
|
||||
int base_offset = 120; // 3ds高240, gba高160,居中需要平移40个像素,rgb888每个像素3字节,共120字节
|
||||
// 但是,gpu的transfer engine只支持16字节对齐的地址。现在需要
|
||||
// 0x18180000 <----------> screen_top + 16*240*3 + 120 是正确对准,左边对16求余为0,右边为8
|
||||
dst += 144;
|
||||
}
|
||||
GX_displayTransfer((u32*)(0x18180000 + src_offset), 368u<<16 | 240u,
|
||||
GFX_getFramebuffer(SCREEN_TOP) + dst_offset, 368u<<16 | 240u, 1u<<12 | 1u<<8);
|
||||
GFX_waitForPPF();
|
||||
GFX_swapFramebufs();
|
||||
|
||||
//if(hidKeysDown() == (KEY_Y | KEY_SELECT)) dumpFrameTex();
|
||||
}
|
||||
|
||||
|
||||
taskExit();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user