-#endif
- ptr = getDmaRam(madr, &words_max);
- if (ptr == INVALID_PTR) {
-#ifdef CPU_LOG
- CPU_LOG("*** DMA2 GPU - mem2vram *** NULL Pointer!!!\n");
-#endif
- break;
+ words = words_left = (bcr >> 16) * (bcr & 0xffff);
+ while (words_left > 0) {
+ ptr = getDmaRam(madr, &words_max);
+ if (ptr == INVALID_PTR) {
+ log_unhandled("bad2 dma madr %x\n", madr);
+ break;
+ }
+ words_copy = min(words_left, words_max);
+ GPU_writeDataMem(ptr, words_copy);
+ words_left -= words_copy;
+ madr += words_copy * 4;