From 54015fee1701eac3c4087fb10b6333a38b0e104b Mon Sep 17 00:00:00 2001 From: darkstar Date: Wed, 7 Mar 2018 01:24:29 +0100 Subject: [PATCH] VIDEO: Fix lots of warnings in the code I hope I didn't break anything important ;-) --- src/video/vid_ati_mach64.c | 12 ++++++------ src/video/vid_bt485_ramdac.c | 4 ++-- src/video/vid_cga_comp.c | 8 ++++---- src/video/vid_cl54xx.c | 12 ++++++------ src/video/vid_ega.c | 5 +++-- src/video/vid_et4000w32.c | 12 ++++++------ src/video/vid_herculesplus.c | 8 ++++---- src/video/vid_incolor.c | 8 ++++---- src/video/vid_s3.c | 6 +++--- src/video/vid_s3_virge.c | 4 ++-- src/video/vid_sdac_ramdac.c | 4 ++-- src/video/vid_stg_ramdac.c | 6 +++--- src/video/vid_svga.c | 11 ++++++----- src/video/vid_tgui9440.c | 6 +++--- 14 files changed, 54 insertions(+), 52 deletions(-) diff --git a/src/video/vid_ati_mach64.c b/src/video/vid_ati_mach64.c index 61502b7..4bf07d0 100644 --- a/src/video/vid_ati_mach64.c +++ b/src/video/vid_ati_mach64.c @@ -8,7 +8,7 @@ * * ATi Mach64 graphics card emulation. * - * Version: @(#)vid_ati_mach64.c 1.0.3 2018/03/05 + * Version: @(#)vid_ati_mach64.c 1.0.4 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -858,7 +858,7 @@ static void mach64_accel_write_fifo_w(mach64_t *mach64, uint32_t addr, uint16_t #ifdef MACH64_DEBUG pclog(" "); #endif - mach64_accel_write_fifo(mach64, addr, val); + mach64_accel_write_fifo(mach64, addr, val & 0xff); #ifdef MACH64_DEBUG pclog(" "); #endif @@ -1473,7 +1473,7 @@ void mach64_blit(uint32_t cpu_dat, int count, mach64_t *mach64) { if (mach64->dst_cntl & DST_Y_MAJOR) draw_pixel = 1; - else if ((mach64->dst_cntl & DST_X_DIR) && mach64->accel.err < (mach64->dst_bres_dec + mach64->dst_bres_inc)) /*X+*/ + else if ((mach64->dst_cntl & DST_X_DIR) && mach64->accel.err < (int64_t)(mach64->dst_bres_dec + mach64->dst_bres_inc)) /*X+*/ draw_pixel = 1; else if (!(mach64->dst_cntl & DST_X_DIR) && mach64->accel.err >= 0) /*X-*/ draw_pixel = 1; @@ -2398,7 +2398,7 @@ void mach64_ext_writew(uint32_t addr, uint16_t val, void *p) #ifdef MACH64_DEBUG pclog("nmach64_ext_writew: addr=%04x val=%04x %04x(%08x):%08x\n", addr, val, CS, cs, cpu_state.pc); #endif - mach64_ext_writeb(addr, val, p); + mach64_ext_writeb(addr, val & 0xff, p); mach64_ext_writeb(addr + 1, val >> 8, p); } else if (addr & 0x300) @@ -2411,7 +2411,7 @@ void mach64_ext_writew(uint32_t addr, uint16_t val, void *p) #ifdef MACH64_DEBUG pclog(" "); #endif - mach64_ext_writeb(addr, val, p); + mach64_ext_writeb(addr, val & 0xff, p); #ifdef MACH64_DEBUG pclog(" "); #endif @@ -2742,7 +2742,7 @@ void mach64_ext_outw(uint16_t port, uint16_t val, void *p) #ifdef MACH64_DEBUG pclog(" "); #endif - mach64_ext_outb(port, val, p); + mach64_ext_outb(port, val & 0xff, p); #ifdef MACH64_DEBUG pclog(" "); #endif diff --git a/src/video/vid_bt485_ramdac.c b/src/video/vid_bt485_ramdac.c index bfd8ebf..d0cd271 100644 --- a/src/video/vid_bt485_ramdac.c +++ b/src/video/vid_bt485_ramdac.c @@ -11,7 +11,7 @@ * Currently only a dummy stub for logging and passing output * to the generic SVGA handler. * - * Version: @(#)vid_bt485_ramdac.c 1.0.1 2018/02/14 + * Version: @(#)vid_bt485_ramdac.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -206,7 +206,7 @@ float bt485_getclock(int clock, void *p) m = (ramdac->regs[clock] & 0x7f) + 2; n1 = ((ramdac->regs[clock] >> 8) & 0x1f) + 2; n2 = ((ramdac->regs[clock] >> 13) & 0x07); - t = (14318184.0 * ((float)m / (float)n1)) / (float)(1 << n2); + t = ((14318184.0f * (float)m / (float)n1)) / (float)(1 << n2); // pclog("BT485 clock %i %i %i %f %04X %f %i\n", m, n1, n2, t, ramdac->regs[2], 14318184.0 * ((float)m / (float)n1), 1 << n2); return t; } diff --git a/src/video/vid_cga_comp.c b/src/video/vid_cga_comp.c index 711fc18..61dc81a 100644 --- a/src/video/vid_cga_comp.c +++ b/src/video/vid_cga_comp.c @@ -9,7 +9,7 @@ * IBM CGA composite filter, borrowed from reenigne's DOSBox * patch and ported to C. * - * Version: @(#)vid_cga_comp.c 1.0.1 2018/02/14 + * Version: @(#)vid_cga_comp.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -209,9 +209,9 @@ Bit8u * Composite_Process(uint8_t cgamode, Bit8u border, Bit32u blocks/*, bool d c = i[0]+i[0]; \ d = i[-1]+i[1]; \ y = ((c+d)<<8) + video_sharpness*(c-d); \ - rr = y + video_ri*(I) + video_rq*(Q); \ - gg = y + video_gi*(I) + video_gq*(Q); \ - bb = y + video_bi*(I) + video_bq*(Q); \ + rr = (int)(y + video_ri*(I) + video_rq*(Q)); \ + gg = (int)(y + video_gi*(I) + video_gq*(Q)); \ + bb = (int)(y + video_bi*(I) + video_bq*(Q)); \ ++i; \ ++ap; \ ++bp; \ diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 3e2781d..aa2fc86 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -9,7 +9,7 @@ * Emulation of select Cirrus Logic cards (CL-GD 5428, * CL-GD 5429, 5430, 5434 and 5436 are supported). * - * Version: @(#)vid_cl54xx.c 1.0.5 2018/03/07 + * Version: @(#)vid_cl54xx.c 1.0.6 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -669,7 +669,7 @@ gd54xx_recalctimings(svga_t *svga) int n = gd54xx->vclk_n[clocksel] & 0x7f; int d = (gd54xx->vclk_d[clocksel] & 0x3e) >> 1; int m = gd54xx->vclk_d[clocksel] & 0x01 ? 2 : 1; - float freq = (14318184.0 * ((float)n / ((float)d * m))); + float freq = (14318184.0f * (float)n) / ((float)d * m); switch (svga->seqregs[7] & ((svga->crtc[0x27] >= CIRRUS_ID_CLGD5434) ? 0xe : 6)) { case 2: @@ -847,7 +847,7 @@ gd54xx_writew(uint32_t addr, uint16_t val, void *p) if (gd54xx->blt.sys_tx) { - gd54xx_write(addr, val, gd54xx); + gd54xx_write(addr, val & 0xff, gd54xx); gd54xx_write(addr+1, val >> 8, gd54xx); return; } @@ -858,7 +858,7 @@ gd54xx_writew(uint32_t addr, uint16_t val, void *p) if (svga->writemode < 4) svga_writew_linear(addr, val, svga); else { - gd54xx_write_linear(addr, val, gd54xx); + gd54xx_write_linear(addr, val & 0xff, gd54xx); gd54xx_write_linear(addr+1, val >> 8, gd54xx); } } @@ -1359,7 +1359,7 @@ gd54xx_writew_linear(uint32_t addr, uint16_t val, void *p) } if (gd54xx->blt.sys_tx) { - gd54xx_writeb_linear(addr, val, svga); + gd54xx_writeb_linear(addr, val & 0xff, svga); gd54xx_writeb_linear(addr+1, val >> 8, svga); return; } @@ -1729,7 +1729,7 @@ gd543x_mmio_writew(uint32_t addr, uint16_t val, void *p) gd543x_mmio_write(addr, val & 0xff, gd54xx); gd543x_mmio_write(addr+1, val >> 8, gd54xx); } else if (gd54xx->mmio_vram_overlap) { - gd54xx_write(addr, val, gd54xx); + gd54xx_write(addr, val & 0xff, gd54xx); gd54xx_write(addr+1, val >> 8, gd54xx); } } diff --git a/src/video/vid_ega.c b/src/video/vid_ega.c index 26ffb0d..b8e6273 100644 --- a/src/video/vid_ega.c +++ b/src/video/vid_ega.c @@ -9,7 +9,7 @@ * Emulation of the EGA, Chips & Technologies SuperEGA, and * AX JEGA graphics cards. * - * Version: @(#)vid_ega.c 1.0.2 2018/02/22 + * Version: @(#)vid_ega.c 1.0.3 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -428,7 +428,8 @@ void ega_poll(void *p) int x_add = enable_overscan ? 8 : 0; int y_add_ex = enable_overscan ? overscan_y : 0; int x_add_ex = enable_overscan ? 16 : 0; - uint32_t *q, i, j; + uint32_t *q; + int i, j; int wx = 640, wy = 350; if (!ega->linepos) diff --git a/src/video/vid_et4000w32.c b/src/video/vid_et4000w32.c index 57dac7d..3b727aa 100644 --- a/src/video/vid_et4000w32.c +++ b/src/video/vid_et4000w32.c @@ -10,7 +10,7 @@ * * Known bugs: Accelerator doesn't work in planar modes * - * Version: @(#)vid_et4000w32.c 1.0.2 2018/02/22 + * Version: @(#)vid_et4000w32.c 1.0.3 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -701,19 +701,19 @@ uint8_t et4000w32p_mmu_read(uint32_t addr, void *p) case 0x7f85: return et4000->acl.internal.source_addr >> 8; case 0x7f86: return et4000->acl.internal.source_addr >> 16; case 0x7f87: return et4000->acl.internal.source_addr >> 24; - case 0x7f88: return et4000->acl.internal.pattern_off; + case 0x7f88: return et4000->acl.internal.pattern_off & 0xff; case 0x7f89: return et4000->acl.internal.pattern_off >> 8; - case 0x7f8a: return et4000->acl.internal.source_off; + case 0x7f8a: return et4000->acl.internal.source_off & 0xff; case 0x7f8b: return et4000->acl.internal.source_off >> 8; - case 0x7f8c: return et4000->acl.internal.dest_off; + case 0x7f8c: return et4000->acl.internal.dest_off & 0xff; case 0x7f8d: return et4000->acl.internal.dest_off >> 8; case 0x7f8e: return et4000->acl.internal.pixel_depth; case 0x7f8f: return et4000->acl.internal.xy_dir; case 0x7f90: return et4000->acl.internal.pattern_wrap; case 0x7f92: return et4000->acl.internal.source_wrap; - case 0x7f98: return et4000->acl.internal.count_x; + case 0x7f98: return et4000->acl.internal.count_x & 0xff; case 0x7f99: return et4000->acl.internal.count_x >> 8; - case 0x7f9a: return et4000->acl.internal.count_y; + case 0x7f9a: return et4000->acl.internal.count_y & 0xff; case 0x7f9b: return et4000->acl.internal.count_y >> 8; case 0x7f9c: return et4000->acl.internal.ctrl_routing; case 0x7f9d: return et4000->acl.internal.ctrl_reload; diff --git a/src/video/vid_herculesplus.c b/src/video/vid_herculesplus.c index dffa293..c34e073 100644 --- a/src/video/vid_herculesplus.c +++ b/src/video/vid_herculesplus.c @@ -8,7 +8,7 @@ * * Hercules InColor emulation. * - * Version: @(#)vid_hercules_plus.c 1.0.1 2018/02/14 + * Version: @(#)vid_hercules_plus.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -203,7 +203,7 @@ void herculesplus_recalctimings(herculesplus_t *herculesplus) static void herculesplus_draw_char_rom(herculesplus_t *herculesplus, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk; unsigned ull; unsigned val; @@ -281,7 +281,7 @@ static void herculesplus_draw_char_rom(herculesplus_t *herculesplus, int x, uint static void herculesplus_draw_char_ram4(herculesplus_t *herculesplus, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk; unsigned ull; unsigned val; @@ -365,7 +365,7 @@ static void herculesplus_draw_char_ram4(herculesplus_t *herculesplus, int x, uin static void herculesplus_draw_char_ram48(herculesplus_t *herculesplus, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk, ul, ol, bld; unsigned ull, oll, ulc = 0, olc = 0; unsigned val; diff --git a/src/video/vid_incolor.c b/src/video/vid_incolor.c index e33e390..4295c02 100644 --- a/src/video/vid_incolor.c +++ b/src/video/vid_incolor.c @@ -8,7 +8,7 @@ * * Hercules InColor emulation. * - * Version: @(#)vid_incolor.c 1.0.1 2018/02/14 + * Version: @(#)vid_incolor.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -411,7 +411,7 @@ void incolor_recalctimings(incolor_t *incolor) static void incolor_draw_char_rom(incolor_t *incolor, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk; unsigned ull; unsigned val; @@ -511,7 +511,7 @@ static void incolor_draw_char_rom(incolor_t *incolor, int x, uint8_t chr, uint8_ static void incolor_draw_char_ram4(incolor_t *incolor, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk; unsigned ull; unsigned val[4]; @@ -631,7 +631,7 @@ static void incolor_draw_char_ram4(incolor_t *incolor, int x, uint8_t chr, uint8 static void incolor_draw_char_ram48(incolor_t *incolor, int x, uint8_t chr, uint8_t attr) { - unsigned i; + int i; int elg, blk, ul, ol, bld; unsigned ull, oll, ulc = 0, olc = 0; unsigned val[4]; diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c index f759449..ea323dc 100644 --- a/src/video/vid_s3.c +++ b/src/video/vid_s3.c @@ -10,7 +10,7 @@ * * NOTE: ROM images need more/better organization per chipset. * - * Version: @(#)vid_s3.c 1.0.3 2018/03/06 + * Version: @(#)vid_s3.c 1.0.4 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -641,7 +641,7 @@ static void s3_accel_write_fifo_w(s3_t *s3, uint32_t addr, uint16_t val) { if (addr & 0x8000) { - s3_accel_write_fifo(s3, addr, val); + s3_accel_write_fifo(s3, addr, val & 0xff); s3_accel_write_fifo(s3, addr + 1, val >> 8); } else @@ -1163,7 +1163,7 @@ static float s3_trio64_getclock(int clock, void *p) m = svga->seqregs[0x13] + 2; n1 = (svga->seqregs[0x12] & 0x1f) + 2; n2 = ((svga->seqregs[0x12] >> 5) & 0x07); - t = (14318184.0 * ((float)m / (float)n1)) / (float)(1 << n2); + t = (14318184.0f * (float)m / (float)n1) / (float)(1 << n2); return t; } diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c index 1ca09b2..3400e8b 100644 --- a/src/video/vid_s3_virge.c +++ b/src/video/vid_s3_virge.c @@ -8,7 +8,7 @@ * * S3 ViRGE emulation. * - * Version: @(#)vid_s3_virge.c 1.0.2 2018/02/22 + * Version: @(#)vid_s3_virge.c 1.0.3 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -1378,7 +1378,7 @@ static void s3_virge_mmio_write_w(uint32_t addr, uint16_t val, void *p) else switch (addr & 0xfffe) { case 0x83d4: - s3_virge_mmio_write(addr, val, p); + s3_virge_mmio_write(addr, val & 0xff, p); s3_virge_mmio_write(addr + 1, val >> 8, p); break; } diff --git a/src/video/vid_sdac_ramdac.c b/src/video/vid_sdac_ramdac.c index 83ca6b8..3234051 100644 --- a/src/video/vid_sdac_ramdac.c +++ b/src/video/vid_sdac_ramdac.c @@ -10,7 +10,7 @@ * * Misidentifies as AT&T 21C504. * - * Version: @(#)vid_sdac_ramdac.c 1.0.1 2018/02/14 + * Version: @(#)vid_sdac_ramdac.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -174,6 +174,6 @@ float sdac_getclock(int clock, void *p) m = (ramdac->regs[clock] & 0x7f) + 2; n1 = ((ramdac->regs[clock] >> 8) & 0x1f) + 2; n2 = ((ramdac->regs[clock] >> 13) & 0x07); - t = (14318184.0 * ((float)m / (float)n1)) / (float)(1 << n2); + t = (14318184.0f * (float)m / (float)n1) / (float)(1 << n2); return t; } diff --git a/src/video/vid_stg_ramdac.c b/src/video/vid_stg_ramdac.c index 6ffc1a6..693fd26 100644 --- a/src/video/vid_stg_ramdac.c +++ b/src/video/vid_stg_ramdac.c @@ -8,7 +8,7 @@ * * STG1702 true color RAMDAC emulation. * - * Version: @(#)vid_stg_ramdac.c 1.0.1 2018/02/14 + * Version: @(#)vid_stg_ramdac.c 1.0.2 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -195,7 +195,7 @@ float stg_getclock(int clock, void *p) n2 = ((*c >> 13) & 0x07); /* D */ b = (float) m; n1 = (float) n; - d = (double) (1 << n2); - t = (14318184.0 * (b / d)) / n1; + d = (float) (1 << n2); + t = (14318184.0f * b / d) / n1; return t; } diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c index 04c420c..74a99b7 100644 --- a/src/video/vid_svga.c +++ b/src/video/vid_svga.c @@ -11,7 +11,7 @@ * This is intended to be used by another SVGA driver, * and not as a card in it's own right. * - * Version: @(#)vid_svga.c 1.0.4 2018/03/05 + * Version: @(#)vid_svga.c 1.0.5 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -535,7 +535,7 @@ extern int cyc_total; void svga_poll(void *p) { svga_t *svga = (svga_t *)p; - int x; + uint32_t x; if (!svga->linepos) { if (svga->displine == svga->hwcursor_latch.y && svga->hwcursor_latch.ena) { @@ -1304,7 +1304,8 @@ void svga_doblit(int y1, int y2, int wx, int wy, svga_t *svga) { int y_add = (enable_overscan) ? overscan_y : 0; int x_add = (enable_overscan) ? 16 : 0; - uint32_t *p, i, j; + uint32_t *p; + int i, j; svga->frames++; @@ -1370,7 +1371,7 @@ void svga_writew(uint32_t addr, uint16_t val, void *p) svga_t *svga = (svga_t *)p; if (!svga->fast) { - svga_write(addr, val, p); + svga_write(addr, val & 0xff, p); svga_write(addr + 1, val >> 8, p); return; } @@ -1492,7 +1493,7 @@ void svga_writew_linear(uint32_t addr, uint16_t val, void *p) if (!svga->fast) { - svga_write_linear(addr, val, p); + svga_write_linear(addr, val & 0xff, p); svga_write_linear(addr + 1, val >> 8, p); return; } diff --git a/src/video/vid_tgui9440.c b/src/video/vid_tgui9440.c index df84564..970f636 100644 --- a/src/video/vid_tgui9440.c +++ b/src/video/vid_tgui9440.c @@ -47,7 +47,7 @@ * access size or host data has any affect, but the Windows 3.1 * driver always reads bytes and write words of 0xffff. * - * Version: @(#)vid_tgui9440.c 1.0.2 2018/02/22 + * Version: @(#)vid_tgui9440.c 1.0.3 2018/03/08 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -1128,7 +1128,7 @@ void tgui_accel_command(int count, uint32_t cpu_dat, tgui_t *tgui) int x, y; int c, d; uint16_t src_dat, dst_dat, pat_dat; - uint16_t out; + uint8_t out; int xdir = (tgui->accel.flags & 0x200) ? -1 : 1; int ydir = (tgui->accel.flags & 0x100) ? -1 : 1; uint16_t trans_col = (tgui->accel.flags & TGUI_TRANSREV) ? tgui->accel.fg_col : tgui->accel.bg_col; @@ -1593,7 +1593,7 @@ void tgui_accel_write(uint32_t addr, uint8_t val, void *p) void tgui_accel_write_w(uint32_t addr, uint16_t val, void *p) { tgui_t *tgui = (tgui_t *)p; - tgui_accel_write(addr, val, tgui); + tgui_accel_write(addr, val & 0xff, tgui); tgui_accel_write(addr + 1, val >> 8, tgui); }