Made sure the BPB is actually ignored when the drive is so configured;

Fixed the S3 ViRGE warnings.
This commit is contained in:
OBattler
2017-07-27 23:59:40 +02:00
parent 8bf4ff71c1
commit 474838be87
2 changed files with 18 additions and 8 deletions

View File

@@ -1892,7 +1892,7 @@ static void s3_virge_bitblt(virge_t *virge, int count, uint32_t cpu_dat)
uint32_t *pattern_data;
uint32_t src_addr;
uint32_t dest_addr;
uint32_t source = 0, dest, pattern;
uint32_t source = 0, dest = 0, pattern;
uint32_t out = 0;
int update;
@@ -2110,7 +2110,7 @@ static void s3_virge_bitblt(virge_t *virge, int count, uint32_t cpu_dat)
while (count && virge->s3d.h)
{
uint32_t dest_addr = virge->s3d.dest_base + (virge->s3d.dest_x * x_mul) + (virge->s3d.dest_y * virge->s3d.dest_str);
uint32_t source = 0, dest, pattern = virge->s3d.pat_fg_clr;
uint32_t source = 0, dest = 0, pattern = virge->s3d.pat_fg_clr;
uint32_t out = 0;
int update = 1;
@@ -2183,7 +2183,7 @@ static void s3_virge_bitblt(virge_t *virge, int count, uint32_t cpu_dat)
do
{
uint32_t dest_addr = virge->s3d.dest_base + (x * x_mul) + (virge->s3d.dest_y * virge->s3d.dest_str);
uint32_t source = 0, dest, pattern;
uint32_t source = 0, dest = 0, pattern;
uint32_t out = 0;
int update = 1;
@@ -2240,7 +2240,7 @@ skip_line:
do
{
uint32_t dest_addr = virge->s3d.dest_base + (x * x_mul) + (y * virge->s3d.dest_str);
uint32_t source = 0, dest, pattern;
uint32_t source = 0, dest = 0, pattern;
uint32_t out = 0;
int update = 1;

View File

@@ -35,7 +35,6 @@ static struct
uint8_t sector_size;
int xdf_type; /* 0 = not XDF, 1-5 = one of the five XDF types */
int dmf;
int hole;
int track;
int track_width;
uint32_t base;
@@ -341,6 +340,7 @@ void img_load(int drive, wchar_t *fn)
uint8_t *bpos;
uint16_t track_bytes = 0;
uint8_t *literal;
int guess = 0;
ext = get_extension_w(fn);
@@ -706,11 +706,17 @@ jump_if_fdf:
img[drive].sides = 2;
img[drive].sector_size = 2;
img[drive].hole = 0;
pclog("BPB reports %i sides and %i bytes per sector (%i sectors total)\n", bpb_sides, bpb_bps, bpb_total);
if ((((bpb_sides < 1) || (bpb_sides > 2) || !bps_is_valid(bpb_bps) || !first_byte_is_valid(first_byte)) && !fdi && !cqm) || !fdd_get_check_bpb(drive))
guess = (bpb_sides < 1);
guess = guess || (bpb_sides > 2);
guess = guess || !bps_is_valid(bpb_bps);
guess = guess || !first_byte_is_valid(first_byte);
guess = guess || !fdd_get_check_bpb(drive);
guess = guess && !fdi;
guess = guess && !cqm;
if (guess)
{
/* The BPB is giving us a wacky number of sides and/or bytes per sector, therefore it is most probably
not a BPB at all, so we have to guess the parameters from file size. */
@@ -756,6 +762,10 @@ jump_if_fdf:
memset(discfns[drive], 0, sizeof(discfns[drive]));
return;
}
bpb_sides = img[drive].sides;
bpb_sectors = img[drive].sectors;
bpb_total = size >> (img[drive].sector_size + 7);
}
else
{