]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1460b9.zip
authorToni Wilen <twilen@winuae.net>
Thu, 31 Jan 2008 18:54:30 +0000 (20:54 +0200)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:38:32 +0000 (21:38 +0200)
26 files changed:
a2091.c
akiko.c
ar.c
cd32_fmv.c [new file with mode: 0644]
cfgfile.c
drawing.c
expansion.c
include/akiko.h
include/cd32_fmv.h [new file with mode: 0644]
include/memory.h
include/options.h
main.c
memory.c
od-win32/lcd.c
od-win32/lcd.h
od-win32/resources/winuae.rc
od-win32/rp.c
od-win32/win32.c
od-win32/win32.h
od-win32/win32_scale2x.c
od-win32/win32gfx.c
od-win32/win32gui.c
od-win32/winuae_msvc/winuae_msvc.8.vcproj
od-win32/winuae_msvc/winuae_msvc.vcproj
od-win32/winuaechangelog.txt
sana2.c

diff --git a/a2091.c b/a2091.c
index 589835f17f89f5c87905182ddd1aa9278d967596..799a5f9b0cd7bdb534a56d4462ba6395ecd3503d 100644 (file)
--- a/a2091.c
+++ b/a2091.c
@@ -1317,12 +1317,12 @@ void a2091_init (void)
                int i;
                rom_size = 32768;
                rombankswitcher = 1;
-               rom = (uae_u8*)xmalloc (rom_size * 2);
+               rom = xmalloc (rom_size * 2);
                for (i = 0; i < rom_size; i++)
                    zfile_fread(rom + i * 2, 1, 1, z);
            } else {
                rom_size = 16384;
-               rom = (uae_u8*)xmalloc (rom_size);
+               rom = xmalloc (rom_size);
                zfile_fread (rom, rom_size, 1, z);
            }
            zfile_fclose(z);
diff --git a/akiko.c b/akiko.c
index e428cd01c82e26e31810aa54a44c3d0a4b91a33c..b59cb733fe9bd0c21a3323b60a25367509905f3f 100644 (file)
--- a/akiko.c
+++ b/akiko.c
@@ -348,6 +348,20 @@ static uae_u32 akiko_c2p_read (int offset)
 #define AUDIO_STATUS_PLAY_ERROR     0x14
 #define AUDIO_STATUS_NO_STATUS      0x15
 
+#define CH_ERR_BADCOMMAND       0x80 // %10000000
+#define CH_ERR_CHECKSUM         0x88 // %10001000
+#define CH_ERR_DRAWERSTUCK      0x90 // %10010000
+#define CH_ERR_DISKUNREADABLE   0x98 // %10011000
+#define CH_ERR_INVALIDADDRESS   0xa0 // %10100000
+#define CH_ERR_WRONGDATA        0xa8 // %10101000
+#define CH_ERR_FOCUSERROR       0xc8 // %11001000
+#define CH_ERR_SPINDLEERROR     0xd0 // %11010000
+#define CH_ERR_TRACKINGERROR    0xd8 // %11011000
+#define CH_ERR_SLEDERROR        0xe0 // %11100000
+#define CH_ERR_TRACKJUMP        0xe8 // %11101000
+#define CH_ERR_ABNORMALSEEK     0xf0 // %11110000
+#define CH_ERR_NODISK           0xf8 // %11111000
+
 static uae_u32 cdrom_status1, cdrom_status2;
 static uae_u8 cdrom_status3;
 static uae_u32 cdrom_address1, cdrom_address2;
@@ -941,7 +955,8 @@ static void cdrom_run_read (void)
            return;
        }
 #if AKIKO_DEBUG_IO_CMD
-       write_log ("read sector=%d, scnt=%d -> %d\n", cdrom_data_offset, cdrom_sector_counter, sector);
+       write_log ("read sector=%d, scnt=%d -> %d. %08X\n",
+           cdrom_data_offset, cdrom_sector_counter, sector, cdrom_address1 + j * 4096);
 #endif
        cdrom_readmask_w &= ~(1 << j);
     }
diff --git a/ar.c b/ar.c
index 49d11159b487ec1111be74bbe23d0737f340e40f..d10633fda902240028d3472751b83fb12ca961f9 100644 (file)
--- a/ar.c
+++ b/ar.c
@@ -1625,8 +1625,12 @@ int action_replay_load (void)
     if (strlen(currprefs.cartfile) == 0)
        return 0;
     rd = getromdatabypath(currprefs.cartfile);
