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