@@ -308,7 +308,7 @@ class DumpExecute {
308
308
void Memcpy (u32 ptr, u32 sz);
309
309
void Texture (int level, u32 ptr, u32 sz);
310
310
void Framebuf (int level, u32 ptr, u32 sz);
311
- void Display (u32 ptr, u32 sz);
311
+ void Display (u32 ptr, u32 sz, bool allowFlip );
312
312
void EdramTrans (u32 ptr, u32 sz);
313
313
314
314
u32 execMemcpyDest = 0 ;
@@ -616,7 +616,7 @@ void DumpExecute::Framebuf(int level, u32 ptr, u32 sz) {
616
616
}
617
617
}
618
618
619
- void DumpExecute::Display (u32 ptr, u32 sz) {
619
+ void DumpExecute::Display (u32 ptr, u32 sz, bool allowFlip ) {
620
620
struct DisplayBufData {
621
621
PSPPointer<u8> topaddr;
622
622
int linesize, pixelFormat;
@@ -628,7 +628,9 @@ void DumpExecute::Display(u32 ptr, u32 sz) {
628
628
SyncStall ();
629
629
630
630
__DisplaySetFramebuf (disp->topaddr .ptr , disp->linesize , disp->pixelFormat , 1 );
631
- __DisplaySetFramebuf (disp->topaddr .ptr , disp->linesize , disp->pixelFormat , 0 );
631
+ if (allowFlip) {
632
+ __DisplaySetFramebuf (disp->topaddr .ptr , disp->linesize , disp->pixelFormat , 0 );
633
+ }
632
634
}
633
635
634
636
void DumpExecute::EdramTrans (u32 ptr, u32 sz) {
@@ -657,7 +659,8 @@ bool DumpExecute::Run() {
657
659
if (gpu)
658
660
gpu->SetAddrTranslation (0x400 );
659
661
660
- for (const Command &cmd : commands_) {
662
+ for (size_t i = 0 ; i < commands_.size (); i++) {
663
+ const Command &cmd = commands_[i];
661
664
switch (cmd.type ) {
662
665
case CommandType::INIT:
663
666
Init (cmd.ptr , cmd.sz );
@@ -726,7 +729,7 @@ bool DumpExecute::Run() {
726
729
break ;
727
730
728
731
case CommandType::DISPLAY:
729
- Display (cmd.ptr , cmd.sz );
732
+ Display (cmd.ptr , cmd.sz , i == commands_. size () - 1 );
730
733
break ;
731
734
732
735
default :
0 commit comments