-    if (rd && rd->id == 62)
-       return superiv_init(rd, NULL);
+    if (rd) {
+       if (rd->id == 62)
+           return superiv_init(rd, NULL);
+       if (rd->type & ROMTYPE_CD32CART)
+           return 0;
+    }
     f = zfile_fopen(currprefs.cartfile, "rb");
     if (!f) {
        write_log ("failed to load '%s' cartridge ROM\n", currprefs.cartfile);
@@ -1775,8 +1779,13 @@ int hrtmon_load (void)
     cart_type = CART_AR;
     hrtmem_start = 0xa10000;
     rd = getromdatabypath(currprefs.cartfile);
-    if (rd && rd->id == 63)
-       isinternal = 1;
+    if (rd) {
+       if (rd->id == 63)
+           isinternal = 1;
+       if (rd->type & ROMTYPE_CD32CART)
+           return 0;
+    }
+
     if (!isinternal) {
        if (strlen(currprefs.cartfile) == 0)
            return 0;
diff --git a/cd32_fmv.c b/cd32_fmv.c
new file mode 100644 (file)
index 0000000..f6379d3
--- /dev/null
@@ -0,0 +1,215 @@
+ /*
+  * UAE - The Un*x Amiga Emulator
+  *
+  * CD32 FMV cartridge
+  *
+  * Copyright 2008 Toni Wilen
+  *
+  */
+
+#include "sysconfig.h"
+#include "sysdeps.h"
+
+#include "options.h"
+#include "memory.h"
+#include "custom.h"
+#include "newcpu.h"
+#include "zfile.h"
+#include "cd32_fmv.h"
+#include "uae.h"
+
+//#define FMV_DEBUG
+
+static int fmv_mask;
+static uae_u8 *rom;
+static int rom_size = 262144;
+static uaecptr fmv_start = 0x00200000;
+static int fmv_size = 1048576;
+
+static uae_u8 fmv_bget2 (uaecptr addr)
+{
+#ifdef FMV_DEBUG
+    write_log ("fmv_bget2 %08X PC=%8X\n", addr, M68K_GETPC);
+#endif
+    if (addr >= rom_size) {
+       write_log ("fmv_bget2 %08X PC=%8X\n", addr, M68K_GETPC);
+       return 0;
+    }
+    return rom[addr];
+}
+static void fmv_bput2 (uaecptr addr, uae_u8 v)
+{
+    if (addr >= rom_size && addr < 0xf0000) {
+       ;//write_log ("fmv_bput2 %08X=%02X PC=%8X\n", addr, v & 0xff, M68K_GETPC);
+    }
+}
+
+static uae_u32 REGPARAM2 fmv_lget (uaecptr addr)
+{
+    uae_u32 v;
+#ifdef JIT
+    special_mem |= S_READ;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    v = (fmv_bget2 (addr) << 24) | (fmv_bget2 (addr + 1) << 16) |
+       (fmv_bget2 (addr + 2) << 8) | (fmv_bget2 (addr + 3));
+#ifdef FMV_DEBUG
+    write_log ("fmv_lget %08X=%08X PC=%08X\n", addr, v, M68K_GETPC);
+#endif
+    return v;
+}
+
+static uae_u32 REGPARAM2 fmv_wget (uaecptr addr)
+{
+    uae_u32 v;
+#ifdef JIT
+    special_mem |= S_READ;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    v = (fmv_bget2 (addr) << 8) | fmv_bget2 (addr + 1);
+#ifdef FMV_DEBUG
+    write_log ("fmv_wget %08X=%04X PC=%08X\n", addr, v, M68K_GETPC);
+#endif
+    return v;
+}
+
+static uae_u32 REGPARAM2 fmv_bget (uaecptr addr)
+{
+    uae_u32 v;
+#ifdef JIT
+    special_mem |= S_READ;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    v = fmv_bget2 (addr);
+    return v;
+}
+
+static void REGPARAM2 fmv_lput (uaecptr addr, uae_u32 l)
+{
+#ifdef JIT
+    special_mem |= S_WRITE;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+#ifdef FMV_DEBUG
+    write_log ("fmv_lput %08X=%08X PC=%08X\n", addr, l, M68K_GETPC);
+#endif
+    fmv_bput2 (addr, l >> 24);
+    fmv_bput2 (addr + 1, l >> 16);
+    fmv_bput2 (addr + 2, l >> 8);
+    fmv_bput2 (addr + 3, l);
+}
+
+static void REGPARAM2 fmv_wput (uaecptr addr, uae_u32 w)
+{
+#ifdef JIT
+    special_mem |= S_WRITE;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+#ifdef FMV_DEBUG
+    write_log ("fmv_wput %04X=%04X PC=%08X\n", addr, w & 65535, M68K_GETPC);
+#endif
+    fmv_bput2 (addr, w >> 8);
+    fmv_bput2 (addr + 1, w);
+}
+
+static addrbank fmv_bank;
+
+static void REGPARAM2 fmv_bput (uaecptr addr, uae_u32 b)
+{
+#ifdef JIT
+    special_mem |= S_WRITE;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    fmv_bput2 (addr, b);
+}
+
+static uae_u32 REGPARAM2 fmv_wgeti (uaecptr addr)
+{
+    uae_u32 v = 0;
+    uae_u8 *m;
+#ifdef JIT
+    special_mem |= S_READ;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    m = rom + addr;
+    if (addr < rom_size)
+       return do_get_mem_word ((uae_u16 *)m);
+#ifdef FMV_DEBUG
+    write_log ("fmv_wgeti %08X %08X PC=%08X\n", addr, v, M68K_GETPC);
+#endif
+    return v;
+}
+
+static uae_u32 REGPARAM2 fmv_lgeti (uaecptr addr)
+{
+    uae_u32 v = 0;
+    uae_u8 *m;
+#ifdef JIT
+    special_mem |= S_READ;
+#endif
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    m = rom + addr;
+    if (addr < rom_size)
+       return do_get_mem_long ((uae_u32 *)m);
+#ifdef FMV_DEBUG
+    write_log ("fmv_lgeti %08X %08X PC=%08X\n", addr, v, M68K_GETPC);
+#endif
+    return v;
+}
+
+static int REGPARAM2 fmv_check (uaecptr addr, uae_u32 size)
+{
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    return (addr + size) <= fmv_size;
+}
+
+static uae_u8 *REGPARAM2 fmv_xlate (uaecptr addr)
+{
+    addr -= fmv_start & fmv_mask;
+    addr &= fmv_mask;
+    return rom + addr;
+}
+
+static addrbank fmv_bank = {
+    fmv_lget, fmv_wget, fmv_bget,
+    fmv_lput, fmv_wput, fmv_bput,
+    fmv_xlate, fmv_check, NULL, "CD32 FMV module",
+    fmv_lgeti, fmv_wgeti, ABFLAG_ROM | ABFLAG_IO
+};
+
+
+
+void cd32_fmv_init (uaecptr start)
+{
+    int ids[] = { 72, -1 };
+    struct romlist *rl = getromlistbyids (ids);
+    struct zfile *z;
+
+    write_log ("CD32 FMV mapped @$%lx\n", start);
+    if (start != fmv_start)
+       return;
+    if (!rl)
+       return;
+    write_log ("CD32 FMV ROM '%s' %d.%d\n", rl->path, rl->rd->ver, rl->rd->rev);
+    z = zfile_fopen(rl->path, "rb");
+    if (z) {
+       rom = mapped_malloc (fmv_size, "fast");
+       if (rom) {
+           zfile_fread(rom, rom_size, 1, z);
+           zfile_fclose (z);
+       }
+    }
+    fmv_mask = fmv_size - 1;
+    fmv_bank.baseaddr = rom;
+    rom[0x282] = 0;
+    map_banks (&fmv_bank, start >> 16, fmv_size >> 16, 0);
+}
index 21580576b88fdaa4943d1cffccc723297ce46256..2741d4939f0e48af4cc4f1d26c1d7901775fb8a2 100644 (file)
--- a/cfgfile.c
+++ b/cfgfile.c
@@ -625,7 +625,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
     cfgfile_write (f, "z3mem_start=0x%x\n", p->z3fastmem_start);
     cfgfile_write (f, "bogomem_size=%d\n", p->bogomem_size / 0x40000);
     cfgfile_write (f, "gfxcard_size=%d\n", p->gfxmem_size / 0x100000);
-    cfgfile_write (f, "chipmem_size=%d\n", (p->chipmem_size == 0x40000) ? 0 : p->chipmem_size / 0x80000);
+    cfgfile_write (f, "chipmem_size=%d\n", p->chipmem_size == 0x20000 ? -1 : (p->chipmem_size == 0x40000 ? 0 : p->chipmem_size / 0x80000));
 
     if (p->m68k_speed > 0)
        cfgfile_write (f, "finegrain_cpu_speed=%d\n", p->m68k_speed);
@@ -864,8 +864,10 @@ static int cfgfile_parse_host (struct uae_prefs *p, char *option, char *value)
        || cfgfile_intval (option, value, "gfx_refreshrate", &p->gfx_refreshrate, 1)
        || cfgfile_intval (option, value, "gfx_autoresolution", &p->gfx_autoresolution, 1)
 
-       || cfgfile_intval (option, value, "gfx_center_horizontal_adjust", &p->gfx_xcenter_adjust, 1)
-       || cfgfile_intval (option, value, "gfx_center_vertical_adjust", &p->gfx_ycenter_adjust, 1)
+       || cfgfile_intval (option, value, "gfx_center_horizontal_position", &p->gfx_xcenter_pos, 1)
+       || cfgfile_intval (option, value, "gfx_center_vertical_position", &p->gfx_ycenter_pos, 1)
+       || cfgfile_intval (option, value, "gfx_center_horizontal_size", &p->gfx_xcenter_size, 1)
+       || cfgfile_intval (option, value, "gfx_center_vertical_size", &p->gfx_ycenter_size, 1)
 
 #ifdef GFXFILTER
        || cfgfile_intval (option, value, "gfx_filter_vert_zoom", &p->gfx_filter_vert_zoom, 1)
@@ -1409,8 +1411,10 @@ static int cfgfile_parse_hardware (struct uae_prefs *p, char *option, char *valu
     }
 
     if (cfgfile_intval (option, value, "chipmem_size", &dummy, 1)) {
-       if (!dummy)
-           p->chipmem_size = 0x40000;
+       if (dummy < 0)
+           p->chipmem_size = 0x20000; /* 128k, prototype support */
+       else if (dummy == 0)
+           p->chipmem_size = 0x40000; /* 256k */
        else
            p->chipmem_size = dummy * 0x80000;
        return 1;
@@ -2863,8 +2867,9 @@ void default_prefs (struct uae_prefs *p, int type)
     p->gfx_afullscreen = 0;
     p->gfx_pfullscreen = 0;
     p->gfx_correct_aspect = 0;
-    p->gfx_xcenter = 0; p->gfx_xcenter_adjust = 0;
-    p->gfx_ycenter = 0; p->gfx_ycenter_adjust = 0;
+    p->gfx_xcenter = 0; p->gfx_ycenter = 0;
+    p->gfx_xcenter_pos = -1; p->gfx_ycenter_pos = -1;
+    p->gfx_xcenter_size = -1; p->gfx_ycenter_size = -1;
     p->color_mode = 2;
 
     p->x11_use_low_bandwidth = 0;
index 6d63ad45f4ae2b1093452f4b3bedb0a84b6b7f41..b468e2241c7aabc498eb7eb324d686abdf8618c5 100644 (file)
--- a/drawing.c
+++ b/drawing.c
@@ -1979,14 +1979,14 @@ static void center_image (void)
        if (doublescan)
            visible_left_border = (max_diwlastword - 48) / 2 - gfxvidinfo.width;
     }
-    if (currprefs.gfx_xcenter_adjust > 0)
-       visible_left_border = currprefs.gfx_xcenter_adjust + (DIW_DDF_OFFSET << currprefs.gfx_resolution);
-    visible_left_border &= ~((xshift (1, lores_shift)) - 1);
+    if (currprefs.gfx_xcenter_pos >= 0)
+       visible_left_border = currprefs.gfx_xcenter_pos + (DIW_DDF_OFFSET << currprefs.gfx_resolution) - (DISPLAY_LEFT_SHIFT * 2 - (DISPLAY_LEFT_SHIFT << currprefs.gfx_resolution));
 
     if (visible_left_border > max_diwlastword - 32)
        visible_left_border = max_diwlastword - 32;
     if (visible_left_border < 0)
        visible_left_border = 0;
+    visible_left_border &= ~((xshift (1, lores_shift)) - 1);
 
     linetoscr_x_adjust_bytes = visible_left_border * gfxvidinfo.pixbytes;
 
@@ -2011,8 +2011,8 @@ static void center_image (void)
                thisframe_y_adjust = prev_y_adjust;
        }
     }
