Fix sign extension from BG references (broke it in 7f7d06)
This commit is contained in:
		
							parent
							
								
									1e976fb312
								
							
						
					
					
						commit
						40b3cd51ec
					
				
					 1 changed files with 14 additions and 8 deletions
				
			
		
							
								
								
									
										22
									
								
								video.c
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								video.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2336,17 +2336,23 @@ static void render_scanline_text_transparent_alpha(u32 layer,
 | 
			
		|||
s32 affine_reference_x[2];
 | 
			
		||||
s32 affine_reference_y[2];
 | 
			
		||||
 | 
			
		||||
static inline s32 signext28(u32 value)
 | 
			
		||||
{
 | 
			
		||||
  s32 ret = (s32)(value << 4);
 | 
			
		||||
  return ret >> 4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void video_reload_counters()
 | 
			
		||||
{
 | 
			
		||||
  /* This happens every Vblank */
 | 
			
		||||
  affine_reference_x[0] = (s32)(read_ioreg(REG_BG2X_L) |
 | 
			
		||||
     ((read_ioreg(REG_BG2X_H) & 0xFFF) << 16));
 | 
			
		||||
  affine_reference_y[0] = (s32)(read_ioreg(REG_BG2Y_L) |
 | 
			
		||||
     ((read_ioreg(REG_BG2Y_H) & 0xFFF) << 16));
 | 
			
		||||
  affine_reference_x[1] = (s32)(read_ioreg(REG_BG3X_L) |
 | 
			
		||||
     ((read_ioreg(REG_BG3X_H) & 0xFFF) << 16));
 | 
			
		||||
  affine_reference_y[1] = (s32)(read_ioreg(REG_BG3Y_L) |
 | 
			
		||||
     ((read_ioreg(REG_BG3Y_H) & 0xFFF) << 16));
 | 
			
		||||
  affine_reference_x[0] = signext28(read_ioreg(REG_BG2X_L) |
 | 
			
		||||
                                   (read_ioreg(REG_BG2X_H) << 16));
 | 
			
		||||
  affine_reference_y[0] = signext28(read_ioreg(REG_BG2Y_L) |
 | 
			
		||||
                                   (read_ioreg(REG_BG2Y_H) << 16));
 | 
			
		||||
  affine_reference_x[1] = signext28(read_ioreg(REG_BG3X_L) |
 | 
			
		||||
                                   (read_ioreg(REG_BG3X_H) << 16));
 | 
			
		||||
  affine_reference_y[1] = signext28(read_ioreg(REG_BG3Y_L) |
 | 
			
		||||
                                   (read_ioreg(REG_BG3Y_H) << 16));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define affine_render_bg_pixel_normal()                                       \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue