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);
#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;
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);
}
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);
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;
--- /dev/null
+ /*
+ * 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);
+}
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);
|| 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)
}
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;
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;
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;
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)
#include "catweasel.h"
#include "cdtv.h"
#include "a2091.h"
+#include "cd32_fmv.h"
#include "ncr_scsi.h"
#include "debug.h"
}
}
+#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
+
/* ********************************************************** */
/*
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;
extern uae_u8 *extendedkickmemory;
-extern void rethink_akiko (void);
\ No newline at end of file
+extern void rethink_akiko (void);
--- /dev/null
+
+extern void cd32_fmv_init (uaecptr);
#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;
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;
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;
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);
}
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);
#include "enforcer.h"
#include "a2091.h"
#include "gayle.h"
+#include "debug.h"
int canbang;
int candirect = -1;
return NULL;
}
-#define NEXT_ROM_ID 72
+#define NEXT_ROM_ID 73
static struct romheader romheaders[] = {
{ "Freezer Cartridges", 1 },
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 },
#if defined(ENFORCER)
enforcer_disable ();
#endif
+
if (be_cnt < 3) {
int i, j;
uaecptr a2 = a - 32;
uaecptr a3 = m68k_getpc (®s) - 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) {
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)
{
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) {
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;
} 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;
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
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,
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;
}
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;
if (minimized)
rp_minimize (0);
#endif
-
+#ifdef LOGITECHLCD
+ if (!minimized)
+ lcd_priority (1);
+#endif
}
static void winuae_inactive (HWND hWnd, int minimized)
if (minimized)
rp_minimize (1);
#endif
+#ifdef LOGITECHLCD
+ lcd_priority (0);
+#endif
}
void minimizewindow (void)
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);
#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 ""
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;
}
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;
}
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;
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) {
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);
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)
RelativePath="..\caps\caps_win32.c"
>
</File>
+ <File
+ RelativePath="..\..\cd32_fmv.c"
+ >
+ </File>
<File
RelativePath="..\debug_win32.c"
>
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"
>
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
}
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);