-    if (currprefs.gfx_ycenter_adjust > 0) {
-       thisframe_y_adjust = currprefs.gfx_ycenter_adjust;
+    if (currprefs.gfx_ycenter_pos >= 0) {
+       thisframe_y_adjust = currprefs.gfx_ycenter_pos;
        if (thisframe_y_adjust + max_drawn_amiga_line > 2 * maxvpos_max)
            thisframe_y_adjust = 2 * maxvpos_max - max_drawn_amiga_line;
        if (thisframe_y_adjust < 0)
index e9516bac1eff9347ae1b536da93bab41f7ae6da9..a4b7c7a68b8a7910c379dd4f87e1b04d0a61d17b 100644 (file)
@@ -23,6 +23,7 @@
 #include "catweasel.h"
 #include "cdtv.h"
 #include "a2091.h"
+#include "cd32_fmv.h"
 #include "ncr_scsi.h"
 #include "debug.h"
 
@@ -339,6 +340,33 @@ static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value)
     }
 }
 
+#ifdef CD32
+
+static void expamem_map_cd32fmv (void)
+{
+    uaecptr start = ((expamem_hi | (expamem_lo >> 4)) << 16);
+    cd32_fmv_init (start);
+}
+
+static void expamem_init_cd32fmv (void)
+{
+    int ids[] = { 72, -1 };
+    struct romlist *rl = getromlistbyids (ids);
+    struct zfile *z;
+
+    expamem_init_clear ();
+    if (!rl)
+       return;
+    write_log ("CD32 FMV ROM '%s' %d.%d\n", rl->path, rl->rd->ver, rl->rd->rev);
+    z = zfile_fopen(rl->path, "rb");
+    if (z) {
+       zfile_fread (expamem, 128, 1, z);
+       zfile_fclose (z);
+    }
+}
+
+#endif
+
 /* ********************************************************** */
 
 /*
@@ -1185,6 +1213,16 @@ void expamem_reset (void)
        card_map[cardno++] = NULL;
     }
 #endif
+#ifdef CD32
+    if (currprefs.cs_cd32cd && currprefs.fastmem_size == 0 && currprefs.chipmem_size <= 0x200000) {
+       int ids[] = { 72, -1 };
+       struct romlist *rl = getromlistbyids (ids);
+       if (rl && !strcmp (rl->path, currprefs.cartfile)) {
+           card_init[cardno] = expamem_init_cd32fmv;
+           card_map[cardno++] = expamem_map_cd32fmv;
+       }
+    }
+#endif
 #ifdef NCR
     if (currprefs.cs_a4091) {
        card_init[cardno] = expamem_init_a4091;
index 862073d2c240452cc19b9cc8f82bc657655e0050..a4a6d78c74a7b05ef9efdb3db3b187039f9d598a 100644 (file)
@@ -13,4 +13,4 @@ extern void AKIKO_hsync_handler (void);
 
 extern uae_u8 *extendedkickmemory;
 
-extern void rethink_akiko (void);
\ No newline at end of file
+extern void rethink_akiko (void);
diff --git a/include/cd32_fmv.h b/include/cd32_fmv.h
new file mode 100644 (file)
index 0000000..458f849
--- /dev/null
@@ -0,0 +1,2 @@
+
+extern void cd32_fmv_init (uaecptr);
index 4b41a57220548f28457e2c04abe1bb4ba7c3b7ae..66ba7693debc729c2a3ae659ff63cec968153023 100644 (file)
@@ -344,10 +344,11 @@ extern void a3000_fakekick(int);
 #define ROMTYPE_HRTMON 2048
 #define ROMTYPE_NORDIC 4096
 #define ROMTYPE_XPOWER 8192
-#define ROMTYPE_EVEN 16384
-#define ROMTYPE_ODD 32768
-#define ROMTYPE_BYTESWAP 65536
-#define ROMTYPE_SCRAMBLED 131072
+#define ROMTYPE_CD32CART 16384
+#define ROMTYPE_EVEN 131072
+#define ROMTYPE_ODD 262144
+#define ROMTYPE_BYTESWAP 524288
+#define ROMTYPE_SCRAMBLED 1048576
 
 struct romheader {
     char *name;
index 61ccfb83e49fe4de75e98f16590015c0cf27ba0d..7caf776fff3b34a5d42a8e6feb61ddf159dba1ce 100644 (file)
@@ -164,8 +164,9 @@ struct uae_prefs {
     int gfx_linedbl;
     int gfx_correct_aspect;
     int gfx_afullscreen, gfx_pfullscreen;
-    int gfx_xcenter, gfx_xcenter_adjust;
-    int gfx_ycenter, gfx_ycenter_adjust;
+    int gfx_xcenter, gfx_ycenter;
+    int gfx_xcenter_pos, gfx_ycenter_pos;
+    int gfx_xcenter_size, gfx_ycenter_size;
     int gfx_saturation, gfx_luminance, gfx_contrast, gfx_gamma;
     int color_mode;
 
diff --git a/main.c b/main.c
index 96e8de4e15112f12b2b4dc73dddc5b50761d975d..cd8af1c0cd372785934e138011bf135583629834 100644 (file)
--- a/main.c
+++ b/main.c
@@ -107,12 +107,12 @@ void discard_prefs (struct uae_prefs *p, int type)
 
 static void fixup_prefs_dim2 (struct wh *wh)
 {
-    if (wh->width < 320)
-       wh->width = 320;
-    if (wh->height < 200)
-       wh->height = 200;
-    if (wh->width > 2048)
-       wh->width = 2048;
+    if (wh->width < 160)
+       wh->width = 160;
+    if (wh->height < 128)
+       wh->height = 128;
+    if (wh->width > 3072)
+       wh->width = 3072;
     if (wh->height > 2048)
        wh->height = 2048;
     wh->width += 7;
@@ -121,6 +121,10 @@ static void fixup_prefs_dim2 (struct wh *wh)
 
 void fixup_prefs_dimensions (struct uae_prefs *prefs)
 {
+    if (prefs->gfx_xcenter_size > 0)
+        prefs->gfx_size_win.width = prefs->gfx_xcenter_size << prefs->gfx_resolution;
+    if (prefs->gfx_ycenter_size > 0)
+        prefs->gfx_size_win.height = prefs->gfx_ycenter_size << (prefs->gfx_linedbl ? 1 : 0);
     fixup_prefs_dim2 (&prefs->gfx_size_fs);
     fixup_prefs_dim2 (&prefs->gfx_size_win);
 }
@@ -164,7 +168,7 @@ void fixup_prefs (struct uae_prefs *p)
     fixup_cpu (p);
 
     if ((p->chipmem_size & (p->chipmem_size - 1)) != 0
-       || p->chipmem_size < 0x40000
+       || p->chipmem_size < 0x20000
        || p->chipmem_size > 0x800000)
     {
        write_log ("Unsupported chipmem size %x!\n", p->chipmem_size);
index 7b430134604e134ed29191ac7206ec2ad8e6fd6a..5855d8bac19418ead09f25493418e649b55861a2 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -28,6 +28,7 @@
 #include "enforcer.h"
 #include "a2091.h"
 #include "gayle.h"
+#include "debug.h"
 
 int canbang;
 int candirect = -1;
@@ -117,7 +118,7 @@ struct romdata *getromdatabypath(char *path)
     return NULL;
 }
 
-#define NEXT_ROM_ID 72
+#define NEXT_ROM_ID 73
 
 static struct romheader romheaders[] = {
     { "Freezer Cartridges", 1 },
@@ -191,6 +192,8 @@ static struct romdata roms[] = {
        0x87746be2, 0x5BEF3D62,0x8CE59CC0,0x2A66E6E4,0xAE0DA48F,0x60E78F7F },
     { "CD32 ROM (KS + extended)", 3, 1, 40, 60, "CD32\0", 2 * 524288, 64, 1, 0, ROMTYPE_KICKCD32 | ROMTYPE_EXTCD32, 0, 0,
        0xd3837ae4, 0x06807db3,0x18163745,0x5f4d4658,0x2d9972af,0xec8956d9 },
+    { "CD32 MPEG Cartridge ROM", 3, 1, 40, 30, "CD32\0", 262144, 72, 1, 0, ROMTYPE_CD32CART, 0, 0,
+       0xc35c37bf, 0x03ca81c7,0xa7b259cf,0x64bc9582,0x863eca0f,0x6529f435 },
 
     { "CDTV extended ROM v1.00", 1, 0, 1, 0, "CDTV\0", 262144, 20, 0, 0, ROMTYPE_EXTCDTV, 0, 0,
        0x42baa124, 0x7BA40FFA,0x17E500ED,0x9FED041F,0x3424BD81,0xD9C907BE },
@@ -1830,20 +1833,22 @@ uae_u8 *REGPARAM2 default_xlate (uaecptr a)
 #if defined(ENFORCER)
            enforcer_disable ();
 #endif
+
            if (be_cnt < 3) {
                int i, j;
                uaecptr a2 = a - 32;
                uaecptr a3 = m68k_getpc (&regs) - 32;
-               write_log ("Your Amiga program just did something terribly stupid %08.8X PC=%08.8X\n", a, M68K_GETPC);
+               write_log ("Your Amiga program just did something terribly stupid %08X PC=%08.8X\n", a, M68K_GETPC);
                m68k_dumpstate (0, 0);
                for (i = 0; i < 10; i++) {
-                   write_log ("%08.8X ", i >= 5 ? a3 : a2);
+                   write_log ("%08X ", i >= 5 ? a3 : a2);
                    for (j = 0; j < 16; j += 2) {
-                       write_log (" %04.4X", get_word (i >= 5 ? a3 : a2));
+                       write_log (" %04X", get_word (i >= 5 ? a3 : a2));
                        if (i >= 5) a3 += 2; else a2 += 2;
                    }
                    write_log ("\n");
                }
+               memory_map_dump ();
            }
            be_cnt++;
            if (be_cnt > 1000) {
index 6ea0f18fd71d4e493cecde06a9f5ab29e093ce38..af632e280fb1aca880502fd3d2721242b26f1219 100644 (file)
@@ -20,6 +20,7 @@ static lgLcdBitmapHeader *lbh;
 static uae_u8 *bitmap, *origbitmap;
 static uae_u8 *numbers;
 static int numbers_width = 7, numbers_height = 10;
+static int old_pri;
 
 void lcd_close(void)
 {
@@ -39,6 +40,7 @@ static int lcd_init(void)
     HDC dc;
     int x, y;
 
+    old_pri = 0;
     ret = lgLcdInit();
     if (ret != ERROR_SUCCESS) {
        if (ret == RPC_S_SERVER_UNAVAILABLE || ret == ERROR_OLD_WIN_VERSION) {
@@ -145,6 +147,16 @@ static int coords[] = {
     2, 2, 30, 10 // POWER
 };
 
+void lcd_priority (int priority)
+{
+    if (!inited)
+       return;
+    if (old_pri == priority)
+       return;
+    if (lgLcdSetAsLCDForegroundApp(device, priority ? LGLCD_LCD_FOREGROUND_APP_YES : LGLCD_LCD_FOREGROUND_APP_NO) == ERROR_SUCCESS)
+       old_pri = priority;
+}
+
 void lcd_update(int led, int on)
 {
     int track, x, y;
@@ -173,7 +185,7 @@ void lcd_update(int led, int on)
     } else if (led == 7) {
        y = 2;
        x = 125;
-       putnumbers(x, y, gui_data.fps <= 999 ? gui_data.fps / 10 : 99, 0);
+       putnumbers(x, y, gui_data.fps <= 999 ? (gui_data.fps + 5) / 10 : 99, 0);
     } else if (led == 8) {
        y = 2;
        x = 98;
index 087b6d3ec25becffb5bc1c0a2ad8ad9beec9e199..7b8bb25e9549b60577b72e8b01f2e9a7b5984981 100644 (file)
@@ -1,3 +1,4 @@
 extern int lcd_open(void);
 extern void lcd_close(void);
 extern void lcd_update(int, int);
+extern void lcd_priority(int);
\ No newline at end of file
index 6537db950386d8e24060c61a389aba86361cfbb7..d99082c7687159f3109758108e4bd552b8c6df4c 100644 (file)
@@ -511,8 +511,10 @@ BEGIN
     GROUPBOX        "Chipset",IDC_STATIC,14,11,145,90
     CONTROL         "OCS [] Original chipset. A1000 and most A500s.",IDC_OCS,
                     "Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,37,26,51,10
-    CONTROL         "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). Later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,
+    CONTROL         "ECS Agnus [] Enhanced chipset (ECS Agnus chip only). CDTV and later A500 and A2000 hardware revisions.",IDC_ECS_AGNUS,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,42,55,10
+    CONTROL         "ECS Denise [] Enhanced chipset (ECS Denise chip only). Normally paired with ECS Agnus.",IDC_ECS_DENISE,
+                    "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,100,42,55,10
     CONTROL         "Full ECS [] Full ECS chipset (ECS Agnus and ECS Denise chips). A500+, A600 and A3000.",IDC_ECS,
                     "Button",BS_AUTORADIOBUTTON | WS_TABSTOP,37,58,52,10
     CONTROL         "AGA [] Advanced Graphics Architecture chipset. A1200, A4000 and CD32.",IDC_AGA,
index cb8a8a6afc279f2a1b4ddaccd18595f0e591801a..1adf36d0e8f6d7dcdee28335024079d562606f4b 100644 (file)
@@ -234,9 +234,13 @@ static LRESULT CALLBACK RPHostMsgFunction(UINT uMessage, WPARAM wParam, LPARAM l
        case RPIPCHM_SCREENCAPTURE:
        {
            extern int screenshotf (const char *spath, int mode, int doprepare);
+           extern int screenshotmode;
            int ok;
+           int ossm = screenshotmode;
            char *s = ua ((WCHAR*)pData);
+           screenshotmode = 0;
            ok = screenshotf (s, 1, 1);
+           screenshotmode = ossm;
            xfree (s);
            return ok ? TRUE : FALSE;
        }
@@ -303,7 +307,7 @@ void rp_fixup_options (struct uae_prefs *p)
 
     RPSendMessagex(RPIPCGM_FEATURES,
        RP_FEATURE_POWERLED | RP_FEATURE_SCREEN1X | RP_FEATURE_SCREEN2X | RP_FEATURE_FULLSCREEN |
-       RP_FEATURE_PAUSE | RP_FEATURE_TURBO | RP_FEATURE_INPUTMODE | RP_FEATURE_VOLUME,
+       RP_FEATURE_PAUSE | RP_FEATURE_TURBO | RP_FEATURE_INPUTMODE | RP_FEATURE_VOLUME | RP_FEATURE_SCREENCAPTURE,
        0, NULL, 0, &guestinfo, NULL);
     /* floppy drives */
     v = 0;
index 2716af956d1389fbf618d5b3c7e476de5b73fe42..2924788a67b262ffda1f8f190f96bfd9a9e46481 100644 (file)
@@ -658,7 +658,10 @@ static void winuae_active (HWND hWnd, int minimized)
     if (minimized)
        rp_minimize (0);
 #endif
-
+#ifdef LOGITECHLCD
+    if (!minimized)
+       lcd_priority (1);
+#endif
 }
 
 static void winuae_inactive (HWND hWnd, int minimized)
@@ -705,6 +708,9 @@ static void winuae_inactive (HWND hWnd, int minimized)
     if (minimized)
        rp_minimize (1);
 #endif
+#ifdef LOGITECHLCD
+    lcd_priority (0);
+#endif
 }
 
 void minimizewindow (void)
@@ -1622,9 +1628,9 @@ HMODULE language_load(WORD language)
        int fail = 1;
 
        if (language == 0x400)
-           sprintf (dllbuf, "%sguidll.dll", start_path_exe);
+           strcpy (dllbuf, "guidll.dll");
        else
-           sprintf (dllbuf, "%sWinUAE_%s.dll", start_path_exe, dllname);
+           sprintf (dllbuf, "WinUAE_%s.dll", dllname);
        result = WIN32_LoadLibrary (dllbuf);
        if (result)  {
            dwFileVersionInfoSize = GetFileVersionInfoSize(dllbuf, &dwVersionHandle);
index 9b02b1ddb3cc3698c758e15574488b12796be690..caad7074232f0d9c02cd14f9c22e7e67f41da0bf 100644 (file)
@@ -15,9 +15,9 @@
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEBETA 8
+#define WINUAEBETA 9
 #define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2008, 1, 24)
+#define WINUAEDATE MAKEBD(2008, 1, 31)
 #define WINUAEEXTRA ""
 #define WINUAEREV ""
 
index 349c51dc34ea9519b43adfbf80bd017fb362b515..4f1b8f7326c948f7469e6e6fd50f83adfe6189d8 100644 (file)
@@ -208,12 +208,6 @@ void S2X_render (void)
            sr.bottom = sr.top + dst_height;
        }
 
-       if (currprefs.gfx_filter_upscale) {
-           dr.left = dr.top = 0;
-           dr.right = dst_width;
-           dr.bottom = dst_height;
-       }
-
        if (tempsurf && sr.left != 0 || sr.top != 0 || sr.right != dst_width || sr.bottom != dst_height ||
            dr.top != 0 || dr.right != dst_width || dr.left != 0 || dr.bottom != dst_height || currprefs.gfx_filter_upscale) {
                dds = DirectDrawState.temporary.surface;
index fe9742be4b08ae09822e24665cf3cfd265f158bc..d9f3906fd6be4fa4c6ae5c5452381eb0ff67d984 100644 (file)
@@ -1200,16 +1200,23 @@ int check_prefs_changed_gfx (void)
     }
 
     if (currprefs.gfx_correct_aspect != changed_prefs.gfx_correct_aspect ||
-       currprefs.gfx_xcenter_adjust != changed_prefs.gfx_xcenter_adjust ||
-       currprefs.gfx_ycenter_adjust != changed_prefs.gfx_ycenter_adjust ||
+       currprefs.gfx_xcenter_pos != changed_prefs.gfx_xcenter_pos ||
+       currprefs.gfx_ycenter_pos != changed_prefs.gfx_ycenter_pos ||
+       currprefs.gfx_xcenter_size != changed_prefs.gfx_xcenter_size ||
+       currprefs.gfx_ycenter_size != changed_prefs.gfx_ycenter_size ||
        currprefs.gfx_xcenter != changed_prefs.gfx_xcenter ||
        currprefs.gfx_ycenter != changed_prefs.gfx_ycenter)
     {
        currprefs.gfx_correct_aspect = changed_prefs.gfx_correct_aspect;
-       currprefs.gfx_xcenter_adjust = changed_prefs.gfx_xcenter_adjust;
-       currprefs.gfx_ycenter_adjust = changed_prefs.gfx_ycenter_adjust;
+       currprefs.gfx_xcenter_pos = changed_prefs.gfx_xcenter_pos;
+       currprefs.gfx_ycenter_pos = changed_prefs.gfx_ycenter_pos;
+       currprefs.gfx_xcenter_size = changed_prefs.gfx_xcenter_size;
+       currprefs.gfx_ycenter_size = changed_prefs.gfx_ycenter_size;
        currprefs.gfx_xcenter = changed_prefs.gfx_xcenter;
        currprefs.gfx_ycenter = changed_prefs.gfx_ycenter;
+
+       fixup_prefs_dimensions (&changed_prefs);
+
        return 1;
     }
 
index 03385d28d110ab23ba0704f80ad88510ab5f228c..fb70139f6646818911793001b51b9102caedfd52 100644 (file)
@@ -4133,11 +4133,9 @@ static void values_to_chipsetdlg (HWND hDlg)
     case CSMASK_ECS_AGNUS:
        CheckRadioButton(hDlg, IDC_OCS, IDC_AGA, IDC_OCS + 1);
        break;
-#if 0
     case CSMASK_ECS_DENISE:
        CheckRadioButton(hDlg, IDC_OCS, IDC_AGA, IDC_OCS + 2);
        break;
-#endif
     case CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE:
        CheckRadioButton(hDlg, IDC_OCS, IDC_AGA, IDC_OCS + 3);
        break;
@@ -4199,12 +4197,10 @@ static void values_from_chipsetdlg (HWND hDlg, UINT msg, WPARAM wParam, LPARAM l
     workprefs.collision_level = IsDlgButtonChecked (hDlg, IDC_COLLISION0) ? 0
                                 : IsDlgButtonChecked (hDlg, IDC_COLLISION1) ? 1
                                 : IsDlgButtonChecked (hDlg, IDC_COLLISION2) ? 2 : 3;
-    workprefs.chipset_mask = IsDlgButtonChecked( hDlg, IDC_OCS ) ? 0
-                             : IsDlgButtonChecked( hDlg, IDC_ECS_AGNUS ) ? CSMASK_ECS_AGNUS
-#if 0
-                             : IsDlgButtonChecked( hDlg, IDC_ECS_DENISE ) ? CSMASK_ECS_DENISE
-#endif
-                             : IsDlgButtonChecked( hDlg, IDC_ECS ) ? CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE
+    workprefs.chipset_mask = IsDlgButtonChecked (hDlg, IDC_OCS) ? 0
+                             : IsDlgButtonChecked (hDlg, IDC_ECS_AGNUS) ? CSMASK_ECS_AGNUS
+                             : IsDlgButtonChecked (hDlg, IDC_ECS_DENISE) ? CSMASK_ECS_DENISE
+                             : IsDlgButtonChecked (hDlg, IDC_ECS) ? CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE
                              : CSMASK_AGA | CSMASK_ECS_AGNUS | CSMASK_ECS_DENISE;
     n = IsDlgButtonChecked (hDlg, IDC_NTSC) ? 1 : 0;
     if (workprefs.ntscmode != n) {
@@ -4773,7 +4769,7 @@ static void values_to_kickstartdlg (HWND hDlg)
     addromfiles (fkey, hDlg, IDC_ROMFILE2, workprefs.romextfile,
         ROMTYPE_EXTCD32 | ROMTYPE_EXTCDTV | ROMTYPE_ARCADIABIOS);
     addromfiles (fkey, hDlg, IDC_CARTFILE, workprefs.cartfile,
-        ROMTYPE_AR | ROMTYPE_SUPERIV | ROMTYPE_NORDIC | ROMTYPE_XPOWER | ROMTYPE_ARCADIAGAME | ROMTYPE_HRTMON);
+        ROMTYPE_AR | ROMTYPE_SUPERIV | ROMTYPE_NORDIC | ROMTYPE_XPOWER | ROMTYPE_ARCADIAGAME | ROMTYPE_HRTMON | ROMTYPE_CD32CART);
     regclosetree (fkey);
 
     SetDlgItemText(hDlg, IDC_FLASHFILE, workprefs.flashfile);
@@ -8483,6 +8479,7 @@ static void enable_for_hw3ddlg (HWND hDlg)
     ew (hDlg, IDC_FILTERPRESETSAVE, filterpreset_builtin < 0);
     ew (hDlg, IDC_FILTERPRESETLOAD, filterpreset_selected > 0);
     ew (hDlg, IDC_FILTERPRESETDELETE, filterpreset_selected > 0 && filterpreset_builtin < 0);
+    CheckDlgButton(hDlg, IDC_FILTERUPSCALE, workprefs.gfx_filter_upscale);
 }
 
 static void makefilter(char *s, int x, int flags)
index cacf53b82b68dd3b9cc58745c8c1db57a93363bb..5aef500908027b9f5504ed04cfdc24c88c687089 100644 (file)
                                RelativePath="..\caps\caps_win32.c"
                                >
                        </File>
+                       <File
+                               RelativePath="..\..\cd32_fmv.c"
+                               >
+                       </File>
                        <File
                                RelativePath="..\debug_win32.c"
                                >
index 0b63883aaf5f760b6e7449e73d39afe96ce46928..9403eec85e05c341b71a1f8e8bc3da30b1d4b902 100644 (file)
                                RelativePath="..\..\catweasel.c"
                                >
                        </File>
+                       <File
+                               RelativePath="..\..\cd32_fmv.c"
+                               >
+                       </File>
                        <File
                                RelativePath="..\..\cdrom.c"
                                >
                        RelativePath="..\hq2x32.obj"
                        >
                </File>
-               <File
-                       RelativePath="..\resources\resource"
-                       >
-               </File>
                <File
                        RelativePath="..\resources\resource.h"
                        >
index 1f72a23b696fdccb7dcb49dfe3cf4cef03905ee3..a39f38aed7afa5e95e40a1d0cd77f6008e32e154 100644 (file)
@@ -3,6 +3,20 @@
 1.4.6 will be the last Windows 98/ME compatible version. 1.5.0
 will require Windows 2000 or newer.
 
+Beta 9:
+
+- CD32 FMV cartridge "supported" (Actually it is a Z2 board). CD32 FMV
+  ROM checksums added to scanner. Completely unusable currently.
+  CD32 Cannon Fodder will try to play video, of course nothing can be
+  seen or heard :)
+- ECS Denise (without ECS Agnus) option re-added. Confirmed working
+  configuration (except superhires, OCS Agnus does not know shres
+  bitplane DMA sequence, result is vertical stripes. This "feature"
+  is not emulated)
+- full screen filter GUI checkbox was not initialized correctly
+- small fullscreen filter tweak
+- set foreground Logitech LCD priority when WinUAE has focus
+
 Beta 8:
 
 - input-panel NMI and END+SHIFT+Break NMI was unstable in
diff --git a/sana2.c b/sana2.c
index 9ce367e3c10636e3cb0fc67a9b9cf1e50296e571..50a3aaf5b30fb950a60f559332c26612019e2dd7 100644 (file)
--- a/sana2.c
+++ b/sana2.c
@@ -1211,7 +1211,7 @@ static int dev_do_io (struct devstruct *dev, uaecptr request, int quick)
 
     }
 end:
-    if (log_net)
+    if (log_net && (io_error || wire_error))
        write_log("-> %d (%d)\n", io_error, wire_error);
     put_long (request + 32, wire_error);
     put_byte (request + 31, io_error);