File tree Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Expand file tree Collapse file tree 1 file changed +9
-8
lines changed Original file line number Diff line number Diff line change @@ -437,19 +437,21 @@ impl Emu {
437437 let mut params: [ u32 ; 32 ] = unsafe { MaybeUninit :: uninit ( ) . assume_init ( ) } ;
438438
439439 ' outer: while !regs_3d. cmd_fifo . is_empty ( ) {
440- let value = * regs_3d. cmd_fifo . front ( ) ;
440+ let mut value = * regs_3d. cmd_fifo . front ( ) ;
441441 regs_3d. cmd_fifo . pop_front ( ) ;
442442
443- for i in 0 ..4 {
444- let cmd = ( ( value as usize ) >> ( i << 3 ) ) & 0x7F ;
443+ while value != 0 {
444+ let cmd = ( value & 0x7F ) as usize ;
445+ let current_value = value;
446+ value >>= 8 ;
445447 if unlikely ( cmd == 0 ) {
446- break ;
448+ continue ;
447449 }
448450 let param_count = FifoParam :: from ( unsafe { * FIFO_PARAM_COUNTS . get_unchecked ( cmd) } ) ;
449451 let count = u8:: from ( param_count. param_count ( ) ) as usize ;
450452
451453 if unlikely ( count > regs_3d. cmd_fifo . len ( ) ) {
452- regs_3d. cmd_fifo . push_front ( value >> ( i << 3 ) ) ;
454+ regs_3d. cmd_fifo . push_front ( current_value ) ;
453455 break ' outer;
454456 }
455457
@@ -468,9 +470,8 @@ impl Emu {
468470
469471 executed_cycles += 4 ;
470472 if executed_cycles >= cycle_diff || cmd == 0x50 {
471- let remaining_cmds = value. unbounded_shr ( ( i + 1 ) << 3 ) ;
472- if remaining_cmds != 0 {
473- regs_3d. cmd_fifo . push_front ( remaining_cmds) ;
473+ if value != 0 {
474+ regs_3d. cmd_fifo . push_front ( value) ;
474475 }
475476 break ' outer;
476477 }
You can’t perform that action at this time.
0 commit comments