#90343 - kvance - Thu Jun 29, 2006 8:10 pm
I'm having trouble using the hardware display capture. I'm trying to render 3D objects into VRAM to use as sprites. My code works, but I have to run it in a loop 3 times and I don't understand why. There are some printfs sprinkled in to watch the DCAP_ENABLE bit. It appears to finish after two iterations, but if I stop there then nothing gets copied to VRAM_A.
I'd appreciate any ideas or suggestions.
The console output is:
_________________
Corner Office: dev LJ
HexxagonDS, dsmzx, more...
I'd appreciate any ideas or suggestions.
Code: |
vramSetBankA(VRAM_A_LCD);
for(int i = 0; i < 3; i++) { DISP_CAPTURE = DCAP_ENABLE | DCAP_MODE(0) | /* Capture source A */ DCAP_DST(0) | /* VRAM write offset 0 */ DCAP_SRC(1) | /* 3D screen */ DCAP_SIZE(3) | /* 256x192 */ DCAP_OFFSET(0) | /* VRAM read offset 0 */ DCAP_BANK(0) | /* Write to VRAM A */ DCAP_A(16) | /* Blend amount */ DCAP_B(0); /* Ignore source B */ printf("%d0: cap=%d\n", i, (DISP_CAPTURE & DCAP_ENABLE) == DCAP_ENABLE); glReset(); glOrtho(0, 2.56f, 1.92f, 0, -1, 1); ... draw draw draw ... printf("%d1: cap=%d\n", i, (DISP_CAPTURE & DCAP_ENABLE) == DCAP_ENABLE); glFlush(); printf("%d2: cap=%d\n", i, (DISP_CAPTURE & DCAP_ENABLE) == DCAP_ENABLE); swiWaitForVBlank(); printf("%d3: cap=%d\n", i, (DISP_CAPTURE & DCAP_ENABLE) == DCAP_ENABLE); } |
The console output is:
Code: |
00: cap=1
01: cap=1 02: cap=1 03: cap=1 10: cap=1 11: cap=1 12: cap=1 13: cap=0 20: cap=1 21: cap=1 22: cap=1 23: cap=0 |
_________________
Corner Office: dev LJ
HexxagonDS, dsmzx, more...