#include "crc_csum.h"
#include "pfile.h"
+static int dolog = 0;
+#define DMSFLAG_ENCRYPTED 2
+#define DMSFLAG_HD 16
static USHORT Process_Track(struct zfile *, struct zfile *, UCHAR *, UCHAR *, USHORT, USHORT, int);
static USHORT Unpack_Track(UCHAR *, UCHAR *, USHORT, USHORT, UCHAR, UCHAR, USHORT, USHORT, USHORT, int);
PWDCRC = PCRC;
- if ( (cmd == CMD_VIEW) || (cmd == CMD_VIEWFULL) ) {
+ if (dolog) {
pv = (USHORT)(c_version/100);
write_log (L" Created with DMS version %d.%02d ",pv,c_version-pv*100);
}
- if (cmd == CMD_VIEWFULL) {
+ if (dolog) {
write_log (L" Track Plength Ulength Cmode USUM HCRC DCRC Cflag\n");
write_log (L" ------ ------- ------- ------ ---- ---- ---- -----\n");
}
if (cmd != CMD_VIEW) {
if (cmd == CMD_SHOWBANNER) /* Banner is in the first track */
- ret = Process_Track(fi,NULL,b1,b2,cmd,opt,(geninfo & 2));
+ ret = Process_Track(fi,NULL,b1,b2,cmd,opt,geninfo);
else {
- zfile_fseek (fo, from * 512 * 22, SEEK_SET);
for (;;) {
int ok = 0;
- ret = Process_Track(fi,fo,b1,b2,cmd,opt,(geninfo & 2));
+ ret = Process_Track(fi,fo,b1,b2,cmd,opt,geninfo);
if (ret == DMS_FILE_END)
break;
if (ret == NO_PROBLEM)
-static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR *b2, USHORT cmd, USHORT opt, int enc){
+static USHORT Process_Track(struct zfile *fi, struct zfile *fo, UCHAR *b1, UCHAR *b2, USHORT cmd, USHORT opt, int dmsflags){
USHORT hcrc, dcrc, usum, number, pklen1, pklen2, unpklen, l;
UCHAR cmode, flags;
int crcerr = 0;
usum = (USHORT)((b1[14] << 8) | b1[15]); /* Track Data CheckSum AFTER unpacking */
dcrc = (USHORT)((b1[16] << 8) | b1[17]); /* Track Data CRC BEFORE unpacking */
- //write_log (L"DMS: track=%d\n", number);
+ if (dolog)
+ write_log (L"DMS: track=%d\n", number);
- if (cmd == CMD_VIEWFULL) {
+ if (dolog) {
if (number==80)
write_log (L" FileID ");
else if (number==0xffff)
if ((cmd == CMD_UNPACK) && (number<80) && (unpklen>2048)) {
memset(b2, 0, unpklen);
if (!crcerr)
- Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc);
- if (zfile_fwrite(b2,1,(size_t)unpklen,fo) != unpklen) return ERR_CANTWRITE;
+ Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, dmsflags & DMSFLAG_ENCRYPTED);
+ zfile_fseek (fo, number * 512 * 22 * ((dmsflags & DMSFLAG_HD) ? 2 : 1), SEEK_SET);
+ if (zfile_fwrite(b2,1,(size_t)unpklen,fo) != unpklen)
+ return ERR_CANTWRITE;
}
if (crcerr)
return NO_PROBLEM;
if ((cmd == CMD_SHOWBANNER) && (number == 0xffff)){
- Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc);
+ Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, dmsflags & DMSFLAG_ENCRYPTED);
printbandiz(b2,unpklen);
}
if ((cmd == CMD_SHOWDIZ) && (number == 80)) {
- Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, enc);
+ Unpack_Track(b1, b2, pklen2, unpklen, cmode, flags, number, pklen1, usum, dmsflags & DMSFLAG_ENCRYPTED);
printbandiz(b2,unpklen);
}
if (!done && (!currprefs.blitter_cycle_exact || (currprefs.chipset_mask & CSMASK_AGA)))
return;
blit_interrupt = 1;
- send_interrupt (6, 2);
+ send_interrupt (6, 0);
if (debug_dma)
record_dma_event (DMA_EVENT_BLITIRQ, hpos, vpos);
}
{
if (ciaaimask & ciaaicr) {
ciaaicr |= 0x80;
- send_interrupt (3, 2);
+ send_interrupt (3, 0);
}
}
{
if (ciabimask & ciabicr) {
ciabicr |= 0x80;
- send_interrupt (13, 2);
+ send_interrupt (13, 0);
}
}
return (currprefs.cs_ide == IDE_A600A1200 || currprefs.cs_pcmcia);
}
-/* e-clock is 10 CPU cycles, 6 cycles low, 4 high
+/* e-clock is 10 CPU cycles, 4 cycles high, 6 low
* data transfer happens during 4 high cycles
*/
#define ECLOCK_DATA_CYCLE 4
+#define ECLOCK_WAIT_CYCLE 6
static void cia_wait_pre (void)
{
int div10 = (get_cycles () - eventtab[ev_cia].oldcycles) % DIV10;
int cycles;
- cycles = 5 * CYCLE_UNIT / 2;
if (div10 > DIV10 * ECLOCK_DATA_CYCLE / 10) {
- cycles += DIV10 - div10;
+ cycles = DIV10 - div10;
cycles += DIV10 * ECLOCK_DATA_CYCLE / 10;
} else {
- cycles += DIV10 * ECLOCK_DATA_CYCLE / 10 - div10;
+ cycles = DIV10 * ECLOCK_DATA_CYCLE / 10 - div10;
}
do_cycles (cycles);
#endif
static void cia_wait_post (void)
{
- do_cycles (2 * CYCLE_UNIT / 2);
+ do_cycles (6 * CYCLE_UNIT / 2);
}
static uae_u32 REGPARAM2 cia_bget (uaecptr addr)
static uae_u16 cregs[256];
-uae_u16 intena, intreq, intreqr;
+uae_u16 intena, intreq;
uae_u16 dmacon;
uae_u16 adkcon; /* used by audio code */
}
uae_u16 INTREQR (void)
{
- return intreqr;
+ return intreq;
}
STATIC_INLINE uae_u16 ADKCONR (void)
{
irq_nmi = 1;
}
+static uae_u16 intreq_internal, intena_internal;
+
int intlev (void)
{
- uae_u16 imask = intreq & intena;
+ uae_u16 imask = intreq_internal & intena_internal;
if (irq_nmi) {
irq_nmi = 0;
return 7;
}
- if (!(imask && (intena & 0x4000)))
+ if (!(imask && (intena_internal & 0x4000)))
return -1;
- if (imask & (0x4000 | 0x2000)) // 13 14
+ if (imask & (0x4000 | 0x2000)) // 13 14
return 6;
- if (imask & (0x1000 | 0x0800)) // 11 12
+ if (imask & (0x1000 | 0x0800)) // 11 12
return 5;
- if (imask & (0x0400 | 0x0200 | 0x0100 | 0x0080)) // 7 8 9 10
+ if (imask & (0x0400 | 0x0200 | 0x0100 | 0x0080)) // 7 8 9 10
return 4;
- if (imask & (0x0040 | 0x0020 | 0x0010)) // 4 5 6
+ if (imask & (0x0040 | 0x0020 | 0x0010)) // 4 5 6
return 3;
- if (imask & 0x0008) // 3
+ if (imask & 0x0008) // 3
return 2;
- if (imask & (0x0001 | 0x0002 | 0x0004)) // 0 1 2
+ if (imask & (0x0001 | 0x0002 | 0x0004)) // 0 1 2
return 1;
return -1;
}
+#define INT_PROCESSING_DELAY 3
STATIC_INLINE int use_eventmode (void)
{
- return currprefs.cpu_cycle_exact != 0;
+ return currprefs.cpu_cycle_exact != 0 && currprefs.cpu_model == 68000;
}
static void send_interrupt_do (uae_u32 v)
void send_interrupt (int num, int delay)
{
if (use_eventmode () && delay > 0) {
- if (!(intreqr & (1 << num)))
+ if (!(intreq & (1 << num)))
event2_newevent_xx (-1, delay * CYCLE_UNIT, num, send_interrupt_do);
} else {
send_interrupt_do (num);
}
}
-STATIC_INLINE void INTENA (uae_u16 v)
+static void send_intena_do (uae_u32 v)
+{
+ intena_internal = v;
+ doint ();
+}
+static void send_intreq_do (uae_u32 v)
{
- setclr (&intena,v);
+ intreq_internal = v;
+ doint ();
+}
+
+static void INTENA (uae_u16 v)
+{
+ uae_u16 old = intena;
+ setclr (&intena, v);
+
+ if (old != intena || (v & 0x8000)) {
+ if (use_eventmode ())
+ event2_newevent_xx (-1, INT_PROCESSING_DELAY * CYCLE_UNIT, intena, send_intena_do);
+ else
+ send_intena_do (intena);
+ }
#if 0
if (v & 0x40)
write_log (L"INTENA %04X (%04X) %p\n", intena, v, M68K_GETPC);
#endif
-#if 0
- if (use_eventmode ()) {
- send_interrupt ();
- } else if (v & 0x8000) {
- doint ();
- }
-#endif
- if (v & 0x8000)
- doint ();
}
void INTREQ_0 (uae_u16 v)
{
- uae_u16 tmp = intreq;
- intreqr = intreq;
- /* data in intreq is immediately available (vsync only currently because there is something unknown..) */
- setclr (&intreqr, v & (0x8000 | 0x20));
+ uae_u16 old = intreq;
setclr (&intreq, v);
- if (v & (0x80 | 0x100 | 0x200 | 0x400))
+ if (v & (0x0080 | 0x0100 | 0x0200 | 0x0400))
audio_update_irq (v);
- intreqr = intreq;
-#if 0
- if (use_eventmode ()) {
- if (tmp != intreq)
- send_interrupt ();
- if (tmp > intreq) {
- if (debug_dma)
- record_dma_event (DMA_EVENT_INTREQ, current_hpos (), vpos);
- }
- } else {
- doint ();
+
+ if (old != intreq || (v & 0x8000)) {
+ if (use_eventmode ())
+ event2_newevent_xx (-1, INT_PROCESSING_DELAY * CYCLE_UNIT, intreq, send_intreq_do);
+ else
+ send_intreq_do (intreq);
}
-#endif
- doint ();
}
void INTREQ (uae_u16 data)
if (currprefs.produce_sound > 0)
update_audio ();
- setclr (&adkcon,v);
+ setclr (&adkcon, v);
audio_update_adkmasks ();
DISK_update (hpos);
if ((v >> 11) & 1)
memset (spr, 0, sizeof spr);
nr_armed = 0;
- dmacon = intena = 0;
+ dmacon = 0;
+ intena = intena_internal = 0;
copcon = 0;
DSKLEN (0, 0);
changed_prefs.chipset_mask = currprefs.chipset_mask = RL;
update_mirrors ();
- RW; /* 000 BLTDDAT */
- RW; /* 002 DMACONR */
- RW; /* 004 VPOSR */
- RW; /* 006 VHPOSR */
- RW; /* 008 DSKDATR (dummy register) */
- RW; /* 00A JOY0DAT */
- RW; /* 00C JOY1DAT */
- clxdat = RW; /* 00E CLXDAT */
- RW; /* 010 ADKCONR */
- RW; /* 012 POT0DAT* */
- RW; /* 014 POT1DAT* */
- RW; /* 016 POTINP* */
- RW; /* 018 SERDATR* */
- dskbytr = RW; /* 01A DSKBYTR */
- RW; /* 01C INTENAR */
- RW; /* 01E INTREQR */
- dskpt = RL; /* 020-022 DSKPT */
- dsklen = RW; /* 024 DSKLEN */
- RW; /* 026 DSKDAT */
- RW; /* 028 REFPTR */
+ RW; /* 000 BLTDDAT */
+ RW; /* 002 DMACONR */
+ RW; /* 004 VPOSR */
+ RW; /* 006 VHPOSR */
+ RW; /* 008 DSKDATR (dummy register) */
+ RW; /* 00A JOY0DAT */
+ RW; /* 00C JOY1DAT */
+ clxdat = RW; /* 00E CLXDAT */
+ RW; /* 010 ADKCONR */
+ RW; /* 012 POT0DAT* */
+ RW; /* 014 POT1DAT* */
+ RW; /* 016 POTINP* */
+ RW; /* 018 SERDATR* */
+ dskbytr = RW; /* 01A DSKBYTR */
+ RW; /* 01C INTENAR */
+ RW; /* 01E INTREQR */
+ dskpt = RL; /* 020-022 DSKPT */
+ dsklen = RW; /* 024 DSKLEN */
+ RW; /* 026 DSKDAT */
+ RW; /* 028 REFPTR */
i = RW; lof = (i & 0x8000) ? 1 : 0; lol = (i & 0x0080); /* 02A VPOSW */
- RW; /* 02C VHPOSW */
- COPCON (RW); /* 02E COPCON */
- RW; /* 030 SERDAT* */
- RW; /* 032 SERPER* */
- POTGO (RW); /* 034 POTGO */
- RW; /* 036 JOYTEST* */
- RW; /* 038 STREQU */
- RW; /* 03A STRVHBL */
- RW; /* 03C STRHOR */
- RW; /* 03E STRLONG */
+ RW; /* 02C VHPOSW */
+ COPCON (RW); /* 02E COPCON */
+ RW; /* 030 SERDAT* */
+ RW; /* 032 SERPER* */
+ POTGO (RW); /* 034 POTGO */
+ RW; /* 036 JOYTEST* */
+ RW; /* 038 STREQU */
+ RW; /* 03A STRVHBL */
+ RW; /* 03C STRHOR */
+ RW; /* 03E STRLONG */
BLTCON0 (0, RW); /* 040 BLTCON0 */
BLTCON1 (0, RW); /* 042 BLTCON1 */
BLTAFWM (0, RW); /* 044 BLTAFWM */
BLTBPTH (0, RW);BLTBPTL(0, RW); /* 04C-04F BLTBPT */
BLTAPTH (0, RW);BLTAPTL(0, RW); /* 050-053 BLTAPT */
BLTDPTH (0, RW);BLTDPTL(0, RW); /* 054-057 BLTDPT */
- RW; /* 058 BLTSIZE */
- RW; /* 05A BLTCON0L */
- blt_info.vblitsize = RW; /* 05C BLTSIZV */
- blt_info.hblitsize = RW; /* 05E BLTSIZH */
+ RW; /* 058 BLTSIZE */
+ RW; /* 05A BLTCON0L */
+ blt_info.vblitsize = RW;/* 05C BLTSIZV */
+ blt_info.hblitsize = RW;/* 05E BLTSIZH */
BLTCMOD (0, RW); /* 060 BLTCMOD */
BLTBMOD (0, RW); /* 062 BLTBMOD */
BLTAMOD (0, RW); /* 064 BLTAMOD */
BLTDMOD (0, RW); /* 066 BLTDMOD */
- RW; /* 068 ? */
- RW; /* 06A ? */
- RW; /* 06C ? */
- RW; /* 06E ? */
+ RW; /* 068 ? */
+ RW; /* 06A ? */
+ RW; /* 06C ? */
+ RW; /* 06E ? */
BLTCDAT (0, RW); /* 070 BLTCDAT */
BLTBDAT (0, RW); /* 072 BLTBDAT */
BLTADAT (0, RW); /* 074 BLTADAT */
- RW; /* 076 ? */
- RW; /* 078 ? */
- RW; /* 07A ? */
- RW; /* 07C LISAID */
+ RW; /* 076 ? */
+ RW; /* 078 ? */
+ RW; /* 07A ? */
+ RW; /* 07C LISAID */
DSKSYNC (-1, RW); /* 07E DSKSYNC */
- cop1lc = RL; /* 080/082 COP1LC */
- cop2lc = RL; /* 084/086 COP2LC */
- RW; /* 088 ? */
- RW; /* 08A ? */
- RW; /* 08C ? */
- diwstrt = RW; /* 08E DIWSTRT */
- diwstop = RW; /* 090 DIWSTOP */
- ddfstrt = RW; /* 092 DDFSTRT */
- ddfstop = RW; /* 094 DDFSTOP */
+ cop1lc = RL; /* 080/082 COP1LC */
+ cop2lc = RL; /* 084/086 COP2LC */
+ RW; /* 088 ? */
+ RW; /* 08A ? */
+ RW; /* 08C ? */
+ diwstrt = RW; /* 08E DIWSTRT */
+ diwstop = RW; /* 090 DIWSTOP */
+ ddfstrt = RW; /* 092 DDFSTRT */
+ ddfstop = RW; /* 094 DDFSTOP */
dmacon = RW & ~(0x2000|0x4000); /* 096 DMACON */
- CLXCON (RW); /* 098 CLXCON */
- intena = RW; /* 09A INTENA */
- intreq = intreqr = RW | 0x20; /* 09C INTREQ */
- adkcon = RW; /* 09E ADKCON */
+ CLXCON (RW); /* 098 CLXCON */
+ intena = intena_internal = RW; /* 09A INTENA */
+ intreq = intreq_internal = RW | 0x20; /* 09C INTREQ */
+ adkcon = RW; /* 09E ADKCON */
for (i = 0; i < 8; i++)
bplptx[i] = bplpt[i] = RL;
- bplcon0 = RW; /* 100 BPLCON0 */
- bplcon1 = RW; /* 102 BPLCON1 */
- bplcon2 = RW; /* 104 BPLCON2 */
- bplcon3 = RW; /* 106 BPLCON3 */
- bpl1mod = RW; /* 108 BPL1MOD */
- bpl2mod = RW; /* 10A BPL2MOD */
- bplcon4 = RW; /* 10C BPLCON4 */
- clxcon2 = RW; /* 10E CLXCON2* */
+ bplcon0 = RW; /* 100 BPLCON0 */
+ bplcon1 = RW; /* 102 BPLCON1 */
+ bplcon2 = RW; /* 104 BPLCON2 */
+ bplcon3 = RW; /* 106 BPLCON3 */
+ bpl1mod = RW; /* 108 BPL1MOD */
+ bpl2mod = RW; /* 10A BPL2MOD */
+ bplcon4 = RW; /* 10C BPLCON4 */
+ clxcon2 = RW; /* 10E CLXCON2* */
for(i = 0; i < 8; i++)
bplxdat[i] = RW; /* BPLXDAT */
for(i = 0; i < 32; i++)
current_colors.color_regs_ecs[i] = RW; /* 180 COLORxx */
- htotal = RW; /* 1C0 HTOTAL */
- hsstop = RW; /* 1C2 HSTOP ? */
- hbstrt = RW; /* 1C4 HBSTRT ? */
- hbstop = RW; /* 1C6 HBSTOP ? */
- vtotal = RW; /* 1C8 VTOTAL */
- vsstop = RW; /* 1CA VSSTOP */
- vbstrt = RW; /* 1CC VBSTRT */
- vbstop = RW; /* 1CE VBSTOP */
- RW; /* 1D0 ? */
- RW; /* 1D2 ? */
- RW; /* 1D4 ? */
- RW; /* 1D6 ? */
- RW; /* 1D8 ? */
- RW; /* 1DA ? */
+ htotal = RW; /* 1C0 HTOTAL */
+ hsstop = RW; /* 1C2 HSTOP ? */
+ hbstrt = RW; /* 1C4 HBSTRT ? */
+ hbstop = RW; /* 1C6 HBSTOP ? */
+ vtotal = RW; /* 1C8 VTOTAL */
+ vsstop = RW; /* 1CA VSSTOP */
+ vbstrt = RW; /* 1CC VBSTRT */
+ vbstop = RW; /* 1CE VBSTOP */
+ RW; /* 1D0 ? */
+ RW; /* 1D2 ? */
+ RW; /* 1D4 ? */
+ RW; /* 1D6 ? */
+ RW; /* 1D8 ? */
+ RW; /* 1DA ? */
new_beamcon0 = RW; /* 1DC BEAMCON0 */
- hsstrt = RW; /* 1DE HSSTRT */
- vsstrt = RW; /* 1E0 VSSTT */
- hcenter = RW; /* 1E2 HCENTER */
- diwhigh = RW; /* 1E4 DIWHIGH */
+ hsstrt = RW; /* 1DE HSSTRT */
+ vsstrt = RW; /* 1E0 VSSTT */
+ hcenter = RW; /* 1E2 HCENTER */
+ diwhigh = RW; /* 1E4 DIWHIGH */
diwhigh_written = (diwhigh & 0x8000) ? 1 : 0;
hdiwstate = (diwhigh & 0x4000) ? DIW_waiting_stop : DIW_waiting_start;
diwhigh &= 0x3fff;
- RW; /* 1E6 ? */
- RW; /* 1E8 ? */
- RW; /* 1EA ? */
- RW; /* 1EC ? */
- RW; /* 1EE ? */
- RW; /* 1F0 ? */
- RW; /* 1F2 ? */
- RW; /* 1F4 ? */
- RW; /* 1F6 ? */
- RW; /* 1F8 ? */
- RW; /* 1FA ? */
- fmode = RW; /* 1FC FMODE */
- last_custom_value1 = RW; /* 1FE ? */
+ RW; /* 1E6 ? */
+ RW; /* 1E8 ? */
+ RW; /* 1EA ? */
+ RW; /* 1EC ? */
+ RW; /* 1EE ? */
+ RW; /* 1F0 ? */
+ RW; /* 1F2 ? */
+ RW; /* 1F4 ? */
+ RW; /* 1F6 ? */
+ RW; /* 1F8 ? */
+ RW; /* 1FA ? */
+ fmode = RW; /* 1FC FMODE */
+ last_custom_value1 = RW;/* 1FE ? */
DISK_restore_custom (dskpt, dsklen, dskbytr);
struct dma_rec *dr;
hpos = dma_cycle ();
+ regs.ipl = regs.ipl_pin;
do_cycles_ce (CYCLE_UNIT);
#ifdef DEBUGGER
int hpos;
hpos = dma_cycle ();
+ regs.ipl = regs.ipl_pin;
do_cycles_ce (CYCLE_UNIT);
#ifdef DEBUGGER
struct mmudata *snptr;
struct mmunode *mn;
static int wasjit;
-
+#ifdef JIT
if (currprefs.cachesize) {
wasjit = currprefs.cachesize;
changed_prefs.cachesize = 0;
console_out (L"MMU: JIT disabled\n");
check_prefs_changed_comp ();
}
-
if (mode == 0) {
if (mmu_enabled) {
mmu_free ();
mmu_logging = 0;
return 1;
}
+#endif
if (mode == 1) {
if (!mmu_enabled)
#include "sysdeps.h"
#include "uae.h"
+#ifndef CPU_64_BIT
+
#define C_LIBPNG
#define FREETYPE2_STATIC
}
return 1;
}
-
+#endif
void epson_printchar(uae_u8 c)
{
+#ifndef CPU_64_BIT
printChar (c);
+#endif
}
int epson_init(int type)
{
+#ifndef CPU_64_BIT
if (type == PARALLEL_MATRIX_EPSON9)
pins = 9;
else
epson_ft ();
write_log (L"EPSONPRINTER%d: start\n", pins);
return printer_init(300, 83, 117, L"png", 0, pins);
+#else
+ return 0;
+#endif
}
void epson_close(void)
{
+#ifndef CPU_64_BIT
if (page && !isBlank ()) {
outputPage();
}
printer_close();
+#endif
}
#define MAKE_FPSR(r) (regs).fp_result=(r)
static uae_u16 x87_cw_tab[] = {
- 0x137f, 0x1f7f, 0x177f, 0x1b7f, /* Extended */
- 0x107f, 0x1c7f, 0x147f, 0x187f, /* Single */
- 0x127f, 0x1e7f, 0x167f, 0x1a7f, /* Double */
- 0x137f, 0x1f7f, 0x177f, 0x1b7f}; /* undefined */
- /* Nearest, toZero, Down, Up */
- static __inline__ void native_set_fpucw (uae_u32 m68k_cw)
- {
+ 0x137f, 0x1f7f, 0x177f, 0x1b7f, /* Extended */
+ 0x107f, 0x1c7f, 0x147f, 0x187f, /* Single */
+ 0x127f, 0x1e7f, 0x167f, 0x1a7f, /* Double */
+ 0x137f, 0x1f7f, 0x177f, 0x1b7f /* undefined */
+};
+/* Nearest, toZero, Down, Up */
+static __inline__ void native_set_fpucw (uae_u32 m68k_cw)
+{
#if USE_X86_FPUCW
- uae_u16 x87_cw = x87_cw_tab[(m68k_cw >> 4) & 0xf];
+ uae_u16 x87_cw = x87_cw_tab[(m68k_cw >> 4) & 0xf];
#if defined(X86_MSVC_ASSEMBLY)
- __asm {
- fldcw word ptr x87_cw
- }
+ __asm {
+ fldcw word ptr x87_cw
+ }
#elif defined(X86_ASSEMBLY)
- __asm__ ("fldcw %0" : : "m" (*&x87_cw));
+ __asm__ ("fldcw %0" : : "m" (*&x87_cw));
#endif
#endif
- }
+}
#if defined(uae_s64) /* Close enough for government work? */
- typedef uae_s64 tointtype;
+typedef uae_s64 tointtype;
#else
- typedef uae_s32 tointtype;
+typedef uae_s32 tointtype;
#endif
- STATIC_INLINE uae_u32 next_ilong_fpu (void)
- {
- if (currprefs.mmu_model)
- return next_ilong_mmu ();
- else if (currprefs.cpu_cycle_exact)
- return next_ilong_020ce ();
- else
- return next_ilong ();
- }
- STATIC_INLINE uae_u32 next_iword_fpu (void)
- {
- if (currprefs.mmu_model)
- return next_iword_mmu ();
- else if (currprefs.cpu_cycle_exact)
- return next_iword_020ce ();
- else
- return next_iword ();
- }
- STATIC_INLINE void put_long_fpu (uaecptr addr, uae_u32 v)
- {
- if (currprefs.mmu_model)
- put_long_mmu (addr, v);
- else if (currprefs.cpu_cycle_exact)
- put_long_ce020 (addr, v);
- else
- put_long (addr, v);
- }
- STATIC_INLINE uae_u32 get_long_fpu (uaecptr addr)
- {
- if (currprefs.mmu_model)
- return get_long_mmu (addr);
- else if (currprefs.cpu_cycle_exact)
- return get_long_ce020 (addr);
- else
- return get_long (addr);
- }
- STATIC_INLINE void put_word_fpu (uaecptr addr, uae_u32 v)
- {
- if (currprefs.mmu_model)
- put_word_mmu (addr, v);
- else if (currprefs.cpu_cycle_exact)
- put_word_ce020 (addr, v);
- else
- put_word (addr, v);
- }
- STATIC_INLINE uae_u32 get_word_fpu (uaecptr addr)
- {
- if (currprefs.mmu_model)
- return get_word_mmu (addr);
- else if (currprefs.cpu_cycle_exact)
- return get_word_ce020 (addr);
- else
- return get_word (addr);
- }
- STATIC_INLINE void put_byte_fpu (uaecptr addr, uae_u32 v)
- {
- if (currprefs.mmu_model)
- put_byte_mmu (addr, v);
- else if (currprefs.cpu_cycle_exact)
- put_byte_ce020 (addr, v);
- else
- put_byte (addr, v);
- }
- STATIC_INLINE uae_u32 get_byte_fpu (uaecptr addr)
- {
- if (currprefs.mmu_model)
- return get_byte_mmu (addr);
- else if (currprefs.cpu_cycle_exact)
- return get_byte_ce020 (addr);
- else
- return get_byte (addr);
- }
+STATIC_INLINE uae_u32 next_ilong_fpu (void)
+{
+ if (currprefs.mmu_model)
+ return next_ilong_mmu ();
+ else if (currprefs.cpu_cycle_exact)
+ return next_ilong_020ce ();
+ else
+ return next_ilong ();
+}
+STATIC_INLINE uae_u32 next_iword_fpu (void)
+{
+ if (currprefs.mmu_model)
+ return next_iword_mmu ();
+ else if (currprefs.cpu_cycle_exact)
+ return next_iword_020ce ();
+ else
+ return next_iword ();
+}
+STATIC_INLINE void put_long_fpu (uaecptr addr, uae_u32 v)
+{
+ if (currprefs.mmu_model)
+ put_long_mmu (addr, v);
+ else if (currprefs.cpu_cycle_exact)
+ put_long_ce020 (addr, v);
+ else
+ put_long (addr, v);
+}
+STATIC_INLINE uae_u32 get_long_fpu (uaecptr addr)
+{
+ if (currprefs.mmu_model)
+ return get_long_mmu (addr);
+ else if (currprefs.cpu_cycle_exact)
+ return get_long_ce020 (addr);
+ else
+ return get_long (addr);
+}
+STATIC_INLINE void put_word_fpu (uaecptr addr, uae_u32 v)
+{
+ if (currprefs.mmu_model)
+ put_word_mmu (addr, v);
+ else if (currprefs.cpu_cycle_exact)
+ put_word_ce020 (addr, v);
+ else
+ put_word (addr, v);
+}
+STATIC_INLINE uae_u32 get_word_fpu (uaecptr addr)
+{
+ if (currprefs.mmu_model)
+ return get_word_mmu (addr);
+ else if (currprefs.cpu_cycle_exact)
+ return get_word_ce020 (addr);
+ else
+ return get_word (addr);
+}
+STATIC_INLINE void put_byte_fpu (uaecptr addr, uae_u32 v)
+{
+ if (currprefs.mmu_model)
+ put_byte_mmu (addr, v);
+ else if (currprefs.cpu_cycle_exact)
+ put_byte_ce020 (addr, v);
+ else
+ put_byte (addr, v);
+}
+STATIC_INLINE uae_u32 get_byte_fpu (uaecptr addr)
+{
+ if (currprefs.mmu_model)
+ return get_byte_mmu (addr);
+ else if (currprefs.cpu_cycle_exact)
+ return get_byte_ce020 (addr);
+ else
+ return get_byte (addr);
+}
- static void fpu_op_illg (uae_u32 opcode, int pcoffset)
- {
- if ((currprefs.cpu_model == 68060 && (currprefs.fpu_model == 0 || (regs.pcr & 2)))
- || (currprefs.cpu_model == 68040 && currprefs.fpu_model == 0)) {
- /* 68040 unimplemented/68060 FPU disabled exception.
- * Line F exception with different stack frame.. */
- uaecptr newpc = m68k_getpc ();
- uaecptr oldpc = newpc - pcoffset;
- regs.t0 = regs.t1 = 0;
- MakeSR ();
- if (!regs.s) {
- regs.usp = m68k_areg (regs, 7);
- m68k_areg (regs, 7) = regs.isp;
- }
- regs.s = 1;
- m68k_areg (regs, 7) -= 4;
- put_long_fpu (m68k_areg (regs, 7), oldpc);
- m68k_areg (regs, 7) -= 4;
- put_long_fpu (m68k_areg (regs, 7), oldpc);
- m68k_areg (regs, 7) -= 2;
- put_word_fpu (m68k_areg (regs, 7), 0x4000 + 11 * 4);
- m68k_areg (regs, 7) -= 4;
- put_long_fpu (m68k_areg (regs, 7), newpc);
- m68k_areg (regs, 7) -= 2;
- put_word_fpu (m68k_areg (regs, 7), regs.sr);
- write_log (L"68040/060 FPU disabled exception PC=%x\n", newpc);
- newpc = get_long_fpu (regs.vbr + 11 * 4);
- m68k_setpc (newpc);
- set_special (SPCFLAG_END_COMPILE);
- return;
- }
- op_illg (opcode);
+static void fpu_op_illg (uae_u32 opcode, int pcoffset)
+{
+ if ((currprefs.cpu_model == 68060 && (currprefs.fpu_model == 0 || (regs.pcr & 2)))
+ || (currprefs.cpu_model == 68040 && currprefs.fpu_model == 0)) {
+ /* 68040 unimplemented/68060 FPU disabled exception.
+ * Line F exception with different stack frame.. */
+ uaecptr newpc = m68k_getpc ();
+ uaecptr oldpc = newpc - pcoffset;
+ regs.t0 = regs.t1 = 0;
+ MakeSR ();
+ if (!regs.s) {
+ regs.usp = m68k_areg (regs, 7);
+ m68k_areg (regs, 7) = regs.isp;
+ }
+ regs.s = 1;
+ m68k_areg (regs, 7) -= 4;
+ put_long_fpu (m68k_areg (regs, 7), oldpc);
+ m68k_areg (regs, 7) -= 4;
+ put_long_fpu (m68k_areg (regs, 7), oldpc);
+ m68k_areg (regs, 7) -= 2;
+ put_word_fpu (m68k_areg (regs, 7), 0x4000 + 11 * 4);
+ m68k_areg (regs, 7) -= 4;
+ put_long_fpu (m68k_areg (regs, 7), newpc);
+ m68k_areg (regs, 7) -= 2;
+ put_word_fpu (m68k_areg (regs, 7), regs.sr);
+ write_log (L"68040/060 FPU disabled exception PC=%x\n", newpc);
+ newpc = get_long_fpu (regs.vbr + 11 * 4);
+ m68k_setpc (newpc);
+ set_special (SPCFLAG_END_COMPILE);
+ return;
}
+ op_illg (opcode);
+}
- STATIC_INLINE int fault_if_no_fpu (uae_u32 opcode, int pcoffset)
- {
- if ((regs.pcr & 2) || currprefs.fpu_model <= 0) {
- fpu_op_illg (opcode, pcoffset);
- return 1;
- }
- return 0;
+STATIC_INLINE int fault_if_no_fpu (uae_u32 opcode, int pcoffset)
+{
+ if ((regs.pcr & 2) || currprefs.fpu_model <= 0) {
+ fpu_op_illg (opcode, pcoffset);
+ return 1;
}
+ return 0;
+}
- static int get_fpu_version (void)
- {
- int v = 0;
+static int get_fpu_version (void)
+{
+ int v = 0;
- if (currprefs.fpu_revision >= 0)
- return currprefs.fpu_revision;
- switch (currprefs.fpu_model)
- {
- case 68881:
- v = 0x1f;
- break;
- case 68882:
- v = 0x20; /* ??? */
- break;
- case 68040:
- v = 0x41;
- break;
- }
- return v;
+ if (currprefs.fpu_revision >= 0)
+ return currprefs.fpu_revision;
+ switch (currprefs.fpu_model)
+ {
+ case 68881:
+ v = 0x1f;
+ break;
+ case 68882:
+ v = 0x20; /* ??? */
+ break;
+ case 68040:
+ v = 0x41;
+ break;
}
+ return v;
+}
#define fp_round_to_minus_infinity(x) fp_floor(x)
#define fp_round_to_plus_infinity(x) fp_ceil(x)
#define fp_round_to_zero(x) ((int)(x))
#define fp_round_to_nearest(x) ((int)((x) + 0.5))
- STATIC_INLINE tointtype toint (fptype src, fptype minval, fptype maxval)
- {
- if (src < minval)
- src = minval;
- if (src > maxval)
- src = maxval;
+STATIC_INLINE tointtype toint (fptype src, fptype minval, fptype maxval)
+{
+ if (src < minval)
+ src = minval;
+ if (src > maxval)
+ src = maxval;
#if defined(X86_MSVC_ASSEMBLY)
- {
- fptype tmp_fp;
- __asm {
- fld LDPTR src
- frndint
- fstp LDPTR tmp_fp
- }
- return (tointtype)tmp_fp;
+ {
+ fptype tmp_fp;
+ __asm {
+ fld LDPTR src
+ frndint
+ fstp LDPTR tmp_fp
}
+ return (tointtype)tmp_fp;
+ }
#else /* no X86_MSVC */
- switch (get_fpcr() & 0x30) {
+ {
+ int result = src;
+#if 0
+ switch (get_fpcr () & 0x30) {
case FPCR_ROUND_ZERO:
- result = fp_round_to_zero(src);
+ result = fp_round_to_zero (src);
break;
case FPCR_ROUND_MINF:
- result = fp_round_to_minus_infinity(src);
+ result = fp_round_to_minus_infinity (src);
break;
case FPCR_ROUND_NEAR:
- result = fp_round_to_nearest(src);
+ result = fp_round_to_nearest (src);
break;
case FPCR_ROUND_PINF:
- result = fp_round_to_plus_infinity(src);
+ result = fp_round_to_plus_infinity (src);
break;
default:
result = src; /* should never be reached */
break;
- }
- return result;
#endif
+ return result;
}
+#endif
+}
- uae_u32 get_fpsr (void)
- {
- uae_u32 answer = regs.fpsr & 0x00ffffff;
+uae_u32 get_fpsr (void)
+{
+ uae_u32 answer = regs.fpsr & 0x00ffffff;
#ifdef HAVE_ISNAN
- if (isnan (regs.fp_result))
- answer |= 0x01000000;
- else
+ if (isnan (regs.fp_result))
+ answer |= 0x01000000;
+ else
#endif
- {
- if (regs.fp_result == 0)
- answer |= 0x04000000;
- else if (regs.fp_result < 0)
- answer |= 0x08000000;
+ {
+ if (regs.fp_result == 0)
+ answer |= 0x04000000;
+ else if (regs.fp_result < 0)
+ answer |= 0x08000000;
#ifdef HAVE_ISINF
- if (isinf (regs.fp_result))
- answer |= 0x02000000;
+ if (isinf (regs.fp_result))
+ answer |= 0x02000000;
#endif
- }
- return answer;
}
+ return answer;
+}
- STATIC_INLINE void set_fpsr (uae_u32 x)
- {
- regs.fpsr = x;
+STATIC_INLINE void set_fpsr (uae_u32 x)
+{
+ regs.fpsr = x;
- if (x & 0x01000000) {
- regs.fp_result = *fp_nan;
- }
- else if (x & 0x04000000)
- regs.fp_result = 0;
- else if (x & 0x08000000)
- regs.fp_result = -1;
- else
- regs.fp_result = 1;
+ if (x & 0x01000000) {
+ regs.fp_result = *fp_nan;
}
+ else if (x & 0x04000000)
+ regs.fp_result = 0;
+ else if (x & 0x08000000)
+ regs.fp_result = -1;
+ else
+ regs.fp_result = 1;
+}
- /* single : S 8*E 23*F */
- /* double : S 11*E 52*F */
- /* extended : S 15*E 64*F */
- /* E = 0 & F = 0 -> 0 */
- /* E = MAX & F = 0 -> Infin */
- /* E = MAX & F # 0 -> NotANumber */
- /* E = biased by 127 (single) ,1023 (double) ,16383 (extended) */
+/* single : S 8*E 23*F */
+/* double : S 11*E 52*F */
+/* extended : S 15*E 64*F */
+/* E = 0 & F = 0 -> 0 */
+/* E = MAX & F = 0 -> Infin */
+/* E = MAX & F # 0 -> NotANumber */
+/* E = biased by 127 (single) ,1023 (double) ,16383 (extended) */
- STATIC_INLINE fptype to_pack (uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3)
- {
- fptype d;
- char *cp;
- char str[100];
-
- cp = str;
- if (wrd1 & 0x80000000)
- *cp++ = '-';
- *cp++ = (wrd1 & 0xf) + '0';
- *cp++ = '.';
- *cp++ = ((wrd2 >> 28) & 0xf) + '0';
- *cp++ = ((wrd2 >> 24) & 0xf) + '0';
- *cp++ = ((wrd2 >> 20) & 0xf) + '0';
- *cp++ = ((wrd2 >> 16) & 0xf) + '0';
- *cp++ = ((wrd2 >> 12) & 0xf) + '0';
- *cp++ = ((wrd2 >> 8) & 0xf) + '0';
- *cp++ = ((wrd2 >> 4) & 0xf) + '0';
- *cp++ = ((wrd2 >> 0) & 0xf) + '0';
- *cp++ = ((wrd3 >> 28) & 0xf) + '0';
- *cp++ = ((wrd3 >> 24) & 0xf) + '0';
- *cp++ = ((wrd3 >> 20) & 0xf) + '0';
- *cp++ = ((wrd3 >> 16) & 0xf) + '0';
- *cp++ = ((wrd3 >> 12) & 0xf) + '0';
- *cp++ = ((wrd3 >> 8) & 0xf) + '0';
- *cp++ = ((wrd3 >> 4) & 0xf) + '0';
- *cp++ = ((wrd3 >> 0) & 0xf) + '0';
- *cp++ = 'E';
- if (wrd1 & 0x40000000)
- *cp++ = '-';
- *cp++ = ((wrd1 >> 24) & 0xf) + '0';
- *cp++ = ((wrd1 >> 20) & 0xf) + '0';
- *cp++ = ((wrd1 >> 16) & 0xf) + '0';
- *cp = 0;
- sscanf (str, "%le", &d);
- return d;
- }
+STATIC_INLINE fptype to_pack (uae_u32 wrd1, uae_u32 wrd2, uae_u32 wrd3)
+{
+ fptype d;
+ char *cp;
+ char str[100];
+
+ cp = str;
+ if (wrd1 & 0x80000000)
+ *cp++ = '-';
+ *cp++ = (wrd1 & 0xf) + '0';
+ *cp++ = '.';
+ *cp++ = ((wrd2 >> 28) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 24) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 20) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 16) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 12) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 8) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 4) & 0xf) + '0';
+ *cp++ = ((wrd2 >> 0) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 28) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 24) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 20) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 16) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 12) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 8) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 4) & 0xf) + '0';
+ *cp++ = ((wrd3 >> 0) & 0xf) + '0';
+ *cp++ = 'E';
+ if (wrd1 & 0x40000000)
+ *cp++ = '-';
+ *cp++ = ((wrd1 >> 24) & 0xf) + '0';
+ *cp++ = ((wrd1 >> 20) & 0xf) + '0';
+ *cp++ = ((wrd1 >> 16) & 0xf) + '0';
+ *cp = 0;
+ sscanf (str, "%le", &d);
+ return d;
+}
- STATIC_INLINE void from_pack (fptype src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3)
- {
- int i;
- int t;
- char *cp;
- char str[100];
-
- sprintf (str, "%.16e", src);
- cp = str;
- *wrd1 = *wrd2 = *wrd3 = 0;
+STATIC_INLINE void from_pack (fptype src, uae_u32 * wrd1, uae_u32 * wrd2, uae_u32 * wrd3)
+{
+ int i;
+ int t;
+ char *cp;
+ char str[100];
+
+ sprintf (str, "%.16e", src);
+ cp = str;
+ *wrd1 = *wrd2 = *wrd3 = 0;
+ if (*cp == '-') {
+ cp++;
+ *wrd1 = 0x80000000;
+ }
+ if (*cp == '+')
+ cp++;
+ *wrd1 |= (*cp++ - '0');
+ if (*cp == '.')
+ cp++;
+ for (i = 0; i < 8; i++) {
+ *wrd2 <<= 4;
+ if (*cp >= '0' && *cp <= '9')
+ *wrd2 |= *cp++ - '0';
+ }
+ for (i = 0; i < 8; i++) {
+ *wrd3 <<= 4;
+ if (*cp >= '0' && *cp <= '9')
+ *wrd3 |= *cp++ - '0';
+ }
+ if (*cp == 'e' || *cp == 'E') {
+ cp++;
if (*cp == '-') {
cp++;
- *wrd1 = 0x80000000;
+ *wrd1 |= 0x40000000;
}
if (*cp == '+')
cp++;
- *wrd1 |= (*cp++ - '0');
- if (*cp == '.')
- cp++;
- for (i = 0; i < 8; i++) {
- *wrd2 <<= 4;
+ t = 0;
+ for (i = 0; i < 3; i++) {
if (*cp >= '0' && *cp <= '9')
- *wrd2 |= *cp++ - '0';
- }
- for (i = 0; i < 8; i++) {
- *wrd3 <<= 4;
- if (*cp >= '0' && *cp <= '9')
- *wrd3 |= *cp++ - '0';
- }
- if (*cp == 'e' || *cp == 'E') {
- cp++;
- if (*cp == '-') {
- cp++;
- *wrd1 |= 0x40000000;
- }
- if (*cp == '+')
- cp++;
- t = 0;
- for (i = 0; i < 3; i++) {
- if (*cp >= '0' && *cp <= '9')
- t = (t << 4) | (*cp++ - '0');
- }
- *wrd1 |= t << 16;
+ t = (t << 4) | (*cp++ - '0');
}
+ *wrd1 |= t << 16;
}
+}
- STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra, fptype *src)
- {
- uaecptr tmppc;
- uae_u16 tmp;
- int size, mode, reg;
- uae_u32 ad = 0;
- static const int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 };
- static const int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 };
-
- if (!(extra & 0x4000)) {
- *src = regs.fp[(extra >> 10) & 7];
- return 1;
- }
- mode = (opcode >> 3) & 7;
- reg = opcode & 7;
- size = (extra >> 10) & 7;
+STATIC_INLINE int get_fp_value (uae_u32 opcode, uae_u16 extra, fptype *src)
+{
+ uaecptr tmppc;
+ uae_u16 tmp;
+ int size, mode, reg;
+ uae_u32 ad = 0;
+ static const int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 };
+ static const int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 };
+
+ if (!(extra & 0x4000)) {
+ *src = regs.fp[(extra >> 10) & 7];
+ return 1;
+ }
+ mode = (opcode >> 3) & 7;
+ reg = opcode & 7;
+ size = (extra >> 10) & 7;
- switch (mode) {
+ switch (mode) {
case 0:
switch (size) {
- case 6:
- *src = (fptype) (uae_s8) m68k_dreg (regs, reg);
- break;
- case 4:
- *src = (fptype) (uae_s16) m68k_dreg (regs, reg);
- break;
- case 0:
- *src = (fptype) (uae_s32) m68k_dreg (regs, reg);
- break;
- case 1:
- *src = to_single (m68k_dreg (regs, reg));
- break;
- default:
- return 0;
+ case 6:
+ *src = (fptype) (uae_s8) m68k_dreg (regs, reg);
+ break;
+ case 4:
+ *src = (fptype) (uae_s16) m68k_dreg (regs, reg);
+ break;
+ case 0:
+ *src = (fptype) (uae_s32) m68k_dreg (regs, reg);
+ break;
+ case 1:
+ *src = to_single (m68k_dreg (regs, reg));
+ break;
+ default:
+ return 0;
}
return 1;
case 1:
break;
case 7:
switch (reg) {
- case 0:
- ad = (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 1:
- ad = next_ilong_fpu ();
- break;
- case 2:
- ad = m68k_getpc ();
- ad += (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 3:
- tmppc = m68k_getpc ();
- tmp = next_iword_fpu ();
- ad = get_disp_ea_020 (tmppc, tmp);
- break;
- case 4:
- ad = m68k_getpc ();
- m68k_setpc (ad + sz2[size]);
- if (size == 6)
- ad++;
- break;
- default:
- return 0;
+ case 0:
+ ad = (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 1:
+ ad = next_ilong_fpu ();
+ break;
+ case 2:
+ ad = m68k_getpc ();
+ ad += (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 3:
+ tmppc = m68k_getpc ();
+ tmp = next_iword_fpu ();
+ ad = get_disp_ea_020 (tmppc, tmp);
+ break;
+ case 4:
+ ad = m68k_getpc ();
+ m68k_setpc (ad + sz2[size]);
+ if (size == 6)
+ ad++;
+ break;
+ default:
+ return 0;
}
- }
- switch (size) {
+ }
+ switch (size) {
case 0:
*src = (fptype) (uae_s32) get_long_fpu (ad);
break;
break;
default:
return 0;
- }
- return 1;
}
+ return 1;
+}
- STATIC_INLINE int put_fp_value (fptype value, uae_u32 opcode, uae_u16 extra)
- {
- uae_u16 tmp;
- uaecptr tmppc;
- int size, mode, reg;
- uae_u32 ad;
- static int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 };
- static int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 };
+STATIC_INLINE int put_fp_value (fptype value, uae_u32 opcode, uae_u16 extra)
+{
+ uae_u16 tmp;
+ uaecptr tmppc;
+ int size, mode, reg;
+ uae_u32 ad;
+ static int sz1[8] = { 4, 4, 12, 12, 2, 8, 1, 0 };
+ static int sz2[8] = { 4, 4, 12, 12, 2, 8, 2, 0 };
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"PUTFP: %f %04X %04X\n", value, opcode, extra);
+ if (!isinrom ())
+ write_log (L"PUTFP: %f %04X %04X\n", value, opcode, extra);
#endif
- if (!(extra & 0x4000)) {
- regs.fp[(extra >> 10) & 7] = value;
- return 1;
- }
- reg = opcode & 7;
- mode = (opcode >> 3) & 7;
- size = (extra >> 10) & 7;
- ad = -1;
- switch (mode) {
+ if (!(extra & 0x4000)) {
+ regs.fp[(extra >> 10) & 7] = value;
+ return 1;
+ }
+ reg = opcode & 7;
+ mode = (opcode >> 3) & 7;
+ size = (extra >> 10) & 7;
+ ad = -1;
+ switch (mode) {
case 0:
switch (size) {
- case 6:
- m68k_dreg (regs, reg) = (uae_u32)(((toint (value, -128.0, 127.0) & 0xff)
- | (m68k_dreg (regs, reg) & ~0xff)));
- break;
- case 4:
- m68k_dreg (regs, reg) = (uae_u32)(((toint (value, -32768.0, 32767.0) & 0xffff)
- | (m68k_dreg (regs, reg) & ~0xffff)));
- break;
- case 0:
- m68k_dreg (regs, reg) = (uae_u32)toint (value, -2147483648.0, 2147483647.0);
- break;
- case 1:
- m68k_dreg (regs, reg) = from_single (value);
- break;
- default:
- return 0;
+ case 6:
+ m68k_dreg (regs, reg) = (uae_u32)(((toint (value, -128.0, 127.0) & 0xff)
+ | (m68k_dreg (regs, reg) & ~0xff)));
+ break;
+ case 4:
+ m68k_dreg (regs, reg) = (uae_u32)(((toint (value, -32768.0, 32767.0) & 0xffff)
+ | (m68k_dreg (regs, reg) & ~0xffff)));
+ break;
+ case 0:
+ m68k_dreg (regs, reg) = (uae_u32)toint (value, -2147483648.0, 2147483647.0);
+ break;
+ case 1:
+ m68k_dreg (regs, reg) = from_single (value);
+ break;
+ default:
+ return 0;
}
return 1;
case 1:
break;
case 7:
switch (reg) {
- case 0:
- ad = (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 1:
- ad = next_ilong_fpu ();
- break;
- case 2:
- ad = m68k_getpc ();
- ad += (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 3:
- tmppc = m68k_getpc ();
- tmp = next_iword_fpu ();
- ad = get_disp_ea_020 (tmppc, tmp);
- break;
- case 4:
- ad = m68k_getpc ();
- m68k_setpc (ad + sz2[size]);
- break;
- default:
- return 0;
+ case 0:
+ ad = (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 1:
+ ad = next_ilong_fpu ();
+ break;
+ case 2:
+ ad = m68k_getpc ();
+ ad += (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 3:
+ tmppc = m68k_getpc ();
+ tmp = next_iword_fpu ();
+ ad = get_disp_ea_020 (tmppc, tmp);
+ break;
+ case 4:
+ ad = m68k_getpc ();
+ m68k_setpc (ad + sz2[size]);
+ break;
+ default:
+ return 0;
}
- }
- switch (size) {
+ }
+ switch (size) {
case 0:
put_long_fpu (ad, (uae_u32)toint (value, -2147483648.0, 2147483647.0));
break;
break;
default:
return 0;
- }
- return 1;
}
+ return 1;
+}
- STATIC_INLINE int get_fp_ad (uae_u32 opcode, uae_u32 * ad)
- {
- uae_u16 tmp;
- uaecptr tmppc;
- int mode;
- int reg;
-
- mode = (opcode >> 3) & 7;
- reg = opcode & 7;
- switch (mode) {
+STATIC_INLINE int get_fp_ad (uae_u32 opcode, uae_u32 * ad)
+{
+ uae_u16 tmp;
+ uaecptr tmppc;
+ int mode;
+ int reg;
+
+ mode = (opcode >> 3) & 7;
+ reg = opcode & 7;
+ switch (mode) {
case 0:
case 1:
return 0;
break;
case 7:
switch (reg) {
- case 0:
- *ad = (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 1:
- *ad = next_ilong_fpu ();
- break;
- case 2:
- *ad = m68k_getpc ();
- *ad += (uae_s32) (uae_s16) next_iword_fpu ();
- break;
- case 3:
- tmppc = m68k_getpc ();
- tmp = next_iword_fpu ();
- *ad = get_disp_ea_020 (tmppc, tmp);
- break;
- default:
- return 0;
+ case 0:
+ *ad = (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 1:
+ *ad = next_ilong_fpu ();
+ break;
+ case 2:
+ *ad = m68k_getpc ();
+ *ad += (uae_s32) (uae_s16) next_iword_fpu ();
+ break;
+ case 3:
+ tmppc = m68k_getpc ();
+ tmp = next_iword_fpu ();
+ *ad = get_disp_ea_020 (tmppc, tmp);
+ break;
+ default:
+ return 0;
}
- }
- return 1;
}
+ return 1;
+}
- STATIC_INLINE int fpp_cond (int condition)
- {
- int N = (regs.fp_result < 0.0);
- int Z = (regs.fp_result == 0.0);
- int NotANumber = 0;
+STATIC_INLINE int fpp_cond (int condition)
+{
+ int N = (regs.fp_result < 0.0);
+ int Z = (regs.fp_result == 0.0);
+ int NotANumber = 0;
#ifdef HAVE_ISNAN
- NotANumber = isnan (regs.fp_result);
+ NotANumber = isnan (regs.fp_result);
#endif
- if (NotANumber)
- N=Z=0;
+ if (NotANumber)
+ N=Z=0;
- switch (condition) {
+ switch (condition) {
case 0x00:
return 0;
case 0x01:
return !Z;
case 0x1f:
return 1;
- }
- return -1;
}
+ return -1;
+}
- void fpuop_dbcc (uae_u32 opcode, uae_u16 extra)
- {
- uaecptr pc = (uae_u32) m68k_getpc ();
- uae_s32 disp;
- int cc;
+void fpuop_dbcc (uae_u32 opcode, uae_u16 extra)
+{
+ uaecptr pc = (uae_u32) m68k_getpc ();
+ uae_s32 disp;
+ int cc;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"fdbcc_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"fdbcc_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, 4))
- return;
-
- disp = (uae_s32) (uae_s16) next_iword_fpu ();
- cc = fpp_cond (extra & 0x3f);
- if (cc == -1) {
- fpu_op_illg (opcode, 4);
- } else if (!cc) {
- int reg = opcode & 0x7;
-
- m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & 0xffff0000)
- | (((m68k_dreg (regs, reg) & 0xffff) - 1) & 0xffff));
- if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff)
- m68k_setpc (pc + disp);
- }
+ if (fault_if_no_fpu (opcode, 4))
+ return;
+
+ disp = (uae_s32) (uae_s16) next_iword_fpu ();
+ cc = fpp_cond (extra & 0x3f);
+ if (cc == -1) {
+ fpu_op_illg (opcode, 4);
+ } else if (!cc) {
+ int reg = opcode & 0x7;
+
+ m68k_dreg (regs, reg) = ((m68k_dreg (regs, reg) & 0xffff0000)
+ | (((m68k_dreg (regs, reg) & 0xffff) - 1) & 0xffff));
+ if ((m68k_dreg (regs, reg) & 0xffff) != 0xffff)
+ m68k_setpc (pc + disp);
}
+}
- void fpuop_scc (uae_u32 opcode, uae_u16 extra)
- {
- uae_u32 ad;
- int cc;
+void fpuop_scc (uae_u32 opcode, uae_u16 extra)
+{
+ uae_u32 ad;
+ int cc;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"fscc_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"fscc_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, 4))
- return;
-
- cc = fpp_cond (extra & 0x3f);
- if (cc == -1) {
- fpu_op_illg (opcode, 4);
- } else if ((opcode & 0x38) == 0) {
- m68k_dreg (regs, opcode & 7) = (m68k_dreg (regs, opcode & 7) & ~0xff) | (cc ? 0xff : 0x00);
- } else {
- if (get_fp_ad (opcode, &ad) == 0) {
- m68k_setpc (m68k_getpc () - 4);
- op_illg (opcode);
- } else
- put_byte_fpu (ad, cc ? 0xff : 0x00);
- }
+ if (fault_if_no_fpu (opcode, 4))
+ return;
+
+ cc = fpp_cond (extra & 0x3f);
+ if (cc == -1) {
+ fpu_op_illg (opcode, 4);
+ } else if ((opcode & 0x38) == 0) {
+ m68k_dreg (regs, opcode & 7) = (m68k_dreg (regs, opcode & 7) & ~0xff) | (cc ? 0xff : 0x00);
+ } else {
+ if (get_fp_ad (opcode, &ad) == 0) {
+ m68k_setpc (m68k_getpc () - 4);
+ op_illg (opcode);
+ } else
+ put_byte_fpu (ad, cc ? 0xff : 0x00);
}
+}
- void fpuop_trapcc (uae_u32 opcode, uaecptr oldpc, uae_u16 extra)
- {
- int cc;
+void fpuop_trapcc (uae_u32 opcode, uaecptr oldpc, uae_u16 extra)
+{
+ int cc;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"ftrapcc_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"ftrapcc_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, m68k_getpc() - oldpc))
- return;
+ if (fault_if_no_fpu (opcode, m68k_getpc() - oldpc))
+ return;
- cc = fpp_cond (extra & 0x3f);
- if (cc == -1) {
- fpu_op_illg (opcode, m68k_getpc () - oldpc);
- }
- if (cc)
- Exception (7, oldpc - 2);
+ cc = fpp_cond (extra & 0x3f);
+ if (cc == -1) {
+ fpu_op_illg (opcode, m68k_getpc () - oldpc);
}
+ if (cc)
+ Exception (7, oldpc - 2);
+}
- void fpuop_bcc (uae_u32 opcode, uaecptr pc, uae_u32 extra)
- {
- int cc;
+void fpuop_bcc (uae_u32 opcode, uaecptr pc, uae_u32 extra)
+{
+ int cc;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"fbcc_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"fbcc_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, m68k_getpc () - pc))
- return;
-
- cc = fpp_cond (opcode & 0x3f);
- if (cc == -1) {
- fpu_op_illg (opcode, m68k_getpc () - pc);
- } else if (cc) {
- if ((opcode & 0x40) == 0)
- extra = (uae_s32) (uae_s16) extra;
- m68k_setpc (pc + extra);
- }
+ if (fault_if_no_fpu (opcode, m68k_getpc () - pc))
+ return;
+
+ cc = fpp_cond (opcode & 0x3f);
+ if (cc == -1) {
+ fpu_op_illg (opcode, m68k_getpc () - pc);
+ } else if (cc) {
+ if ((opcode & 0x40) == 0)
+ extra = (uae_s32) (uae_s16) extra;
+ m68k_setpc (pc + extra);
}
+}
- void fpuop_save (uae_u32 opcode)
- {
- uae_u32 ad;
- int incr = (opcode & 0x38) == 0x20 ? -1 : 1;
- int fpu_version = get_fpu_version();
- int i;
+void fpuop_save (uae_u32 opcode)
+{
+ uae_u32 ad;
+ int incr = (opcode & 0x38) == 0x20 ? -1 : 1;
+ int fpu_version = get_fpu_version();
+ int i;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"fsave_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"fsave_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, 2))
- return;
+ if (fault_if_no_fpu (opcode, 2))
+ return;
- if (get_fp_ad (opcode, &ad) == 0) {
- fpu_op_illg (opcode, 2);
- return;
- }
+ if (get_fp_ad (opcode, &ad) == 0) {
+ fpu_op_illg (opcode, 2);
+ return;
+ }
- if (currprefs.fpu_model == 68060) {
- /* 12 byte 68060 IDLE frame. */
- if (incr < 0) {
- ad -= 4;
- put_long_fpu (ad, 0x00000000);
- ad -= 4;
- put_long_fpu (ad, 0x00000000);
+ if (currprefs.fpu_model == 68060) {
+ /* 12 byte 68060 IDLE frame. */
+ if (incr < 0) {
+ ad -= 4;
+ put_long_fpu (ad, 0x00000000);
+ ad -= 4;
+ put_long_fpu (ad, 0x00000000);
+ ad -= 4;
+ put_long_fpu (ad, 0x00006000);
+ } else {
+ put_long_fpu (ad, 0x00006000);
+ ad += 4;
+ put_long_fpu (ad, 0x00000000);
+ ad += 4;
+ put_long_fpu (ad, 0x00000000);
+ ad += 4;
+ }
+ } else if (currprefs.fpu_model == 68040) {
+ /* 4 byte 68040 IDLE frame. */
+ if (incr < 0) {
+ ad -= 4;
+ put_long_fpu (ad, fpu_version << 24);
+ } else {
+ put_long_fpu (ad, fpu_version << 24);
+ ad += 4;
+ }
+ } else { /* 68881/68882 */
+ int idle_size = currprefs.fpu_model == 68882 ? 0x38 : 0x18;
+ if (incr < 0) {
+ ad -= 4;
+ put_long_fpu (ad, 0x70000000);
+ for (i = 0; i < (idle_size - 1) / 4; i++) {
ad -= 4;
- put_long_fpu (ad, 0x00006000);
- } else {
- put_long_fpu (ad, 0x00006000);
- ad += 4;
put_long_fpu (ad, 0x00000000);
- ad += 4;
- put_long_fpu (ad, 0x00000000);
- ad += 4;
- }
- } else if (currprefs.fpu_model == 68040) {
- /* 4 byte 68040 IDLE frame. */
- if (incr < 0) {
- ad -= 4;
- put_long_fpu (ad, fpu_version << 24);
- } else {
- put_long_fpu (ad, fpu_version << 24);
- ad += 4;
}
- } else { /* 68881/68882 */
- int idle_size = currprefs.fpu_model == 68882 ? 0x38 : 0x18;
- if (incr < 0) {
- ad -= 4;
- put_long_fpu (ad, 0x70000000);
- for (i = 0; i < (idle_size - 1) / 4; i++) {
- ad -= 4;
- put_long_fpu (ad, 0x00000000);
- }
- ad -= 4;
- put_long_fpu (ad, (fpu_version << 24) | (idle_size << 16));
- } else {
- put_long_fpu (ad, (fpu_version << 24) | (idle_size << 16));
- ad += 4;
- for (i = 0; i < (idle_size - 1) / 4; i++) {
- put_long_fpu (ad, 0x00000000);
- ad += 4;
- }
- put_long_fpu (ad, 0x70000000);
+ ad -= 4;
+ put_long_fpu (ad, (fpu_version << 24) | (idle_size << 16));
+ } else {
+ put_long_fpu (ad, (fpu_version << 24) | (idle_size << 16));
+ ad += 4;
+ for (i = 0; i < (idle_size - 1) / 4; i++) {
+ put_long_fpu (ad, 0x00000000);
ad += 4;
}
+ put_long_fpu (ad, 0x70000000);
+ ad += 4;
}
- if ((opcode & 0x38) == 0x18)
- m68k_areg (regs, opcode & 7) = ad;
- if ((opcode & 0x38) == 0x20)
- m68k_areg (regs, opcode & 7) = ad;
}
+ if ((opcode & 0x38) == 0x18)
+ m68k_areg (regs, opcode & 7) = ad;
+ if ((opcode & 0x38) == 0x20)
+ m68k_areg (regs, opcode & 7) = ad;
+}
- void fpuop_restore (uae_u32 opcode)
- {
- uae_u32 ad;
- uae_u32 d;
- int incr = (opcode & 0x38) == 0x20 ? -1 : 1;
+void fpuop_restore (uae_u32 opcode)
+{
+ uae_u32 ad;
+ uae_u32 d;
+ int incr = (opcode & 0x38) == 0x20 ? -1 : 1;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"frestore_opp at %08lx\n", m68k_getpc ());
+ if (!isinrom ())
+ write_log (L"frestore_opp at %08lx\n", m68k_getpc ());
#endif
- if (fault_if_no_fpu (opcode, 2))
- return;
+ if (fault_if_no_fpu (opcode, 2))
+ return;
- if (get_fp_ad (opcode, &ad) == 0) {
- fpu_op_illg (opcode, 2);
- return;
- }
+ if (get_fp_ad (opcode, &ad) == 0) {
+ fpu_op_illg (opcode, 2);
+ return;
+ }
- if (currprefs.fpu_model == 68060) {
- /* all 68060 FPU frames are 12 bytes */
- if (incr < 0) {
- ad -= 4;
- d = get_long_fpu (ad);
- ad -= 8;
- } else {
- d = get_long_fpu (ad);
- ad += 4;
- ad += 8;
- }
+ if (currprefs.fpu_model == 68060) {
+ /* all 68060 FPU frames are 12 bytes */
+ if (incr < 0) {
+ ad -= 4;
+ d = get_long_fpu (ad);
+ ad -= 8;
+ } else {
+ d = get_long_fpu (ad);
+ ad += 4;
+ ad += 8;
+ }
- } else if (currprefs.fpu_model == 68040) {
- /* 68040 */
- if (incr < 0) {
- /* @@@ This may be wrong. */
- ad -= 4;
- d = get_long_fpu (ad);
- if ((d & 0xff000000) != 0) { /* Not a NULL frame? */
- if ((d & 0x00ff0000) == 0) { /* IDLE */
- } else if ((d & 0x00ff0000) == 0x00300000) { /* UNIMP */
- ad -= 44;
- } else if ((d & 0x00ff0000) == 0x00600000) { /* BUSY */
- ad -= 92;
- }
- }
- } else {
- d = get_long_fpu (ad);
- ad += 4;
- if ((d & 0xff000000) != 0) { /* Not a NULL frame? */
- if ((d & 0x00ff0000) == 0) { /* IDLE */
- } else if ((d & 0x00ff0000) == 0x00300000) { /* UNIMP */
- ad += 44;
- } else if ((d & 0x00ff0000) == 0x00600000) { /* BUSY */
- ad += 92;
- }
+ } else if (currprefs.fpu_model == 68040) {
+ /* 68040 */
+ if (incr < 0) {
+ /* @@@ This may be wrong. */
+ ad -= 4;
+ d = get_long_fpu (ad);
+ if ((d & 0xff000000) != 0) { /* Not a NULL frame? */
+ if ((d & 0x00ff0000) == 0) { /* IDLE */
+ } else if ((d & 0x00ff0000) == 0x00300000) { /* UNIMP */
+ ad -= 44;
+ } else if ((d & 0x00ff0000) == 0x00600000) { /* BUSY */
+ ad -= 92;
}
}
- } else { /* 68881/68882 */
- if (incr < 0) {
- ad -= 4;
- d = get_long_fpu (ad);
- if ((d & 0xff000000) != 0) {
- if ((d & 0x00ff0000) == 0x00180000)
- ad -= 6 * 4;
- else if ((d & 0x00ff0000) == 0x00380000)
- ad -= 14 * 4;
- else if ((d & 0x00ff0000) == 0x00b40000)
- ad -= 45 * 4;
- }
- } else {
- d = get_long_fpu (ad);
- ad += 4;
- if ((d & 0xff000000) != 0) {
- if ((d & 0x00ff0000) == 0x00180000)
- ad += 6 * 4;
- else if ((d & 0x00ff0000) == 0x00380000)
- ad += 14 * 4;
- else if ((d & 0x00ff0000) == 0x00b40000)
- ad += 45 * 4;
+ } else {
+ d = get_long_fpu (ad);
+ ad += 4;
+ if ((d & 0xff000000) != 0) { /* Not a NULL frame? */
+ if ((d & 0x00ff0000) == 0) { /* IDLE */
+ } else if ((d & 0x00ff0000) == 0x00300000) { /* UNIMP */
+ ad += 44;
+ } else if ((d & 0x00ff0000) == 0x00600000) { /* BUSY */
+ ad += 92;
}
}
}
- if ((opcode & 0x38) == 0x18)
- m68k_areg (regs, opcode & 7) = ad;
- if ((opcode & 0x38) == 0x20)
- m68k_areg (regs, opcode & 7) = ad;
+ } else { /* 68881/68882 */
+ if (incr < 0) {
+ ad -= 4;
+ d = get_long_fpu (ad);
+ if ((d & 0xff000000) != 0) {
+ if ((d & 0x00ff0000) == 0x00180000)
+ ad -= 6 * 4;
+ else if ((d & 0x00ff0000) == 0x00380000)
+ ad -= 14 * 4;
+ else if ((d & 0x00ff0000) == 0x00b40000)
+ ad -= 45 * 4;
+ }
+ } else {
+ d = get_long_fpu (ad);
+ ad += 4;
+ if ((d & 0xff000000) != 0) {
+ if ((d & 0x00ff0000) == 0x00180000)
+ ad += 6 * 4;
+ else if ((d & 0x00ff0000) == 0x00380000)
+ ad += 14 * 4;
+ else if ((d & 0x00ff0000) == 0x00b40000)
+ ad += 45 * 4;
+ }
+ }
}
+ if ((opcode & 0x38) == 0x18)
+ m68k_areg (regs, opcode & 7) = ad;
+ if ((opcode & 0x38) == 0x20)
+ m68k_areg (regs, opcode & 7) = ad;
+}
- static void fround (int reg)
- {
- regs.fp[reg] = (float)regs.fp[reg];
- }
+static void fround (int reg)
+{
+ regs.fp[reg] = (float)regs.fp[reg];
+}
- void fpuop_arithmetic (uae_u32 opcode, uae_u16 extra)
- {
- int reg;
- fptype src;
+void fpuop_arithmetic (uae_u32 opcode, uae_u16 extra)
+{
+ int reg;
+ fptype src;
#if DEBUG_FPP
- if (!isinrom ())
- write_log (L"FPP %04lx %04x at %08lx\n", opcode & 0xffff, extra, m68k_getpc () - 4);
+ if (!isinrom ())
+ write_log (L"FPP %04lx %04x at %08lx\n", opcode & 0xffff, extra, m68k_getpc () - 4);
#endif
- if (fault_if_no_fpu (opcode, 4))
- return;
+ if (fault_if_no_fpu (opcode, 4))
+ return;
- switch ((extra >> 13) & 0x7) {
+ switch ((extra >> 13) & 0x7) {
case 3:
if (put_fp_value (regs.fp[(extra >> 7) & 7], opcode, extra) == 0) {
return;
}
switch ((extra >> 11) & 3) {
- case 0: /* static pred */
- list = extra & 0xff;
- incr = -1;
- break;
- case 1: /* dynamic pred */
- list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
- incr = -1;
- break;
- case 2: /* static postinc */
- list = extra & 0xff;
- incr = 1;
- break;
- case 3: /* dynamic postinc */
- list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
- incr = 1;
- break;
+ case 0: /* static pred */
+ list = extra & 0xff;
+ incr = -1;
+ break;
+ case 1: /* dynamic pred */
+ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
+ incr = -1;
+ break;
+ case 2: /* static postinc */
+ list = extra & 0xff;
+ incr = 1;
+ break;
+ case 3: /* dynamic postinc */
+ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
+ incr = 1;
+ break;
}
if (incr < 0) {
for (reg = 7; reg >= 0; reg--) {
return;
}
switch ((extra >> 11) & 3) {
- case 0: /* static pred */
- list = extra & 0xff;
- incr = -1;
- break;
- case 1: /* dynamic pred */
- list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
- incr = -1;
- break;
- case 2: /* static postinc */
- list = extra & 0xff;
- incr = 1;
- break;
- case 3: /* dynamic postinc */
- list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
- incr = 1;
- break;
+ case 0: /* static pred */
+ list = extra & 0xff;
+ incr = -1;
+ break;
+ case 1: /* dynamic pred */
+ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
+ incr = -1;
+ break;
+ case 2: /* static postinc */
+ list = extra & 0xff;
+ incr = 1;
+ break;
+ case 3: /* dynamic postinc */
+ list = m68k_dreg (regs, (extra >> 4) & 3) & 0xff;
+ incr = 1;
+ break;
}
if (incr < 0) {
for (reg = 7; reg >= 0; reg--) {
reg = (extra >> 7) & 7;
if ((extra & 0xfc00) == 0x5c00) {
switch (extra & 0x7f) {
- case 0x00:
- regs.fp[reg] = *fp_pi;
- break;
- case 0x0b:
- regs.fp[reg] = *fp_l10_2;
- break;
- case 0x0c:
- regs.fp[reg] = *fp_exp_1;
- break;
- case 0x0d:
- regs.fp[reg] = *fp_l2_e;
- break;
- case 0x0e:
- regs.fp[reg] = *fp_l10_e;
- break;
- case 0x0f:
- regs.fp[reg] = 0.0;
- break;
- case 0x30:
- regs.fp[reg] = *fp_ln_2;
- break;
- case 0x31:
- regs.fp[reg] = *fp_ln_10;
- break;
- case 0x32:
- regs.fp[reg] = (fptype)fp_1e0;
- break;
- case 0x33:
- regs.fp[reg] = (fptype)fp_1e1;
- break;
- case 0x34:
- regs.fp[reg] = (fptype)fp_1e2;
- break;
- case 0x35:
- regs.fp[reg] = (fptype)fp_1e4;
- break;
- case 0x36:
- regs.fp[reg] = (fptype)fp_1e8;
- break;
- case 0x37:
- regs.fp[reg] = *fp_1e16;
- break;
- case 0x38:
- regs.fp[reg] = *fp_1e32;
- break;
- case 0x39:
- regs.fp[reg] = *fp_1e64;
- break;
- case 0x3a:
- regs.fp[reg] = *fp_1e128;
- break;
- case 0x3b:
- regs.fp[reg] = *fp_1e256;
- break;
- case 0x3c:
- regs.fp[reg] = *fp_1e512;
- break;
- case 0x3d:
- regs.fp[reg] = *fp_1e1024;
- break;
- case 0x3e:
- regs.fp[reg] = *fp_1e2048;
- break;
- case 0x3f:
- regs.fp[reg] = *fp_1e4096;
- break;
- default:
- m68k_setpc (m68k_getpc () - 4);
- op_illg (opcode);
- return;
+ case 0x00:
+ regs.fp[reg] = *fp_pi;
+ break;
+ case 0x0b:
+ regs.fp[reg] = *fp_l10_2;
+ break;
+ case 0x0c:
+ regs.fp[reg] = *fp_exp_1;
+ break;
+ case 0x0d:
+ regs.fp[reg] = *fp_l2_e;
+ break;
+ case 0x0e:
+ regs.fp[reg] = *fp_l10_e;
+ break;
+ case 0x0f:
+ regs.fp[reg] = 0.0;
+ break;
+ case 0x30:
+ regs.fp[reg] = *fp_ln_2;
+ break;
+ case 0x31:
+ regs.fp[reg] = *fp_ln_10;
+ break;
+ case 0x32:
+ regs.fp[reg] = (fptype)fp_1e0;
+ break;
+ case 0x33:
+ regs.fp[reg] = (fptype)fp_1e1;
+ break;
+ case 0x34:
+ regs.fp[reg] = (fptype)fp_1e2;
+ break;
+ case 0x35:
+ regs.fp[reg] = (fptype)fp_1e4;
+ break;
+ case 0x36:
+ regs.fp[reg] = (fptype)fp_1e8;
+ break;
+ case 0x37:
+ regs.fp[reg] = *fp_1e16;
+ break;
+ case 0x38:
+ regs.fp[reg] = *fp_1e32;
+ break;
+ case 0x39:
+ regs.fp[reg] = *fp_1e64;
+ break;
+ case 0x3a:
+ regs.fp[reg] = *fp_1e128;
+ break;
+ case 0x3b:
+ regs.fp[reg] = *fp_1e256;
+ break;
+ case 0x3c:
+ regs.fp[reg] = *fp_1e512;
+ break;
+ case 0x3d:
+ regs.fp[reg] = *fp_1e1024;
+ break;
+ case 0x3e:
+ regs.fp[reg] = *fp_1e2048;
+ break;
+ case 0x3f:
+ regs.fp[reg] = *fp_1e4096;
+ break;
+ default:
+ m68k_setpc (m68k_getpc () - 4);
+ op_illg (opcode);
+ return;
}
MAKE_FPSR (regs.fp[reg]);
return;
switch (extra & 0x7f) {
- case 0x00: /* FMOVE */
- case 0x40: /* Explicit rounding. This is just a quick fix. */
- case 0x44: /* Same for all other cases that have three choices */
- regs.fp[reg] = src; /* Brian King was here. */
- /*<ea> to register needs FPSR updated. See Motorola 68K Manual. */
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x01: /* FINT */
- /* need to take the current rounding mode into account */
+ case 0x00: /* FMOVE */
+ case 0x40: /* Explicit rounding. This is just a quick fix. */
+ case 0x44: /* Same for all other cases that have three choices */
+ regs.fp[reg] = src; /* Brian King was here. */
+ /*<ea> to register needs FPSR updated. See Motorola 68K Manual. */
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x01: /* FINT */
+ /* need to take the current rounding mode into account */
#if defined(X86_MSVC_ASSEMBLY)
- {
- fptype tmp_fp;
+ {
+ fptype tmp_fp;
- __asm {
- fld LDPTR src
- frndint
- fstp LDPTR tmp_fp
- }
- regs.fp[reg] = tmp_fp;
+ __asm {
+ fld LDPTR src
+ frndint
+ fstp LDPTR tmp_fp
}
+ regs.fp[reg] = tmp_fp;
+ }
#else /* no X86_MSVC */
- switch ((regs.fpcr >> 4) & 3) {
- case 0: /* to nearest */
- regs.fp[reg] = floor (src + 0.5);
- break;
- case 1: /* to zero */
- if (src >= 0.0)
- regs.fp[reg] = floor (src);
- else
- regs.fp[reg] = ceil (src);
- break;
- case 2: /* down */
- regs.fp[reg] = floor (src);
- break;
- case 3: /* up */
- regs.fp[reg] = ceil (src);
- break;
- default: /* never reached */
- regs.fp[reg] = src;
- }
+ switch ((regs.fpcr >> 4) & 3) {
+ case 0: /* to nearest */
+ regs.fp[reg] = floor (src + 0.5);
+ break;
+ case 1: /* to zero */
+ if (src >= 0.0)
+ regs.fp[reg] = floor (src);
+ else
+ regs.fp[reg] = ceil (src);
+ break;
+ case 2: /* down */
+ regs.fp[reg] = floor (src);
+ break;
+ case 3: /* up */
+ regs.fp[reg] = ceil (src);
+ break;
+ default: /* never reached */
+ regs.fp[reg] = src;
+ }
#endif /* X86_MSVC */
- break;
- case 0x02: /* FSINH */
- regs.fp[reg] = sinh (src);
- break;
- case 0x03: /* FINTRZ */
- regs.fp[reg] = fp_round_to_zero(src);
- break;
- case 0x04: /* FSQRT */
- case 0x41:
- case 0x45:
- regs.fp[reg] = sqrt (src);
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x06: /* FLOGNP1 */
- regs.fp[reg] = log (src + 1.0);
- break;
- case 0x08: /* FETOXM1 */
- regs.fp[reg] = exp (src) - 1.0;
- break;
- case 0x09: /* FTANH */
- regs.fp[reg] = tanh (src);
- break;
- case 0x0a: /* FATAN */
- regs.fp[reg] = atan (src);
- break;
- case 0x0c: /* FASIN */
- regs.fp[reg] = asin (src);
- break;
- case 0x0d: /* FATANH */
+ break;
+ case 0x02: /* FSINH */
+ regs.fp[reg] = sinh (src);
+ break;
+ case 0x03: /* FINTRZ */
+ regs.fp[reg] = fp_round_to_zero(src);
+ break;
+ case 0x04: /* FSQRT */
+ case 0x41:
+ case 0x45:
+ regs.fp[reg] = sqrt (src);
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x06: /* FLOGNP1 */
+ regs.fp[reg] = log (src + 1.0);
+ break;
+ case 0x08: /* FETOXM1 */
+ regs.fp[reg] = exp (src) - 1.0;
+ break;
+ case 0x09: /* FTANH */
+ regs.fp[reg] = tanh (src);
+ break;
+ case 0x0a: /* FATAN */
+ regs.fp[reg] = atan (src);
+ break;
+ case 0x0c: /* FASIN */
+ regs.fp[reg] = asin (src);
+ break;
+ case 0x0d: /* FATANH */
#if 1 /* The BeBox doesn't have atanh, and it isn't in the HPUX libm either */
- regs.fp[reg] = 0.5 * log ((1 + src) / (1 - src));
+ regs.fp[reg] = 0.5 * log ((1 + src) / (1 - src));
#else
- regs.fp[reg] = atanh (src);
+ regs.fp[reg] = atanh (src);
#endif
- break;
- case 0x0e: /* FSIN */
- regs.fp[reg] = sin (src);
- break;
- case 0x0f: /* FTAN */
- regs.fp[reg] = tan (src);
- break;
- case 0x10: /* FETOX */
- regs.fp[reg] = exp (src);
- break;
- case 0x11: /* FTWOTOX */
- regs.fp[reg] = pow (2.0, src);
- break;
- case 0x12: /* FTENTOX */
- regs.fp[reg] = pow (10.0, src);
- break;
- case 0x14: /* FLOGN */
- regs.fp[reg] = log (src);
- break;
- case 0x15: /* FLOG10 */
- regs.fp[reg] = log10 (src);
- break;
- case 0x16: /* FLOG2 */
- regs.fp[reg] = *fp_l2_e * log (src);
- break;
- case 0x18: /* FABS */
- case 0x58:
- case 0x5c:
- regs.fp[reg] = src < 0 ? -src : src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x19: /* FCOSH */
- regs.fp[reg] = cosh (src);
- break;
- case 0x1a: /* FNEG */
- case 0x5a:
- case 0x5e:
- regs.fp[reg] = -src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x1c: /* FACOS */
- regs.fp[reg] = acos (src);
- break;
- case 0x1d: /* FCOS */
- regs.fp[reg] = cos (src);
- break;
- case 0x1e: /* FGETEXP */
- {
- if (src == 0) {
- regs.fp[reg] = 0;
- } else {
- int expon;
- frexp (src, &expon);
- regs.fp[reg] = (double) (expon - 1);
- }
- }
- break;
- case 0x1f: /* FGETMAN */
- {
- if (src == 0) {
- regs.fp[reg] = 0;
- } else {
- int expon;
- regs.fp[reg] = frexp (src, &expon) * 2.0;
- }
- }
- break;
- case 0x20: /* FDIV */
- case 0x60:
- case 0x64:
- regs.fp[reg] /= src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x21: /* FMOD */
- {
- fptype quot = fp_round_to_zero(regs.fp[reg] / src);
- regs.fp[reg] = regs.fp[reg] - quot * src;
+ break;
+ case 0x0e: /* FSIN */
+ regs.fp[reg] = sin (src);
+ break;
+ case 0x0f: /* FTAN */
+ regs.fp[reg] = tan (src);
+ break;
+ case 0x10: /* FETOX */
+ regs.fp[reg] = exp (src);
+ break;
+ case 0x11: /* FTWOTOX */
+ regs.fp[reg] = pow (2.0, src);
+ break;
+ case 0x12: /* FTENTOX */
+ regs.fp[reg] = pow (10.0, src);
+ break;
+ case 0x14: /* FLOGN */
+ regs.fp[reg] = log (src);
+ break;
+ case 0x15: /* FLOG10 */
+ regs.fp[reg] = log10 (src);
+ break;
+ case 0x16: /* FLOG2 */
+ regs.fp[reg] = *fp_l2_e * log (src);
+ break;
+ case 0x18: /* FABS */
+ case 0x58:
+ case 0x5c:
+ regs.fp[reg] = src < 0 ? -src : src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x19: /* FCOSH */
+ regs.fp[reg] = cosh (src);
+ break;
+ case 0x1a: /* FNEG */
+ case 0x5a:
+ case 0x5e:
+ regs.fp[reg] = -src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x1c: /* FACOS */
+ regs.fp[reg] = acos (src);
+ break;
+ case 0x1d: /* FCOS */
+ regs.fp[reg] = cos (src);
+ break;
+ case 0x1e: /* FGETEXP */
+ {
+ if (src == 0) {
+ regs.fp[reg] = 0;
+ } else {
+ int expon;
+ frexp (src, &expon);
+ regs.fp[reg] = (double) (expon - 1);
}
- break;
- case 0x22: /* FADD */
- case 0x62:
- case 0x66:
- regs.fp[reg] += src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x23: /* FMUL */
- case 0x63:
- case 0x67:
- regs.fp[reg] *= src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x24: /* FSGLDIV */
- regs.fp[reg] /= src;
- break;
- case 0x25: /* FREM */
- {
- fptype quot = fp_round_to_nearest(regs.fp[reg] / src);
- regs.fp[reg] = regs.fp[reg] - quot * src;
+ }
+ break;
+ case 0x1f: /* FGETMAN */
+ {
+ if (src == 0) {
+ regs.fp[reg] = 0;
+ } else {
+ int expon;
+ regs.fp[reg] = frexp (src, &expon) * 2.0;
}
- break;
- case 0x26: /* FSCALE */
- if (src != 0) {
+ }
+ break;
+ case 0x20: /* FDIV */
+ case 0x60:
+ case 0x64:
+ regs.fp[reg] /= src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x21: /* FMOD */
+ {
+ fptype quot = fp_round_to_zero(regs.fp[reg] / src);
+ regs.fp[reg] = regs.fp[reg] - quot * src;
+ }
+ break;
+ case 0x22: /* FADD */
+ case 0x62:
+ case 0x66:
+ regs.fp[reg] += src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x23: /* FMUL */
+ case 0x63:
+ case 0x67:
+ regs.fp[reg] *= src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x24: /* FSGLDIV */
+ regs.fp[reg] /= src;
+ break;
+ case 0x25: /* FREM */
+ {
+ fptype quot = fp_round_to_nearest(regs.fp[reg] / src);
+ regs.fp[reg] = regs.fp[reg] - quot * src;
+ }
+ break;
+ case 0x26: /* FSCALE */
+ if (src != 0) {
#ifdef ldexp
- regs.fp[reg] = ldexp (regs.fp[reg], (int) src);
+ regs.fp[reg] = ldexp (regs.fp[reg], (int) src);
#else
- regs.fp[reg] *= exp (*fp_ln_2 * (int) src);
+ regs.fp[reg] *= exp (*fp_ln_2 * (int) src);
#endif
- }
- break;
- case 0x27: /* FSGLMUL */
- regs.fp[reg] *= src;
- break;
- case 0x28: /* FSUB */
- case 0x68:
- case 0x6c:
- regs.fp[reg] -= src;
- if ((extra & 0x44) == 0x40)
- fround (reg);
- break;
- case 0x30: /* FSINCOS */
- case 0x31:
- case 0x32:
- case 0x33:
- case 0x34:
- case 0x35:
- case 0x36:
- case 0x37:
- regs.fp[extra & 7] = cos (src);
- regs.fp[reg] = sin (src);
- break;
- case 0x38: /* FCMP */
- {
- fptype tmp = regs.fp[reg] - src;
- regs.fpsr = 0;
- MAKE_FPSR (tmp);
- }
- return;
- case 0x3a: /* FTST */
+ }
+ break;
+ case 0x27: /* FSGLMUL */
+ regs.fp[reg] *= src;
+ break;
+ case 0x28: /* FSUB */
+ case 0x68:
+ case 0x6c:
+ regs.fp[reg] -= src;
+ if ((extra & 0x44) == 0x40)
+ fround (reg);
+ break;
+ case 0x30: /* FSINCOS */
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ regs.fp[extra & 7] = cos (src);
+ regs.fp[reg] = sin (src);
+ break;
+ case 0x38: /* FCMP */
+ {
+ fptype tmp = regs.fp[reg] - src;
regs.fpsr = 0;
- MAKE_FPSR (src);
- return;
- default:
- m68k_setpc (m68k_getpc () - 4);
- op_illg (opcode);
- return;
+ MAKE_FPSR (tmp);
+ }
+ return;
+ case 0x3a: /* FTST */
+ regs.fpsr = 0;
+ MAKE_FPSR (src);
+ return;
+ default:
+ m68k_setpc (m68k_getpc () - 4);
+ op_illg (opcode);
+ return;
}
MAKE_FPSR (regs.fp[reg]);
return;
- }
- m68k_setpc (m68k_getpc () - 4);
- op_illg (opcode);
}
+ m68k_setpc (m68k_getpc () - 4);
+ op_illg (opcode);
+}
- void fpu_reset (void)
- {
- regs.fpcr = regs.fpsr = regs.fpiar = 0;
- regs.fp_result = 1;
- fpux_restore (NULL);
- }
+void fpu_reset (void)
+{
+ regs.fpcr = regs.fpsr = regs.fpiar = 0;
+ regs.fp_result = 1;
+ fpux_restore (NULL);
+}
- uae_u8 *restore_fpu (uae_u8 *src)
- {
- int i;
- uae_u32 flags;
-
- changed_prefs.fpu_model = currprefs.fpu_model = restore_u32 ();
- flags = restore_u32 ();
- for (i = 0; i < 8; i++) {
- uae_u32 w1 = restore_u32 ();
- uae_u32 w2 = restore_u32 ();
- uae_u32 w3 = restore_u16 ();
- regs.fp[i] = to_exten (w1, w2, w3);
- }
- regs.fpcr = restore_u32 ();
- native_set_fpucw (regs.fpcr);
- regs.fpsr = restore_u32 ();
- regs.fpiar = restore_u32 ();
- if (flags & 0x80000000) {
- restore_u32();
- restore_u32();
- }
- write_log (L"FPU: %d\n", currprefs.fpu_model);
- return src;
+uae_u8 *restore_fpu (uae_u8 *src)
+{
+ int i;
+ uae_u32 flags;
+
+ changed_prefs.fpu_model = currprefs.fpu_model = restore_u32 ();
+ flags = restore_u32 ();
+ for (i = 0; i < 8; i++) {
+ uae_u32 w1 = restore_u32 ();
+ uae_u32 w2 = restore_u32 ();
+ uae_u32 w3 = restore_u16 ();
+ regs.fp[i] = to_exten (w1, w2, w3);
+ }
+ regs.fpcr = restore_u32 ();
+ native_set_fpucw (regs.fpcr);
+ regs.fpsr = restore_u32 ();
+ regs.fpiar = restore_u32 ();
+ if (flags & 0x80000000) {
+ restore_u32();
+ restore_u32();
}
+ write_log (L"FPU: %d\n", currprefs.fpu_model);
+ return src;
+}
- uae_u8 *save_fpu (int *len, uae_u8 *dstptr)
- {
- uae_u8 *dstbak,*dst;
- int i;
+uae_u8 *save_fpu (int *len, uae_u8 *dstptr)
+{
+ uae_u8 *dstbak,*dst;
+ int i;
- *len = 0;
- if (currprefs.fpu_model == 0)
- return 0;
- if (dstptr)
- dstbak = dst = dstptr;
- else
- dstbak = dst = malloc (4+4+8*10+4+4+4+4+4);
- save_u32 (currprefs.fpu_model);
- save_u32 (0x80000000);
- for (i = 0; i < 8; i++) {
- uae_u32 w1, w2, w3;
- from_exten (regs.fp[i], &w1, &w2, &w3);
- save_u32 (w1);
- save_u32 (w2);
- save_u16 (w3);
- }
- save_u32 (regs.fpcr);
- save_u32 (regs.fpsr);
- save_u32 (regs.fpiar);
- save_u32 (-1);
- save_u32 (0);
- *len = dst - dstbak;
- return dstbak;
+ *len = 0;
+ if (currprefs.fpu_model == 0)
+ return 0;
+ if (dstptr)
+ dstbak = dst = dstptr;
+ else
+ dstbak = dst = malloc (4+4+8*10+4+4+4+4+4);
+ save_u32 (currprefs.fpu_model);
+ save_u32 (0x80000000);
+ for (i = 0; i < 8; i++) {
+ uae_u32 w1, w2, w3;
+ from_exten (regs.fp[i], &w1, &w2, &w3);
+ save_u32 (w1);
+ save_u32 (w2);
+ save_u16 (w3);
}
+ save_u32 (regs.fpcr);
+ save_u32 (regs.fpsr);
+ save_u32 (regs.fpiar);
+ save_u32 (-1);
+ save_u32 (0);
+ *len = dst - dstbak;
+ return dstbak;
+}
if ((using_prefetch || using_ce) && using_exception_3 && getv != 0 && size != sz_byte) {
int offset = 0;
- if (flags & GF_MOVE)
+ if (flags & GF_MOVE) {
offset = m68k_pc_offset;
- else
+ if (getv == 2)
+ offset += 2;
+ } else {
offset = m68k_pc_offset_last;
+ }
printf ("\tif (%sa & 1) {\n", name);
printf ("\t\texception3 (opcode, m68k_getpc () + %d, %sa);\n",
offset, name);
extern int get_guid_target (uae_u8 *out);
-int vhd_create (const TCHAR *name, uae_u64 size)
-{
- struct hardfiledata hfd;
- struct zfile *zf;
- uae_u8 *b;
- int cyl, cylsec, head, tracksec;
- uae_u32 crc, blocksize, batsize, batentrysize;
- int ret, i;
- time_t tm;
-
- if (size >= (uae_u64)10 * 1024 * 1024 * 1024)
- blocksize = 2 * 1024 * 1024;
- else
- blocksize = 512 * 1024;
- batsize = (size + blocksize - 1) / blocksize;
- batentrysize = batsize;
- batsize *= 4;
- batsize += 511;
- batsize &= ~511;
- ret = 0;
- b = NULL;
- zf = zfile_fopen (name, L"wb", 0);
- if (!zf)
- goto end;
- b = xcalloc (512 + 1024 + batsize + 512, 1);
- if (zfile_fwrite (b, 512 + 1024 + batsize + 512, 1, zf) != 1)
- goto end;
-
- memset (&hfd, 0, sizeof hfd);
- hfd.virtsize = hfd.physsize = size;
- hfd.blocksize = 512;
- strcpy (b, "conectix"); // cookie
- b[0x0b] = 2; // features
- b[0x0d] = 1; // version
- b[0x10 + 6] = 2; // data offset
- // time stamp
- tm = time (NULL) - 946684800;
- b[0x18] = tm >> 24;
- b[0x19] = tm >> 16;
- b[0x1a] = tm >> 8;
- b[0x1b] = tm >> 0;
- strcpy (b + 0x1c, "vpc "); // creator application
- b[0x21] = 5; // creator version
- strcpy (b + 0x24, "Wi2k"); // creator host os
- // original and current size
- b[0x28] = b[0x30] = size >> 56;
- b[0x29] = b[0x31] = size >> 48;
- b[0x2a] = b[0x32] = size >> 40;
- b[0x2b] = b[0x33] = size >> 32;
- b[0x2c] = b[0x34] = size >> 24;
- b[0x2d] = b[0x35] = size >> 16;
- b[0x2e] = b[0x36] = size >> 8;
- b[0x2f] = b[0x37] = size >> 0;
- getchs2 (&hfd, &cyl, &cylsec, &head, &tracksec);
- // cylinders
- b[0x38] = cyl >> 8;
- b[0x39] = cyl;
- // heads
- b[0x3a] = head;
- // sectors per track
- b[0x3b] = tracksec;
- // disk type
- b[0x3c + 3] = VHD_DYNAMIC;
- get_guid_target (b + 0x44);
- crc = vhd_checksum (b, -1);
- b[0x40] = crc >> 24;
- b[0x41] = crc >> 16;
- b[0x42] = crc >> 8;
- b[0x43] = crc >> 0;
-
- // write header
- zfile_fseek (zf, 0, SEEK_SET);
- zfile_fwrite (b, 512, 1, zf);
- // write footer
- zfile_fseek (zf, 512 + 1024 + batsize, SEEK_SET);
- zfile_fwrite (b, 512, 1, zf);
-
- // dynamic disk header
- memset (b, 0, 1024);
- // cookie
- strcpy (b, "cxsparse");
- // data offset
- for (i = 0; i < 8; i++)
- b[0x08 + i] = 0xff;
- // table offset (bat)
- b[0x10 + 6] = 0x06;
- // version
- b[0x19] = 1;
- // max table entries
- b[0x1c] = batentrysize >> 24;
- b[0x1d] = batentrysize >> 16;
- b[0x1e] = batentrysize >> 8;
- b[0x1f] = batentrysize >> 0;
- b[0x20] = blocksize >> 24;
- b[0x21] = blocksize >> 16;
- b[0x22] = blocksize >> 8;
- b[0x23] = blocksize >> 0;
- crc = vhd_checksum (b, -1);
- b[0x24] = crc >> 24;
- b[0x25] = crc >> 16;
- b[0x26] = crc >> 8;
- b[0x27] = crc >> 0;
-
- // write dynamic header
- zfile_fseek (zf, 512, SEEK_SET);
- zfile_fwrite (b, 1024, 1, zf);
-
- // bat
- memset (b, 0, batsize);
- memset (b, 0xff, batentrysize * 4);
- zfile_fwrite (b, batsize, 1, zf);
-
- ret = 1;
-
-end:
- xfree (b);
- zfile_fclose (zf);
- return ret;
-}
-
static uae_u64 vhd_read (struct hardfiledata *hfd, uae_u8 *dataptr, uae_u64 offset, uae_u64 len)
{
uae_u32 bamoffset;
return written;
}
+
+int vhd_create (const TCHAR *name, uae_u64 size, uae_u32 dostype)
+{
+ struct hardfiledata hfd;
+ struct zfile *zf;
+ uae_u8 *b;
+ int cyl, cylsec, head, tracksec;
+ uae_u32 crc, blocksize, batsize, batentrysize;
+ int ret, i;
+ time_t tm;
+
+ if (size >= (uae_u64)10 * 1024 * 1024 * 1024)
+ blocksize = 2 * 1024 * 1024;
+ else
+ blocksize = 512 * 1024;
+ batsize = (size + blocksize - 1) / blocksize;
+ batentrysize = batsize;
+ batsize *= 4;
+ batsize += 511;
+ batsize &= ~511;
+ ret = 0;
+ b = NULL;
+ zf = zfile_fopen (name, L"wb", 0);
+ if (!zf)
+ goto end;
+ b = xcalloc (512 + 1024 + batsize + 512, 1);
+ if (zfile_fwrite (b, 512 + 1024 + batsize + 512, 1, zf) != 1)
+ goto end;
+
+ memset (&hfd, 0, sizeof hfd);
+ hfd.virtsize = hfd.physsize = size;
+ hfd.blocksize = 512;
+ strcpy (b, "conectix"); // cookie
+ b[0x0b] = 2; // features
+ b[0x0d] = 1; // version
+ b[0x10 + 6] = 2; // data offset
+ // time stamp
+ tm = time (NULL) - 946684800;
+ b[0x18] = tm >> 24;
+ b[0x19] = tm >> 16;
+ b[0x1a] = tm >> 8;
+ b[0x1b] = tm >> 0;
+ strcpy (b + 0x1c, "vpc "); // creator application
+ b[0x21] = 5; // creator version
+ strcpy (b + 0x24, "Wi2k"); // creator host os
+ // original and current size
+ b[0x28] = b[0x30] = size >> 56;
+ b[0x29] = b[0x31] = size >> 48;
+ b[0x2a] = b[0x32] = size >> 40;
+ b[0x2b] = b[0x33] = size >> 32;
+ b[0x2c] = b[0x34] = size >> 24;
+ b[0x2d] = b[0x35] = size >> 16;
+ b[0x2e] = b[0x36] = size >> 8;
+ b[0x2f] = b[0x37] = size >> 0;
+ getchs2 (&hfd, &cyl, &cylsec, &head, &tracksec);
+ // cylinders
+ b[0x38] = cyl >> 8;
+ b[0x39] = cyl;
+ // heads
+ b[0x3a] = head;
+ // sectors per track
+ b[0x3b] = tracksec;
+ // disk type
+ b[0x3c + 3] = VHD_DYNAMIC;
+ get_guid_target (b + 0x44);
+ crc = vhd_checksum (b, -1);
+ b[0x40] = crc >> 24;
+ b[0x41] = crc >> 16;
+ b[0x42] = crc >> 8;
+ b[0x43] = crc >> 0;
+
+ // write header
+ zfile_fseek (zf, 0, SEEK_SET);
+ zfile_fwrite (b, 512, 1, zf);
+ // write footer
+ zfile_fseek (zf, 512 + 1024 + batsize, SEEK_SET);
+ zfile_fwrite (b, 512, 1, zf);
+
+ // dynamic disk header
+ memset (b, 0, 1024);
+ // cookie
+ strcpy (b, "cxsparse");
+ // data offset
+ for (i = 0; i < 8; i++)
+ b[0x08 + i] = 0xff;
+ // table offset (bat)
+ b[0x10 + 6] = 0x06;
+ // version
+ b[0x19] = 1;
+ // max table entries
+ b[0x1c] = batentrysize >> 24;
+ b[0x1d] = batentrysize >> 16;
+ b[0x1e] = batentrysize >> 8;
+ b[0x1f] = batentrysize >> 0;
+ b[0x20] = blocksize >> 24;
+ b[0x21] = blocksize >> 16;
+ b[0x22] = blocksize >> 8;
+ b[0x23] = blocksize >> 0;
+ crc = vhd_checksum (b, -1);
+ b[0x24] = crc >> 24;
+ b[0x25] = crc >> 16;
+ b[0x26] = crc >> 8;
+ b[0x27] = crc >> 0;
+
+ // write dynamic header
+ zfile_fseek (zf, 512, SEEK_SET);
+ zfile_fwrite (b, 1024, 1, zf);
+
+ // bat
+ memset (b, 0, batsize);
+ memset (b, 0xff, batentrysize * 4);
+ zfile_fwrite (b, batsize, 1, zf);
+
+ zfile_fclose (zf);
+ zf = NULL;
+
+ if (dostype) {
+ uae_u8 bootblock[512] = { 0 };
+ bootblock[0] = dostype >> 24;
+ bootblock[1] = dostype >> 16;
+ bootblock[2] = dostype >> 8;
+ bootblock[3] = dostype >> 0;
+ if (hdf_open (&hfd, name)) {
+ vhd_write (&hfd, bootblock, 0, 512);
+ hdf_close (&hfd);
+ }
+ }
+
+ ret = 1;
+
+end:
+ xfree (b);
+ zfile_fclose (zf);
+ return ret;
+}
+
static int hdf_read2 (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len)
{
if (hfd->vhd_type == VHD_DYNAMIC)
return v;
}
-STATIC_INLINE void prefetch_common_ce000 (void)
-{
- regs.lastfetch = get_cycles ();
-}
-
#ifdef CPUEMU_20
STATIC_INLINE void checkcycles_ce020 (void)
STATIC_INLINE uae_u32 mem_access_delay_word_read (uaecptr addr)
{
- prefetch_common_ce000 ();
switch (ce_banktype[addr >> 16])
{
case CE_MEMBANK_CHIP:
return wait_cpu_cycle_read (addr, 1);
case CE_MEMBANK_FAST:
case CE_MEMBANK_FAST16BIT:
- do_cycles_ce000 (4);
+ do_cycles_ce000 (2);
+ regs.ipl = regs.ipl_pin;
+ do_cycles_ce000 (2);
break;
}
return get_word (addr);
}
STATIC_INLINE uae_u32 mem_access_delay_wordi_read (uaecptr addr)
{
- prefetch_common_ce000 ();
switch (ce_banktype[addr >> 16])
{
case CE_MEMBANK_CHIP:
return wait_cpu_cycle_read (addr, 1);
case CE_MEMBANK_FAST:
- do_cycles_ce000 (4);
+ do_cycles_ce000 (2);
+ regs.ipl = regs.ipl_pin;
+ do_cycles_ce000 (2);
break;
}
return get_wordi (addr);
STATIC_INLINE uae_u32 mem_access_delay_byte_read (uaecptr addr)
{
- prefetch_common_ce000 ();
switch (ce_banktype[addr >> 16])
{
case CE_MEMBANK_CHIP:
return wait_cpu_cycle_read (addr, 0);
case CE_MEMBANK_FAST:
- do_cycles_ce000 (4);
+ do_cycles_ce000 (2);
+ regs.ipl = regs.ipl_pin;
+ do_cycles_ce000 (2);
break;
}
}
STATIC_INLINE void mem_access_delay_byte_write (uaecptr addr, uae_u32 v)
{
- prefetch_common_ce000 ();
switch (ce_banktype[addr >> 16])
{
case CE_MEMBANK_CHIP:
wait_cpu_cycle_write (addr, 0, v);
return;
case CE_MEMBANK_FAST:
- do_cycles_ce000 (4);
+ do_cycles_ce000 (2);
+ regs.ipl = regs.ipl_pin;
+ do_cycles_ce000 (2);
break;
}
put_byte (addr, v);
}
STATIC_INLINE void mem_access_delay_word_write (uaecptr addr, uae_u32 v)
{
- prefetch_common_ce000 ();
switch (ce_banktype[addr >> 16])
{
case CE_MEMBANK_CHIP:
return;
break;
case CE_MEMBANK_FAST:
- do_cycles_ce000 (4);
+ do_cycles_ce000 (2);
+ regs.ipl = regs.ipl_pin;
+ do_cycles_ce000 (2);
break;
}
put_word (addr, v);
STATIC_INLINE void cycles_do_special (void)
{
- if (pissoff >= 0)
+ if (pissoff > 0)
pissoff = -1;
}
STATIC_INLINE void set_cycles (unsigned long int x)
{
currcycle = x;
+#ifdef EVT_DEBUG
+ if (currcycle & (CYCLE_UNIT - 1))
+ write_log (L"%x\n", currcycle);
+#endif
}
STATIC_INLINE void do_cycles_slow (unsigned long cycles_to_add)
events_schedule ();
}
currcycle += cycles_to_add;
+#ifdef EVT_DEBUG
+ if (currcycle & (CYCLE_UNIT - 1))
+ write_log (L"%x\n", currcycle);
+#endif
}
#define do_cycles do_cycles_slow
int bootpri, const TCHAR *filesys);
-extern int vhd_create (const TCHAR *name, uae_u64 size);
+extern int vhd_create (const TCHAR *name, uae_u64 size, uae_u32);
extern int hdf_init_target (void);
extern int hdf_open_target (struct hardfiledata *hfd, const TCHAR *name);
extern void *cache_alloc (int);
extern void cache_free (void*);
+#endif
-extern int canbang, candirect;
int init_shm (void);
void preinit_shm (void);
-#endif
+extern int canbang, candirect;
#ifdef ADDRESS_SPACE_24BIT
#define MEMORY_BANKS 256
flagtype x;
flagtype stopped;
int intmask;
- int ipl;
+ int ipl, ipl_pin;
uae_u32 vbr, sfc, dfc;
extern void compemu_reset (void);
extern int check_prefs_changed_comp (void);
#else
-#define flush_icache(X) do {} while (0)
+#define flush_icache(uaecptr, int) do {} while (0)
#endif
extern void flush_mmu (uaecptr, int);
#define USE_MATCHSTATE 0
#include "sysconfig.h"
#include "sysdeps.h"
+
+#if defined(JIT)
+
#include "options.h"
#include "events.h"
#include "include/memory.h"
#include "comptbl.h"
#include "compemu.h"
-#if defined(JIT)
#define NATMEM_OFFSETX (uae_u32)NATMEM_OFFSET
do_leave_program ();
}
+#ifdef _WIN64
+extern int DummyException (LPEXCEPTION_POINTERS blah, int n_except)
+{
+ return EXCEPTION_CONTINUE_SEARCH;
+}
+#endif
+
static int real_main2 (int argc, TCHAR **argv)
{
-#if defined (JIT) && (defined (_WIN32) || defined (_WIN64)) && !defined (NO_WIN32_EXCEPTION_HANDLER)
+#if (defined (_WIN32) || defined (_WIN64)) && !defined (NO_WIN32_EXCEPTION_HANDLER)
extern int EvalException (LPEXCEPTION_POINTERS blah, int n_except);
__try
#endif
}
}
-#if defined (JIT) && (defined (_WIN32) || defined (_WIN64)) && !defined (NO_WIN32_EXCEPTION_HANDLER)
+#if (defined (_WIN32) || defined (_WIN64)) && !defined (NO_WIN32_EXCEPTION_HANDLER)
+#ifdef JIT
__except (EvalException (GetExceptionInformation (), GetExceptionCode ()))
+#else
+ __except (DummyException (GetExceptionInformation (), GetExceptionCode ()))
+#endif
{
// EvalException does the good stuff...
}
if (nr == 2) {
write_log (L"%08x %08x %08x\n", currpc, oldpc, regs.mmu_fault_addr);
- if (currpc == 0x0013b5e2)
- activate_debugger ();
+// if (currpc == 0x0013b5e2)
+// activate_debugger ();
// bus error
for (i = 0 ; i < 7 ; i++) {
m68k_areg (regs, 7) -= 4;
void m68k_reset (int hardreset)
{
regs.spcflags = 0;
+ regs.ipl = regs.ipl_pin = 0;
#ifdef SAVESTATE
if (savestate_state == STATE_RESTORE || savestate_state == STATE_REWIND) {
m68k_setpc (regs.pc);
}
-static int interrupt_cycles_active;
-static evt interrupt_cycle;
-
// handle interrupt delay (few cycles)
STATIC_INLINE int time_for_interrupt (void)
{
- if (interrupt_cycles_active) {
- if (regs.lastfetch - interrupt_cycle >= 2 * CYCLE_UNIT) {
- interrupt_cycles_active = 0;
- return 1;
- } else {
- return 0;
+ if (regs.ipl > 0 && (regs.ipl > regs.intmask || regs.ipl == 7)) {
+#if 0
+ if (regs.ipl == 3 && current_hpos () < 11) {
+ write_log (L"%d\n", current_hpos ());
+ activate_debugger ();
}
+#endif
+ return 1;
}
- return 1;
+ return 0;
}
void doint (void)
{
- regs.ipl = intlev ();
if (currprefs.cpu_cycle_exact) {
+ int newipl = intlev ();
+
+ if (newipl == regs.ipl_pin)
+ return;
+ regs.ipl_pin = newipl;
+ if (currprefs.cpu_model != 68000)
+ regs.ipl = regs.ipl_pin;
set_special (SPCFLAG_INT);
- interrupt_cycle = get_cycles ();
- interrupt_cycles_active = 1;
return;
}
if (currprefs.cpu_compatible)
do_copper ();
if (currprefs.cpu_cycle_exact) {
- if (regs.ipl > 0 && regs.ipl > regs.intmask) {
- if (time_for_interrupt ())
- do_interrupt (regs.ipl);
+ regs.ipl = regs.ipl_pin;
+ if (time_for_interrupt ()) {
+ unset_special (SPCFLAG_INT | SPCFLAG_DOINT);
+ do_interrupt (regs.ipl);
}
} else {
if (regs.spcflags & (SPCFLAG_INT | SPCFLAG_DOINT)) {
do_trace ();
if (currprefs.cpu_cycle_exact) {
- if (regs.ipl > 0 && (regs.ipl > regs.intmask || regs.ipl == 7)) {
- if (time_for_interrupt ())
- do_interrupt (regs.ipl);
+ if (time_for_interrupt ()) {
+ unset_special (SPCFLAG_INT | SPCFLAG_DOINT);
+ do_interrupt (regs.ipl);
}
} else {
if (regs.spcflags & SPCFLAG_INT) {
for (;;) {
uae_u32 opcode = r->ir;
-
(*cpufunctbl[opcode])(opcode);
if (r->spcflags) {
if (do_specialties (0))
/* Whenever we return from that, we should check spcflags */
if (uae_int_requested) {
intreq |= 0x0008;
- intreqr = intreq;
set_special (SPCFLAG_INT);
}
if (regs.spcflags) {
{
__try {
return sock_thread2 (p);
- } __except(WIN32_ExceptionFilter(GetExceptionInformation(), GetExceptionCode())) {
+ } __except(WIN32_ExceptionFilter (GetExceptionInformation (), GetExceptionCode ())) {
}
return 0;
}
}
break;
}
- oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
+ oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_USERDATA);
return CallWindowProc(oldproc, hWnd, message, wParam, lParam);
}
}
break;
}
- oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
+ oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_USERDATA);
return CallWindowProc(oldproc, hWnd, message, wParam, lParam);
}
DWORD msgpos = GetMessagePos();
HWND hwnd = GetDlgItem(hDlg, IDC_DBG_MEMINPUT2);
SendMessage(hwnd, EM_LIMITTEXT, 8, 0);
- oldproc = (WNDPROC)SetWindowLongPtr(hwnd, GWL_WNDPROC, (LONG_PTR)MemInputProc);
- SetWindowLongPtr(hwnd, GWL_USERDATA, (LONG_PTR)oldproc);
+ oldproc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)MemInputProc);
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)oldproc);
GetWindowRect(hDlg, &r);
r.right -= r.left;
r.bottom -= r.top;
ListboxEndEdit(hparent, TRUE);
break;
}
- oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
+ oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_USERDATA);
return CallWindowProc(oldproc, hWnd, message, wParam, lParam);
}
SendMessage(hedit, EM_LIMITTEXT, length, 0);
MoveWindow(hedit, ri.left, ri.top, ri.right - ri.left, ri.bottom - ri.top, FALSE);
ShowWindow(hedit, SW_SHOWNORMAL);
- oldproc = (WNDPROC)SetWindowLongPtr(hedit, GWL_WNDPROC, (LONG_PTR)ListboxEditProc);
- SetWindowLongPtr(hedit, GWL_USERDATA, (LONG_PTR)oldproc);
+ oldproc = (WNDPROC)SetWindowLongPtr(hedit, GWLP_WNDPROC, (LONG_PTR)ListboxEditProc);
+ SetWindowLongPtr(hedit, GWLP_USERDATA, (LONG_PTR)oldproc);
hfont = (HFONT)SendMessage(hwnd, WM_GETFONT, 0, 0);
SendMessage(hedit, WM_SETFONT, (WPARAM)hfont, (LPARAM)TRUE);
memset(txt + offset + length, 0, MAX_LINEWIDTH + 1 - offset - length);
}
break;
}
- oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
+ oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_USERDATA);
return CallWindowProc(oldproc, hWnd, message, wParam, lParam);
}
}
break;
}
- oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
+ oldproc = (WNDPROC)GetWindowLongPtr(hWnd, GWLP_USERDATA);
return CallWindowProc(oldproc, hWnd, message, wParam, lParam);
}
break;
}
if (newproc) {
- oldproc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)newproc);
- SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG_PTR)oldproc);
+ oldproc = (WNDPROC)SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)newproc);
+ SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)oldproc);
}
EnableWindow(hWnd, enable);
return TRUE;
void *open_tablet (HWND hwnd)
{
+#ifndef _WIN64
LOGCONTEXT lc;
AXIS tx = { 0 }, ty = { 0 }, tz = { 0 };
AXIS pres = { 0 };
tablet_x = -1;
inputdevice_tablet_info (xmax, ymax, zmax, axmax, aymax, azmax, xres, yres);
return WTOpen (hwnd, &lc, TRUE);
+#else
+ return 0;
+#endif
}
int close_tablet (void *ctx)
{
+#ifndef _WIN64
if (ctx != NULL)
WTClose (ctx);
ctx = NULL;
if (!tablet)
return 0;
return 1;
+#else
+ return 0;
+#endif
}
int is_tablet (void)
static int initialize_tablet (void)
{
+#ifndef _WIN64
HANDLE h;
TCHAR name[MAX_DPATH];
struct tagAXIS ori[3];
tabletname = my_strdup (name);
tablet = TRUE;
return 1;
+#else
+ return 0;
+#endif
}
static int initialize_catweasel (void)
#include "statusline.h"
#include "hq2x_d3d.h"
#include "zfile.h"
+extern int D3DEX, d3ddebug;
}
#include <d3d9.h>
#include "direct3d.h"
-static int D3DEX = 1;
-
static TCHAR *D3DHEAD = L"-";
static int tex_pow2, tex_square, tex_dynamic;
static int psEnabled, psActive, psPreProcess;
static HWND d3dhwnd;
static int devicelost;
-static D3DXMATRIX m_matProj;
-static D3DXMATRIX m_matWorld;
-static D3DXMATRIX m_matView;
+static D3DXMATRIX m_matProj, m_matProj2;
+static D3DXMATRIX m_matWorld, m_matWorld2;
+static D3DXMATRIX m_matView, m_matView2;
static D3DXMATRIX m_matPreProj;
static D3DXMATRIX m_matPreView;
static D3DXMATRIX m_matPreWorld;
D3DXVECTOR2 texcoord; // texture coords
};
+static int ddraw_fs;
+static LPDIRECTDRAW7 ddraw;
+
+static void ddraw_fs_hack_free (void)
+{
+ HRESULT hr;
+
+ if (!ddraw_fs)
+ return;
+ if (ddraw_fs == 2)
+ IDirectDraw7_RestoreDisplayMode (ddraw);
+ hr = IDirectDraw7_SetCooperativeLevel (ddraw, d3dhwnd, DDSCL_NORMAL);
+ if (FAILED (hr)) {
+ write_log (L"IDirectDraw7_SetCooperativeLevel CLEAR: %s\n", DXError (hr));
+ }
+ IDirectDraw7_Release (ddraw);
+ ddraw = NULL;
+ ddraw_fs = 0;
+
+}
+
+static int ddraw_fs_hack_init (void)
+{
+ HRESULT hr;
+ struct MultiDisplay *md;
+
+ ddraw_fs_hack_free ();
+ md = getdisplay (&currprefs);
+ if (!md)
+ return 0;
+ hr = DirectDrawCreateEx (md->primary ? NULL : &md->guid, (LPVOID*)&ddraw, IID_IDirectDraw7, NULL);
+ if (FAILED (hr)) {
+ write_log (L"DirectDrawCreateEx failed, %s\n", DXError (hr));
+ return 0;
+ }
+ ddraw_fs = 1;
+ hr = IDirectDraw7_SetCooperativeLevel (ddraw, d3dhwnd, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+ if (FAILED (hr)) {
+ write_log (L"IDirectDraw7_SetCooperativeLevel SET: %s\n", DXError (hr));
+ ddraw_fs_hack_free ();
+ return 0;
+ }
+ hr = IDirectDraw7_SetDisplayMode (ddraw, dpp.BackBufferWidth, dpp.BackBufferHeight, t_depth, dpp.FullScreen_RefreshRateInHz, 0);
+ if (FAILED (hr)) {
+ write_log (L"IDirectDraw7_SetDisplayMode: %s\n", DXError (hr));
+ ddraw_fs_hack_free ();
+ return 0;
+ }
+ ddraw_fs = 2;
+ return 1;
+}
+
static TCHAR *D3D_ErrorText (HRESULT error)
{
return L"";
static int createmasktexture (TCHAR *filename)
{
- int ww = required_sl_texture_w;
- int hh = required_sl_texture_h;
+ int ww = tin_w;
+ int hh = tin_h;
struct zfile *zf;
int size;
uae_u8 *buf;
LPDIRECT3DTEXTURE9 tx;
HRESULT hr;
D3DLOCKED_RECT lock, slock;
+ TCHAR tmp[MAX_DPATH];
tx = NULL;
- zf = zfile_fopen (filename, L"rb", ZFD_NORMAL);
+ _stprintf (tmp, L"%s%soverlays\\%s", start_path_exe, WIN32_PLUGINDIR, filename);
+ zf = zfile_fopen (tmp, L"rb", ZFD_NORMAL);
if (!zf) {
- write_log (L"%s: couldn't open mask '%s'\n", filename);
- return 0;
+ zf = zfile_fopen (filename, L"rb", ZFD_NORMAL);
+ if (!zf) {
+ write_log (L"%s: couldn't open mask '%s'\n", D3DHEAD, filename);
+ return 0;
+ }
}
size = zfile_size (zf);
buf = (uae_u8*)xmalloc (size);
write_log (L"%s: temp mask texture GetLevelDesc() failed: %s\n", D3DHEAD, D3D_ErrorString (hr));
goto end;
}
- masktexture = createtext (&ww, &hh, D3DFMT_A8R8G8B8);
+ masktexture = createtext (&ww, &hh, D3DFMT_X8R8G8B8);
if (FAILED (hr)) {
write_log (L"%s: mask texture creation failed: %s\n", D3DHEAD, D3D_ErrorString (hr));
goto end;
if (SUCCEEDED (hr = tx->LockRect (0, &slock, NULL, 0))) {
int x, y, sx, sy;
uae_u32 *sptr, *ptr;
- sx = 0;
sy = 0;
for (y = 0; y < maskdesc.Height; y++) {
+ sx = 0;
for (x = 0; x < maskdesc.Width; x++) {
+ uae_u32 v;
sptr = (uae_u32*)((uae_u8*)slock.pBits + sy * slock.Pitch + sx * 4);
ptr = (uae_u32*)((uae_u8*)lock.pBits + y * lock.Pitch + x * 4);
- *ptr = *sptr;
+ v = *sptr;
+// v &= 0x00FFFFFF;
+// v |= 0x80000000;
+ *ptr = v;
sx++;
if (sx >= tmpdesc.Width)
- sx -= tmpdesc.Width;
+ sx = 0;
}
sy++;
if (sy >= tmpdesc.Height)
- sy -= tmpdesc.Height;
+ sy = 0;
}
tx->UnlockRect (0);
}
vertices[3].position.x = 0.5f; vertices[3].position.y = 0.5f;
vertices[3].diffuse = 0xFFFFFFFF;
vertices[3].texcoord.x = sizex; vertices[3].texcoord.y = 0.0f;
+ // fullscreen vertices
+ vertices[4].position.x = -0.5f; vertices[0].position.y = -0.5f;
+ vertices[4].diffuse = 0xFFFFFFFF;
+ vertices[4].texcoord.x = 0.0f; vertices[0].texcoord.y = 1.0f;
+ vertices[5].position.x = -0.5f; vertices[1].position.y = 0.5f;
+ vertices[5].diffuse = 0xFFFFFFFF;
+ vertices[5].texcoord.x = 0.0f; vertices[1].texcoord.y = 0.0f;
+ vertices[6].position.x = 0.5f; vertices[2].position.y = -0.5f;
+ vertices[6].diffuse = 0xFFFFFFFF;
+ vertices[6].texcoord.x = 1.0f; vertices[2].texcoord.y = 1.0f;
+ vertices[7].position.x = 0.5f; vertices[3].position.y = 0.5f;
+ vertices[7].diffuse = 0xFFFFFFFF;
+ vertices[7].texcoord.x = 1.0f; vertices[3].texcoord.y = 0.0f;
// Additional vertices required for some PS effects
if (psPreProcess) {
- vertices[4].position.x = 0.0f; vertices[4].position.y = 0.0f;
- vertices[4].diffuse = 0xFFFFFF00;
- vertices[4].texcoord.x = 0.0f; vertices[4].texcoord.y = 1.0f;
- vertices[5].position.x = 0.0f; vertices[5].position.y = 1.0f;
- vertices[5].diffuse = 0xFFFFFF00;
- vertices[5].texcoord.x = 0.0f; vertices[5].texcoord.y = 0.0f;
- vertices[6].position.x = 1.0f; vertices[6].position.y = 0.0f;
- vertices[6].diffuse = 0xFFFFFF00;
- vertices[6].texcoord.x = 1.0f; vertices[6].texcoord.y = 1.0f;
- vertices[7].position.x = 1.0f; vertices[7].position.y = 1.0f;
- vertices[7].diffuse = 0xFFFFFF00;
- vertices[7].texcoord.x = 1.0f; vertices[7].texcoord.y = 0.0f;
+ vertices[8].position.x = 0.0f; vertices[4].position.y = 0.0f;
+ vertices[8].diffuse = 0xFFFFFF00;
+ vertices[8].texcoord.x = 0.0f; vertices[4].texcoord.y = 1.0f;
+ vertices[9].position.x = 0.0f; vertices[5].position.y = 1.0f;
+ vertices[9].diffuse = 0xFFFFFF00;
+ vertices[9].texcoord.x = 0.0f; vertices[5].texcoord.y = 0.0f;
+ vertices[10].position.x = 1.0f; vertices[6].position.y = 0.0f;
+ vertices[10].diffuse = 0xFFFFFF00;
+ vertices[10].texcoord.x = 1.0f; vertices[6].texcoord.y = 1.0f;
+ vertices[11].position.x = 1.0f; vertices[7].position.y = 1.0f;
+ vertices[11].diffuse = 0xFFFFFF00;
+ vertices[11].texcoord.x = 1.0f; vertices[7].texcoord.y = 0.0f;
}
hr = IDirect3DVertexBuffer9_Unlock (vertexBuffer);
}
{
HRESULT hr;
+ // Disable Shaders
+ hr = IDirect3DDevice9_SetVertexShader (d3ddev, 0);
+ hr = IDirect3DDevice9_SetPixelShader (d3ddev, 0);
hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_PROJECTION, &m_matProj);
hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_VIEW, &m_matView);
hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_WORLD, &m_matWorld);
}
-static void settransform (void)
+static void settransformfs (void)
{
HRESULT hr;
+ // Disable Shaders
+ hr = IDirect3DDevice9_SetVertexShader (d3ddev, 0);
+ hr = IDirect3DDevice9_SetPixelShader (d3ddev, 0);
+ hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_PROJECTION, &m_matProj2);
+ hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_VIEW, &m_matView2);
+ hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_WORLD, &m_matWorld2);
+}
+
+static void settransform (void)
+{
if (!psActive) {
- // Disable Shaders
- hr = IDirect3DDevice9_SetVertexShader (d3ddev, 0);
- hr = IDirect3DDevice9_SetPixelShader (d3ddev, 0);
- hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_PROJECTION, &m_matProj);
- hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_VIEW, &m_matView);
- hr = IDirect3DDevice9_SetTransform (d3ddev, D3DTS_WORLD, &m_matWorld);
+ settransformsl ();
} else {
if (psPreProcess) {
// Projection is (0,0,0) -> (1,1,1)
static void invalidatedeviceobjects (void)
{
if (texture) {
- IDirect3DTexture9_Release (texture);
+ texture->Release ();
texture = NULL;
}
if (sprite) {
sprite = NULL;
}
if (ledtexture) {
- IDirect3DTexture9_Release (ledtexture);
+ ledtexture->Release ();
ledtexture = NULL;
}
if (sltexture) {
- IDirect3DTexture9_Release (sltexture);
+ sltexture->Release ();
sltexture = NULL;
}
if (masktexture) {
- IDirect3DTexture9_Release (masktexture);
+ masktexture->Release ();
masktexture = NULL;
}
if (lpWorkTexture1) {
- IDirect3DTexture9_Release (lpWorkTexture1);
+ lpWorkTexture1->Release ();
lpWorkTexture1 = NULL;
}
if (lpWorkTexture2) {
- IDirect3DTexture9_Release (lpWorkTexture2);
+ lpWorkTexture2->Release ();
lpWorkTexture2 = NULL;
}
if (lpHq2xLookupTexture) {
- IDirect3DVolumeTexture9_Release (lpHq2xLookupTexture);
+ lpHq2xLookupTexture->Release ();
lpHq2xLookupTexture = NULL;
}
if (pEffect) {
if (currprefs.gfx_filtermask[0])
createmasktexture (currprefs.gfx_filtermask);
- vbsize = sizeof (struct TLVERTEX) * 4;
+ vbsize = sizeof (struct TLVERTEX) * 8;
if (psPreProcess)
- vbsize = sizeof (struct TLVERTEX) * 8;
+ vbsize = sizeof (struct TLVERTEX) * 12;
hr = d3ddev->SetFVF (D3DFVF_TLVERTEX);
if (FAILED (d3ddev->CreateVertexBuffer (vbsize, D3DUSAGE_WRITEONLY,
D3DFVF_TLVERTEX, D3DPOOL_DEFAULT, &vertexBuffer, NULL))) {
return 1;
}
-void D3D_free (void)
+static void D3D_free2 (void)
{
D3D_clear ();
invalidatedeviceobjects ();
if (d3ddev) {
- IDirect3DDevice9_Release (d3ddev);
+ d3ddev->Release ();
d3ddev = NULL;
}
if (d3d) {
- IDirect3D9_Release (d3d);
+ d3d->Release ();
d3d = NULL;
}
d3d_enabled = 0;
changed_prefs.leds_on_screen = currprefs.leds_on_screen = currprefs.leds_on_screen & ~STATUSLINE_TARGET;
}
+void D3D_free (void)
+{
+ D3D_free2 ();
+ ddraw_fs_hack_free ();
+}
+
const TCHAR *D3D_init (HWND ahwnd, int w_w, int w_h, int t_w, int t_h, int depth)
{
HRESULT ret, hr;
typedef HRESULT (WINAPI *LPDIRECT3DCREATE9EX)(UINT, IDirect3D9Ex**);
LPDIRECT3DCREATE9EX d3dexp = NULL;
- D3D_free ();
+ D3D_free2 ();
D3D_canshaders ();
d3d_enabled = 0;
if (!currprefs.gfx_api) {
dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
dpp.BackBufferWidth = w_w;
dpp.BackBufferHeight = w_h;
- dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
+ dpp.PresentationInterval = dpp.Windowed ? D3DPRESENT_INTERVAL_IMMEDIATE : D3DPRESENT_INTERVAL_DEFAULT;
modeex.Width = w_w;
modeex.Height = w_h;
}
d3dhwnd = ahwnd;
+ t_depth = depth;
// Check if hardware vertex processing is available
if(d3dCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
}
if (FAILED (ret)) {
_stprintf (errmsg, L"%s failed, %s\n", d3d_ex && D3DEX ? L"CreateDeviceEx" : L"CreateDevice", D3D_ErrorString (ret));
+ if (ret == D3DERR_INVALIDCALL && dpp.Windowed == 0 && dpp.FullScreen_RefreshRateInHz && !ddraw_fs) {
+ write_log (L"%s\n", errmsg);
+ write_log (L"%s: Retrying fullscreen with DirectDraw\n", D3DHEAD);
+ if (ddraw_fs_hack_init ()) {
+ const TCHAR *err2 = D3D_init (ahwnd, w_w, w_h, t_w, t_h, depth);
+ if (err2)
+ ddraw_fs_hack_free ();
+ return err2;
+ }
+ }
if (d3d_ex && D3DEX) {
write_log (L"%s\n", errmsg);
D3DEX = 0;
dpp.Windowed ? 0 : dpp.FullScreen_RefreshRateInHz, currprefs.gfx_avsync ? L" VSYNC" : L""
);
+ if ((d3dCaps.PixelShaderVersion < 3 || d3dCaps.VertexShaderVersion < 3 || tex_pow2 || tex_square || !tex_dynamic || max_texture_w < 4096 || max_texture_h < 4096) && D3DEX) {
+ D3DEX = 0;
+ write_log (L"Disabling D3D9Ex\n");
+ return D3D_init (ahwnd, w_w, w_h, t_w, t_h, depth);
+ }
+
+
mult = S2X_getmult ();
t_w *= mult;
t_h *= mult;
changed_prefs.gfx_filter_scanlines = currprefs.gfx_filter_scanlines = 0;
}
- t_depth = depth;
switch (depth)
{
case 32:
write_log (L"%s: LED D3DXSprite failed: %s\n", D3D_ErrorString (hr), D3DHEAD);
}
+ MatrixOrthoOffCenterLH (&m_matProj2, 0, window_w, 0, window_h, 0.0f, 1.0f);
+ MatrixTranslation (&m_matView2, -0.5f + window_w / 2, 0.5f + window_h / 2, 0);
+ MatrixScaling (&m_matWorld2, window_w, window_h, 1.0f);
+
createscanlines (1);
d3d_enabled = 1;
return 0;
if (!isd3d ())
return;
for (i = 0; i < 2; i++) {
- hr = d3ddev->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0, 0);
+ hr = d3ddev->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, d3ddebug ? 0x80 : 0x00), 0, 0);
hr = d3ddev->Present (NULL, NULL, NULL, NULL);
}
}
if (!isd3d ())
return;
- if (clear) {
- setupscenescaled ();
- }
setupscenecoords ();
settransform ();
if (needclear || clear) {
- hr = d3ddev->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0, 0);
+ hr = d3ddev->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, d3ddebug ? 0x80 : 0x00, 0), 0, 0);
if (FAILED (hr))
write_log (L"%s: Clear() failed: %s\n", D3DHEAD, D3D_ErrorString (hr));
needclear = 0;
write_log (L"%s: BeginScene: %s\n", D3DHEAD, D3D_ErrorString (hr));
return;
}
+ setupscenescaled ();
if (window_h > tin_h || window_w > tin_w) {
D3DRECT r[4];
int num;
r[num].y2 = window_h;
num++;
}
- d3ddev->Clear (num, r, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0, 0);
+ d3ddev->Clear (num, r, D3DCLEAR_TARGET, D3DCOLOR_XRGB(d3ddebug ? 0x80 : 0x00, 0, 0), 0, 0);
}
if (psActive) {
UINT uPasses, uPass;
for (uPass = 0; uPass < uPasses; uPass++) {
if (!psEffect_BeginPass (uPass))
return;
- d3ddev->DrawPrimitive (D3DPT_TRIANGLESTRIP, 4, 2);
+ d3ddev->DrawPrimitive (D3DPT_TRIANGLESTRIP, 8, 2);
psEffect_EndPass ();
}
if (!psEffect_End ())
} else {
- hr = d3ddev->SetTexture (0, (IDirect3DBaseTexture9*)texture);
+ if (masktexture) {
+ hr = d3ddev->SetTexture (0, masktexture);
+ hr = d3ddev->SetTextureStageState (0, D3DTSS_TEXCOORDINDEX, 0);
+ hr = d3ddev->SetTextureStageState (0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
+ hr = d3ddev->SetTextureStageState (0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ hr = d3ddev->SetTextureStageState (0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
+
+ hr = d3ddev->SetTexture (1, texture);
+ hr = d3ddev->SetTextureStageState (1, D3DTSS_TEXCOORDINDEX, 0);
+ hr = d3ddev->SetTextureStageState (1, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ hr = d3ddev->SetTextureStageState (1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+ hr = d3ddev->SetTextureStageState (1, D3DTSS_COLORARG2, D3DTA_CURRENT);
+ } else {
+ hr = d3ddev->SetTexture (0, texture);
+ }
hr = d3ddev->DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, 2);
-
}
- if (sprite && (sltexture || ledtexture || masktexture)) {
+ if (sprite && (sltexture || ledtexture)) {
D3DXVECTOR3 v;
sprite->Begin (D3DXSPRITE_ALPHABLEND);
if (sltexture) {
v.x = v.y = v.z = 0;
sprite->Draw (sltexture, NULL, NULL, &v, 0xffffffff);
}
- if (masktexture) {
- v.x = v.y = v.z = 0;
- sprite->Draw (masktexture, NULL, NULL, &v, 0xffffffff);
- }
if (ledtexture) {
v.x = 0;
v.y = window_h - TD_TOTAL_HEIGHT;
}
hr = d3ddev->EndScene ();
+ if (FAILED (hr))
+ write_log (L"%s: EndScene() %s\n", D3DHEAD, D3D_ErrorString (hr));
hr = d3ddev->Present (NULL, NULL, NULL, NULL);
- if (hr == D3DERR_DEVICELOST) {
- write_log (L"%s: DEVICELOST\n", D3DHEAD);
- devicelost = 1;
+ if (FAILED (hr)) {
+ write_log (L"%s: Present() %s\n", D3DHEAD, D3D_ErrorString (hr));
+ if (hr == D3DERR_DEVICELOST) {
+ devicelost = 1;
+ }
}
-
}
static void D3D_render2 (int clear)
if (!isd3d ())
return NULL;
- if (currprefs.turbo_emulation && currprefs.gfx_avsync && frameskip-- > 0)
+ if (currprefs.turbo_emulation && isfullscreen () > 0 && frameskip-- > 0)
return NULL;
frameskip = 50;
locked.Pitch = 0;
hr = texture->LockRect (0, &locked, NULL, 0);
if (FAILED (hr)) {
- if (hr != D3DERR_DRIVERINTERNALERROR) {
- write_log (L"%s: LockRect failed: %s\n", D3DHEAD, D3D_ErrorString (hr));
- D3D_unlocktexture ();
- return NULL;
- }
+ write_log (L"%s: LockRect failed: %s\n", D3DHEAD, D3D_ErrorString (hr));
+ return NULL;
}
if (locked.pBits == NULL || locked.Pitch == 0) {
write_log (L"%s: LockRect returned NULL texture\n", D3DHEAD);
#define BARRIER 32
#define MAXZ3MEM 0x7F000000
+#define MAXZ3MEM64 0xF0000000
static struct shmid_ds shmids[MAX_SHMID];
static int memwatchok = 0;
else if (maxmem > 0)
size64 = maxmem * 1024 * 1024;
if (os_64bit) {
- if (size64 > MAXZ3MEM)
- size64 = MAXZ3MEM;
+ if (size64 > MAXZ3MEM64)
+ size64 = MAXZ3MEM64;
} else {
if (size64 > MAXZ3MEM)
size64 = MAXZ3MEM;
#include "uaeipc.h"
#include "xwin.h"
-#include <Ghostscript/errors.h>
#include <Ghostscript/iapi.h>
+#include <Ghostscript/ierrors.h>
#define MIN_PRTBYTES 10
static int psmode = 0;
static HMODULE gsdll;
-static gs_main_instance *gsinstance;
+static void *gsinstance;
static int gs_exitcode;
typedef int (CALLBACK* GSAPI_REVISION)(gsapi_revision_t *pr, int len);
static GSAPI_REVISION ptr_gsapi_revision;
-typedef int (CALLBACK* GSAPI_NEW_INSTANCE)(gs_main_instance **pinstance, void *caller_handle);
+typedef int (CALLBACK* GSAPI_NEW_INSTANCE)(void **pinstance, void *caller_handle);
static GSAPI_NEW_INSTANCE ptr_gsapi_new_instance;
-typedef void (CALLBACK* GSAPI_DELETE_INSTANCE)(gs_main_instance *instance);
+typedef void (CALLBACK* GSAPI_DELETE_INSTANCE)(void *instance);
static GSAPI_DELETE_INSTANCE ptr_gsapi_delete_instance;
-typedef int (CALLBACK* GSAPI_SET_STDIO)(gs_main_instance *instance,
+typedef int (CALLBACK* GSAPI_SET_STDIO)(void *instance,
int (GSDLLCALLPTR stdin_fn)(void *caller_handle, char *buf, int len),
int (GSDLLCALLPTR stdout_fn)(void *caller_handle, const char *str, int len),
int (GSDLLCALLPTR stderr_fn)(void *caller_handle, const char *str, int len));
static GSAPI_SET_STDIO ptr_gsapi_set_stdio;
-typedef int (CALLBACK* GSAPI_INIT_WITH_ARGS)(gs_main_instance *instance, int argc, char **argv);
+typedef int (CALLBACK* GSAPI_INIT_WITH_ARGS)(void *instance, int argc, char **argv);
static GSAPI_INIT_WITH_ARGS ptr_gsapi_init_with_args;
-typedef int (CALLBACK* GSAPI_EXIT)(gs_main_instance *instance);
+typedef int (CALLBACK* GSAPI_EXIT)(void *instance);
static GSAPI_EXIT ptr_gsapi_exit;
-typedef (CALLBACK* GSAPI_RUN_STRING_BEGIN)(gs_main_instance *instance, int user_errors, int *pexit_code);
+typedef (CALLBACK* GSAPI_RUN_STRING_BEGIN)(void *instance, int user_errors, int *pexit_code);
static GSAPI_RUN_STRING_BEGIN ptr_gsapi_run_string_begin;
-typedef (CALLBACK* GSAPI_RUN_STRING_CONTINUE)(gs_main_instance *instance, const char *str, unsigned int length, int user_errors, int *pexit_code);
+typedef (CALLBACK* GSAPI_RUN_STRING_CONTINUE)(void *instance, const char *str, unsigned int length, int user_errors, int *pexit_code);
static GSAPI_RUN_STRING_CONTINUE ptr_gsapi_run_string_continue;
-typedef (CALLBACK* GSAPI_RUN_STRING_END)(gs_main_instance *instance, int user_errors, int *pexit_code);
+typedef (CALLBACK* GSAPI_RUN_STRING_END)(void *instance, int user_errors, int *pexit_code);
static GSAPI_RUN_STRING_END ptr_gsapi_run_string_end;
static uae_u8 **psbuffer;
<Platform
Name="Win32"
/>
+ <Platform
+ Name="x64"
+ />
</Platforms>
<ToolFiles>
</ToolFiles>
Name="VCPostBuildEventTool"
/>
</Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="..\..\prowizard\include;..\..\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="false"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ CallingConvention="2"
+ CompileAs="1"
+ DisableSpecificWarnings="4996"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="c:\dev\lib\x64\prowizard.lib"
+ ModuleDefinitionFile=""
+ ExportNamedFunctions="prowizard_search"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
</Configurations>
<References>
</References>
#define IDC_MINIMIZED_PRI 1636
#define IDC_FILTERAUTOSCALE 1636
#define IDC_VOLUME_BOOTPRI_TEXT 1637
+#define IDC_FILTERAUTOSCALE2 1637
+#define IDC_FILTEROVERLAY 1637
#define IDC_VOLUME_BOOTPRI 1638
#define IDC_KBLED1 1639
#define IDC_KBLED2 1640
COMBOBOX IDC_FILTERXTRA,105,151,138,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
COMBOBOX IDC_FILTERASPECT,14,151,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
CONTROL "Keep aspect ratio",IDC_FILTERKEEPASPECT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_GROUP | WS_TABSTOP,14,168,85,10\r
- RTEXT "Automatic scaling:",-1,9,38,79,10,SS_CENTERIMAGE\r
COMBOBOX IDC_FILTERAUTOSCALE,132,36,83,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
COMBOBOX IDC_FILTERASPECT2,14,180,73,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
CONTROL "Direct3D",IDC_FILTERD3D,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,223,38,63,10\r
+ COMBOBOX IDC_FILTEROVERLAY,20,36,103,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP\r
END\r
\r
IDD_HARDDRIVE DIALOGEX 0, 0, 380, 76\r
IDS_TABLET_BOTH_CURSORS "Show both cursors"\r
IDS_TABLET_NATIVE_CURSOR "Show native cursor only"\r
IDS_TABLET_HOST_CURSOR "Show host cursor only"\r
- IDS_AUTOSCALE_DISABLED "Disabled"\r
+ IDS_AUTOSCALE_DISABLED "No Autoscaling"\r
IDS_AUTOSCALE_SCALING "Automatic scaling"\r
IDS_AUTOSCALE_RESIZE "Automatic resize"\r
IDS_PRINTER_ASCII "ASCII-Only"\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>
#ifdef WIN64
#undef X86_MSVC_ASSEMBLY
+#undef JIT
#define X64_MSVC_ASSEMBLY
#define CPU_64_BIT
#define SIZEOF_VOID_P 8
int qpcdivisor = 0;
int cpu_mmx = 1;
static int userdtsc = 0;
+int D3DEX = 1, d3ddebug = 0;
HINSTANCE hInst = NULL;
HMODULE hUIDLL = NULL;
}
}
-
+#ifndef _WIN64
case WT_PROXIMITY:
{
send_tablet_proximity (LOWORD (lParam) ? 1 : 0);
}
return 0;
}
-
+#endif
default:
break;
}
logging_open (first ? 0 : 1, 0);
logging_started = 1;
first++;
+#ifdef _WIN64
+ wow64 = 1;
+#else
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress (GetModuleHandle (L"kernel32"), "IsWow64Process");
if (fnIsWow64Process)
fnIsWow64Process (GetCurrentProcess (), &wow64);
+#endif
write_log (L"%s (%d.%d %s%s[%d])", VersionStr,
osVersion.dwMajorVersion, osVersion.dwMinorVersion, osVersion.szCSDVersion,
_tcslen (osVersion.szCSDVersion) > 0 ? L" " : L"", os_winnt_admin);
- write_log (L" %d-bit %X.%X %d", wow64 ? 64 : 32,
+ write_log (L" %d-bit %X.%X %d",
+ wow64 ? 64 : 32,
SystemInfo.wProcessorLevel, SystemInfo.wProcessorRevision,
SystemInfo.dwNumberOfProcessors);
write_log (L"\n(c) 1995-2001 Bernd Schmidt - Core UAE concept and implementation."
if (_tcslen (WINUAEBETA) > 0) {
_stprintf (BetaStr, L" (%sBeta %s, %d.%02d.%02d)", WINUAEPUBLICBETA > 0 ? L"Public " : L"", WINUAEBETA,
GETBDY(WINUAEDATE), GETBDM(WINUAEDATE), GETBDD(WINUAEDATE));
+#ifdef _WIN64
+ _tcscat (BetaStr, L" 64-bit");
+#endif
_stprintf (s, L"WinUAE %d.%d.%d%s%s",
UAEMAJOR, UAEMINOR, UAESUBREV, WINUAEREV, BetaStr);
} else {
_stprintf (s, L"WinUAE %d.%d.%d%s (%d.%02d.%02d)",
UAEMAJOR, UAEMINOR, UAESUBREV, WINUAEREV, GETBDY(WINUAEDATE), GETBDM(WINUAEDATE), GETBDD(WINUAEDATE));
+#ifdef _WIN64
+ _tcscat (s, L" 64-bit");
+#endif
}
if (_tcslen (WINUAEEXTRA) > 0) {
_tcscat (s, L" ");
ddsoftwarecolorkey = 1;
return 1;
}
+ if (!_tcscmp (arg, L"-nod3d9ex")) {
+ D3DEX = 0;
+ return 1;
+ }
+ if (!_tcscmp (arg, L"-d3ddebug")) {
+ d3ddebug = 1;
+ return 1;
+ }
if (!_tcscmp (arg, L"-logflush")) {
extern int always_flush_log;
always_flush_log = 1;
return ok;
}
-#if defined(WIN64)
+#if defined(_WIN64)
-static LONG WINAPI WIN32_ExceptionFilter( struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec)
+LONG WINAPI WIN32_ExceptionFilter (struct _EXCEPTION_POINTERS * pExceptionPointers, DWORD ec)
{
write_log (L"EVALEXCEPTION!\n");
return EXCEPTION_EXECUTE_HANDLER;
switch(round)
{
case 0:
- p = strstr (newname,"32");
+ p = _tcsstr (newname, L"32");
if (p) {
p[0] = '6';
p[1] = '4';
}
break;
case 1:
- p = strchr (newname,'.');
- _tcscpy(p,"_64");
- _tcscat(p, strchr (name,'.'));
+ p = _tcschr (newname, '.');
+ _tcscpy(p, L"_64");
+ _tcscat(p, _tcschr (name, '.'));
break;
case 2:
- p = strchr (newname,'.');
- _tcscpy (p,"64");
- _tcscat (p, strchr (name,'.'));
+ p = _tcschr (newname, '.');
+ _tcscpy (p, L"64");
+ _tcscat (p, _tcschr (name, '.'));
break;
}
#endif
void fpux_save (int *v)
{
+#ifndef _WIN64
*v = _controlfp (fpucontrol, _MCW_IC | _MCW_RC | _MCW_PC);
+#endif
}
void fpux_restore (int *v)
{
+#ifndef _WIN64
if (v)
_controlfp (*v, _MCW_IC | _MCW_RC | _MCW_PC);
else
_controlfp (fpucontrol, _MCW_IC | _MCW_RC | _MCW_PC);
+#endif
}
typedef BOOL (CALLBACK* SETPROCESSDPIAWARE)(void);
#define WINUAEPUBLICBETA 1
#define LANG_DLL 1
-#define WINUAEBETA L"Beta 7"
-#define WINUAEDATE MAKEBD(2010, 1, 30)
+#define WINUAEBETA L"8"
+#define WINUAEDATE MAKEBD(2010, 2, 6)
#define WINUAEEXTRA L""
#define WINUAEREV L""
_tcscpy (volumename, L"AmigaOS3.5");
if(!_tcscmp (volumename, L"AmigaOS39"))
_tcscpy (volumename, L"AmigaOS3.9");
+ if(!_tcscmp (volumename, L"AmigaOS_XL"))
+ _tcscpy (volumename, L"AmigaOS XL");
// ---Bernd Roesch
if (_tcslen (volumename) > 0)
result = 1;
} else if (usedfilter->type == UAE_FILTER_HQ) { /* 32/2X+3X+4X */
+#ifndef CPU_64_BIT
+
if (tempsurf2 && scale >= 2 && scale <= 4) {
/* Aaaaaaaarghhhghgh.. */
uae_u8 *sptr2 = tempsurf3;
dptr += pitch;
}
}
+#endif
} else if (usedfilter->type == UAE_FILTER_SUPEREAGLE) { /* 16/32/2X */
c |= currprefs.gfx_pvsync != changed_prefs.gfx_pvsync ? 2 | 16 : 0;
c |= currprefs.gfx_refreshrate != changed_prefs.gfx_refreshrate ? 2 | 16 : 0;
c |= currprefs.gfx_autoresolution != changed_prefs.gfx_autoresolution ? (2|8) : 0;
- c |= currprefs.gfx_api != changed_prefs.gfx_api ? (1|8) : 0;
+ c |= currprefs.gfx_api != changed_prefs.gfx_api ? (1|8|32) : 0;
c |= currprefs.gfx_filter != changed_prefs.gfx_filter ? (2|8) : 0;
c |= _tcscmp (currprefs.gfx_filtershader, changed_prefs.gfx_filtershader) ? (2|8) : 0;
+ c |= _tcscmp (currprefs.gfx_filtermask, changed_prefs.gfx_filtermask) ? (2|8) : 0;
c |= currprefs.gfx_filter_filtermode != changed_prefs.gfx_filter_filtermode ? (2|8) : 0;
c |= currprefs.gfx_filter_bilinear != changed_prefs.gfx_filter_bilinear ? (2|8) : 0;
c |= currprefs.gfx_filter_horiz_zoom_mult != changed_prefs.gfx_filter_horiz_zoom_mult ? (1|8) : 0;
currprefs.gfx_filter = changed_prefs.gfx_filter;
_tcscpy (currprefs.gfx_filtershader, changed_prefs.gfx_filtershader);
+ _tcscpy (currprefs.gfx_filtermask, changed_prefs.gfx_filtermask);
currprefs.gfx_filter_filtermode = changed_prefs.gfx_filter_filtermode;
currprefs.gfx_filter_bilinear = changed_prefs.gfx_filter_bilinear;
currprefs.gfx_filter_horiz_zoom_mult = changed_prefs.gfx_filter_horiz_zoom_mult;
#define MIN_SLOW_MEM 0
#define MAX_SLOW_MEM 4
#define MIN_Z3_MEM 0
-#define MAX_Z3_MEM ((max_z3fastmem >> 20) < 512 ? 12 : ((max_z3fastmem >> 20) < 1024 ? 13 : ((max_z3fastmem >> 20) < 2048) ? 14 : 16))
+#define MAX_Z3_MEM ((max_z3fastmem >> 20) < 512 ? 12 : ((max_z3fastmem >> 20) < 1024 ? 13 : ((max_z3fastmem >> 20) < 2048) ? 14 : ((max_z3fastmem >> 20) < 2560) ? 15 : ((max_z3fastmem >> 20) < 3072) ? 16 : 17))
#define MIN_P96_MEM 0
#define MAX_P96_MEM ((max_z3fastmem >> 20) < 512 ? 8 : ((max_z3fastmem >> 20) < 1024 ? 9 : ((max_z3fastmem >> 20) < 2048) ? 10 : 11))
#define MIN_MB_MEM 0
outpath[0] = 0;
sparse = 0;
dynamic = 0;
+ dt = 0;
hfsize = (uae_u64)hfsizem * 1024 * 1024;
if (IsDlgButtonChecked (hDlg, IDC_HF_SPARSE) == BST_CHECKED)
sparse = 1;
GetDlgItemText (hDlg, IDC_PATH_NAME, init_path, MAX_DPATH);
if (*init_path && hfsize) {
if (dynamic) {
- result = vhd_create (init_path, hfsize);
+ if (!_stscanf (dostype, L"%x", &dt))
+ dt = 0;
+ result = vhd_create (init_path, hfsize, dt);
} else {
SetCursor (LoadCursor (NULL, IDC_WAIT));
if ((hf = CreateFile (init_path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE) {
/* 17*/ L"384 MB",
/* 18*/ L"768 MB",
/* 19*/ L"1.5 GB",
+ /* 20*/ L"2.5 GB",
+ /* 21*/ L"3 GB"
};
static unsigned long memsizes[] = {
/* 17*/ 0x18000000, //384M
/* 18*/ 0x30000000, //768M
/* 19*/ 0x60000000, //1.5GB
+ /* 20*/ 0xA8000000, //2.5GB
+ /* 21*/ 0xC0000000, //3GB
};
static int msi_chip[] = { 1, 2, 3, 14, 4, 5, 6 };
static int msi_bogo[] = { 0, 2, 3, 14, 15 };
static int msi_fast[] = { 0, 3, 4, 5, 6 };
-static int msi_z3fast[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 12, 18, 13, 19, 16 };
+static int msi_z3fast[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 12, 18, 13, 19, 16, 20, 21 };
static int msi_gfx[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
static int CalculateHardfileSize (HWND hDlg)
mem_size = 10;
else if (v < 0x30000000)
mem_size = 11;
- else if (v < 0x40000000)
+ else if (v < 0x40000000) // 1GB
mem_size = 12;
- else if (v < 0x60000000)
+ else if (v < 0x60000000) // 1.5GB
mem_size = 13;
- else if (v < 0x80000000)
+ else if (v < 0x80000000) // 2GB
mem_size = 14;
- else
+ else if (v < 0xA8000000) // 2.5GB
mem_size = 15;
+ else if (v < 0xC0000000) // 3GB
+ mem_size = 16;
+ else
+ mem_size = 17;
SendDlgItemMessage (hDlg, IDC_Z3FASTMEM, TBM_SETPOS, TRUE, mem_size);
SetDlgItemText (hDlg, IDC_Z3FASTRAM, memsize_names[msi_z3fast[mem_size]]);
int i;
uae_u32 s1, s2;
+ // no 2GB Z3 size so we need 2x1G
+ if (*size1p >= 0x80000000) {
+ *size2p = *size1p - 0x40000000;
+ *size1p = 0x40000000;
+ return;
+ }
s1 = *size1p;
*size1p = 0;
*size2p = 0;
ew (hDlg, IDC_NOFLAGS, enable);
ew (hDlg, IDC_CS_CACHE_TEXT, enable);
ew (hDlg, IDC_CACHE, enable);
- ew (hDlg, IDC_JITENABLE, cpu_based_enable);
+ ew (hDlg, IDC_JITENABLE, cpu_based_enable && enable);
ew (hDlg, IDC_COMPATIBLE, !workprefs.cpu_cycle_exact && !workprefs.cachesize);
ew (hDlg, IDC_COMPATIBLE_FPU, workprefs.fpu_model > 0);
#if 0
ew (hDlg, IDC_FILTERKEEPASPECT, v);
ew (hDlg, IDC_FILTERASPECT, v);
ew (hDlg, IDC_FILTERASPECT2, v && workprefs.gfx_filter_keep_aspect);
+ ew (hDlg, IDC_FILTEROVERLAY, workprefs.gfx_api && !workprefs.gfx_filtershader[0]);
ew (hDlg, IDC_FILTERPRESETSAVE, filterpreset_builtin < 0);
ew (hDlg, IDC_FILTERPRESETLOAD, filterpreset_selected > 0);
SendDlgItemMessage (hDlg, IDC_FILTERVO, TBM_SETRANGE, TRUE, MAKELONG (-999, +999));
SendDlgItemMessage (hDlg, IDC_FILTERVO, TBM_SETPAGESIZE, 0, 1);
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_RESETCONTENT, 0, 0L);
SendDlgItemMessage (hDlg, IDC_FILTERMODE, CB_RESETCONTENT, 0, 0L);
WIN32GUI_LoadUIString (IDS_NONE, tmp, MAX_DPATH);
SendDlgItemMessage (hDlg, IDC_FILTERMODE, CB_ADDSTRING, 0, (LPARAM)tmp);
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_ADDSTRING, 0, (LPARAM)tmp);
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_SETCURSEL, 0, 0);
uf = NULL;
fltnum = 0;
i = 0; j = 1;
h = INVALID_HANDLE_VALUE;
}
}
+ _stprintf (tmp, L"%s%soverlays\\*.*", start_path_exe, WIN32_PLUGINDIR);
+ h = FindFirstFile (tmp, &wfd);
+ i = 0; j = 1;
+ while (h != INVALID_HANDLE_VALUE) {
+ TCHAR *ext = _tcsrchr (wfd.cFileName, '.');
+ if (ext && (
+ !_tcsicmp (ext, L".png") ||
+ !_tcsicmp (ext, L".bmp")))
+ {
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_ADDSTRING, 0, (LPARAM)wfd.cFileName);
+ if (!_tcsicmp (wfd.cFileName, workprefs.gfx_filtermask))
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_SETCURSEL, j, 0);
+ j++;
+
+ }
+ if (!FindNextFile (h, &wfd)) {
+ FindClose (h);
+ h = INVALID_HANDLE_VALUE;
+ }
+ }
}
SendDlgItemMessage (hDlg, IDC_FILTERMODE, CB_SETCURSEL, fltnum, 0);
if (workprefs.gfx_filter == 0 && !workprefs.gfx_api)
workprefs.gfx_filter_autoscale = 0;
}
+ item = SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_GETCURSEL, 0, 0L);
+ if (item != CB_ERR) {
+ TCHAR tmp[MAX_DPATH];
+ tmp[0] = 0;
+ if (item > 0) {
+ SendDlgItemMessage (hDlg, IDC_FILTEROVERLAY, CB_GETLBTEXT, (WPARAM)item, (LPARAM)tmp);
+ if (_tcsicmp (workprefs.gfx_filtermask, tmp)) {
+ _tcscpy (workprefs.gfx_filtermask, tmp);
+ }
+ } else {
+ workprefs.gfx_filtermask[0] = 0;
+ }
+ }
enable_for_hw3ddlg (hDlg);
updatedisplayarea ();
}
break;
case IDC_FILTERMODE:
case IDC_FILTERFILTER:
+ case IDC_FILTEROVERLAY:
filter_handle (hDlg);
values_to_hw3ddlg (hDlg);
break;
<Configurations>
<Configuration
Name="Debug|Win32"
- OutputDirectory=".\Debug"
- IntermediateDirectory=".\Debug"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib wpcap.lib packet.lib openal32.lib wintab32.lib portaudio_x86.lib freetype.lib vfw32.lib wtsapi32.lib avrt.lib wininet.lib enet.lib prowizard.lib"
- ShowProgress="0"
- OutputFile="d:\amiga\winuae.exe"
- LinkIncremental="2"
- SuppressStartupBanner="true"
- GenerateManifest="false"
- DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/winuae.pdb"
- SubSystem="2"
- StackReserveSize="2621440"
- StackCommitSize="2621440"
- LargeAddressAware="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae.exe.manifest"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|x64"
- OutputDirectory="x64\$(ConfigurationName)"
- IntermediateDirectory="x64\$(ConfigurationName)"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="3"
- TypeLibraryName=".\Debug/winuae_msvc.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions=""
- Optimization="0"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,_DEBUG,WIN32,_WINDOWS,ZLIB_DLL,OPENGL_SUPPORT,_WIN32_IE 0x0500,UNIX;WIN64"
- ExceptionHandling="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- BufferSecurityCheck="true"
- RuntimeTypeInfo="true"
- PrecompiledHeaderFile=".\Debug/winuae_msvc.pch"
- AssemblerListingLocation=".\Debug/"
- ObjectFile=".\Debug/"
- ProgramDataBaseFileName=".\Debug/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="0"
- DisableSpecificWarnings="4996"
- EnablePREfast="false"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib zlib1.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib"
- OutputFile="d:\amiga\winuae.exe"
- LinkIncremental="2"
- SuppressStartupBanner="true"
- GenerateManifest="false"
- DelayLoadDLLs="setupapi.dll"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/winuae.pdb"
- SubSystem="2"
- StackReserveSize="2621440"
- StackCommitSize="2621440"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="d:\amiga"
- IntermediateDirectory=".\Release"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="1"
- TypeLibraryName=".\Release/winuae_msvc.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- OmitFramePointers="true"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep,..\..\prowizard\include"
- PreprocessorDefinitions="WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;CINTERFACE;COBJMACROS"
- StringPooling="true"
- ExceptionHandling="0"
- BasicRuntimeChecks="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableFunctionLevelLinking="false"
- EnableEnhancedInstructionSet="0"
- FloatingPointModel="0"
- TreatWChar_tAsBuiltInType="false"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CallingConvention="2"
- CompileAs="0"
- DisableSpecificWarnings="4996"
- ForcedIncludeFiles=""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib wpcap.lib packet.lib openal32.lib wintab32.lib portaudio_x86.lib freetype.lib vfw32.lib wtsapi32.lib avrt.lib wininet.lib enet.lib prowizard.lib"
- OutputFile="d:\amiga\winuae.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories=""
- GenerateManifest="true"
- AdditionalManifestDependencies=""
- DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;wininet.dll"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Release/winuae.pdb"
- SubSystem="2"
- StackReserveSize="2621440"
- StackCommitSize="2621440"
- LargeAddressAware="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="0"
- LinkTimeCodeGeneration="0"
- RandomizedBaseAddress="2"
- FixedBaseAddress="1"
- DataExecutionPrevention="2"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae9.exe.manifest"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|x64"
- OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
- IntermediateDirectory="x64\$(ConfigurationName)"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="3"
- TypeLibraryName=".\Release/winuae_msvc.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="1"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- OmitFramePointers="true"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,WIN32,NDEBUG,_WINDOWS,ZLIB_DLL,_WIN32_IE 0x0500,WIN64,_WIN64,UNIX"
- StringPooling="true"
- ExceptionHandling="0"
- BasicRuntimeChecks="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableFunctionLevelLinking="true"
- EnableEnhancedInstructionSet="0"
- FloatingPointModel="0"
- TreatWChar_tAsBuiltInType="false"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CompileAs="1"
- DisableSpecificWarnings="4996"
- ForcedIncludeFiles=""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib"
- ShowProgress="0"
- OutputFile="d:\amiga\winuae64.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories=""
- GenerateManifest="true"
- DelayLoadDLLs=""
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Release/winuae.pdb"
- SubSystem="2"
- StackReserveSize="0"
- StackCommitSize="0"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="0"
- LinkTimeCodeGeneration="0"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="TestRelease|Win32"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="TestRelease|x64"
- OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
- IntermediateDirectory="x64\$(ConfigurationName)"
- ConfigurationType="1"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
- MkTypLibCompatible="true"
- SuppressStartupBanner="true"
- TargetEnvironment="3"
- TypeLibraryName=".\Release/winuae_msvc.tlb"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/Oy-"
- Optimization="0"
- InlineFunctionExpansion="1"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="0"
- OmitFramePointers="false"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,WIN32,NDEBUG,_WINDOWS,ZLIB_DLL,_WIN32_IE 0x0500,UNIX;WIN64"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableFunctionLevelLinking="true"
- EnableEnhancedInstructionSet="0"
- TreatWChar_tAsBuiltInType="false"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
- AssemblerListingLocation=".\TestRelease/"
- ObjectFile=".\TestRelease/"
- ProgramDataBaseFileName=".\TestRelease/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CompileAs="1"
- ForcedIncludeFiles=""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib zlib1.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib"
- OutputFile="d:\amiga\winuae.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- DelayLoadDLLs="setupapi.dll"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Release/winuae.pdb"
- SubSystem="2"
- StackReserveSize="2621440"
- StackCommitSize="2621440"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="0"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="17"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release64|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
+ AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib wpcap.lib packet.lib openal32.lib wintab32.lib portaudio_x86.lib freetype.lib vfw32.lib wtsapi32.lib avrt.lib wininet.lib enet.lib prowizard.lib"
+ ShowProgress="0"
+ OutputFile="d:\amiga\winuae.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateManifest="false"
+ DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/winuae.pdb"
+ SubSystem="2"
+ StackReserveSize="2621440"
+ StackCommitSize="2621440"
+ LargeAddressAware="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
/>
<Tool
Name="VCManifestTool"
+ AdditionalManifestFiles="..\resources\winuae.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
/>
</Configuration>
<Configuration
- Name="Release64|x64"
- OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
- IntermediateDirectory="x64\$(ConfigurationName)"
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
- PreprocessorDefinitions="NDEBUG"
+ PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
- TypeLibraryName=".\Release/winuae_msvc.tlb"
+ TypeLibraryName=".\Debug/winuae_msvc.tlb"
/>
<Tool
Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="1"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- OmitFramePointers="true"
- WholeProgramOptimization="false"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,WIN32,NDEBUG,_WINDOWS,_WIN32_IE 0x0500,UNIX;WIN64"
- StringPooling="true"
+ AdditionalOptions=""
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep,..\..\prowizard\include,..\tun"
+ PreprocessorDefinitions="WINVER=0x0500,_DEBUG,WIN32_IE=0x0700;WIN32;WIN64;CINTERFACE;COBJMACROS;_CRT_SECURE_NO_WARNINGS;D3D_DEBUG_INFO"
ExceptionHandling="0"
- BasicRuntimeChecks="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableFunctionLevelLinking="false"
- EnableEnhancedInstructionSet="0"
- FloatingPointModel="0"
- TreatWChar_tAsBuiltInType="false"
- RuntimeTypeInfo="false"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release64/winuae_msvc.pch"
- AssemblerListingLocation=".\Release64/"
- ObjectFile=".\Release64/"
- ProgramDataBaseFileName=".\Release64/"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ BufferSecurityCheck="true"
+ RuntimeTypeInfo="true"
+ PrecompiledHeaderFile=".\Debug64/winuae_msvc.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
- CompileAs="1"
+ DebugInformationFormat="3"
+ CallingConvention="2"
+ CompileAs="0"
DisableSpecificWarnings="4996"
- ForcedIncludeFiles=""
+ EnablePREfast="false"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
+ PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib"
+ AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib portaudio_x64.lib packet.lib wpcap.lib openal32.lib libpng.lib lglcd.lib wtsapi32.lib wntab32x.lib enet_x64.lib prowizard.lib"
OutputFile="d:\amiga\winuae64.exe"
- LinkIncremental="1"
+ LinkIncremental="2"
SuppressStartupBanner="true"
- AdditionalLibraryDirectories=""
- GenerateManifest="true"
- DelayLoadDLLs=""
+ GenerateManifest="false"
+ IgnoreDefaultLibraryNames="MSVCRT.lib"
+ DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll"
GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Release64/winuae.pdb"
+ ProgramDatabaseFile=".\Debug/winuae.pdb"
SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="0"
- LinkTimeCodeGeneration="0"
+ StackReserveSize="2621440"
+ StackCommitSize="2621440"
+ LargeAddressAware="2"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="17"
/>
<Tool
Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae.exe.manifest"
+ AdditionalManifestFiles="..\resources\winuae64.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
/>
</Configuration>
<Configuration
- Name="Debug64|Win32"
- OutputDirectory="$(ConfigurationName)"
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
+ PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
- TypeLibraryName=".\Debug/winuae_msvc.tlb"
+ TypeLibraryName=".\Release/winuae_msvc.tlb"
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalOptions=""
- Optimization="0"
- AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,_DEBUG,WIN32,_WINDOWS,ZLIB_DLL,OPENGL_SUPPORT,_WIN32_IE 0x0500,UNIX"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ EnableIntrinsicFunctions="true"
+ FavorSizeOrSpeed="1"
+ OmitFramePointers="true"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep,..\..\prowizard\include"
+ PreprocessorDefinitions="WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;CINTERFACE;COBJMACROS"
+ StringPooling="true"
ExceptionHandling="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- BufferSecurityCheck="true"
- RuntimeTypeInfo="true"
- PrecompiledHeaderFile=".\Debug/winuae_msvc.pch"
- AssemblerListingLocation=".\Debug/"
- ObjectFile=".\Debug/"
- ProgramDataBaseFileName=".\Debug/"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="false"
+ EnableFunctionLevelLinking="false"
+ EnableEnhancedInstructionSet="0"
+ FloatingPointModel="0"
+ TreatWChar_tAsBuiltInType="false"
+ RuntimeTypeInfo="false"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
+ CallingConvention="2"
CompileAs="0"
DisableSpecificWarnings="4996"
- EnablePREfast="false"
+ ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
+ PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
/>
<Tool
Name="VCLinkerTool"
- AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib zdll.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib"
+ AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib libpng.lib lglcd.lib wpcap.lib packet.lib openal32.lib wintab32.lib portaudio_x86.lib freetype.lib vfw32.lib wtsapi32.lib avrt.lib wininet.lib enet.lib prowizard.lib"
OutputFile="d:\amiga\winuae.exe"
- LinkIncremental="2"
+ LinkIncremental="1"
SuppressStartupBanner="true"
+ AdditionalLibraryDirectories=""
GenerateManifest="false"
- DelayLoadDLLs="setupapi.dll"
+ AdditionalManifestDependencies=""
+ DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;wininet.dll"
GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/winuae.pdb"
+ ProgramDatabaseFile=".\Release/winuae.pdb"
SubSystem="2"
StackReserveSize="2621440"
StackCommitSize="2621440"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
+ LargeAddressAware="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="0"
+ LinkTimeCodeGeneration="0"
+ RandomizedBaseAddress="2"
+ FixedBaseAddress="1"
+ DataExecutionPrevention="2"
+ TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
+ AdditionalManifestFiles="..\resources\winuae9.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
/>
</Configuration>
<Configuration
- Name="Debug64|x64"
- OutputDirectory="$(SolutionDir)x64\$(ConfigurationName)"
- IntermediateDirectory="x64\$(ConfigurationName)"
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCMIDLTool"
- PreprocessorDefinitions="_DEBUG"
+ PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="3"
- TypeLibraryName=".\Debug/winuae_msvc.tlb"
+ TypeLibraryName=".\Release/winuae_msvc.tlb"
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalOptions=""
- Optimization="0"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ EnableIntrinsicFunctions="true"
+ FavorSizeOrSpeed="1"
+ OmitFramePointers="true"
+ WholeProgramOptimization="false"
AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,_DEBUG,WIN32,_WINDOWS,_WIN32_IE 0x0500,UNIX,WIN64"
+ PreprocessorDefinitions="WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;WIN64;CINTERFACE;COBJMACROS"
+ StringPooling="true"
ExceptionHandling="0"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="0"
BufferSecurityCheck="false"
- RuntimeTypeInfo="true"
- PrecompiledHeaderFile=".\Debug64/winuae_msvc.pch"
- AssemblerListingLocation=".\Debug64/"
- ObjectFile=".\Debug64/"
- ProgramDataBaseFileName=".\Debug64/"
+ EnableFunctionLevelLinking="true"
+ EnableEnhancedInstructionSet="0"
+ FloatingPointModel="0"
+ TreatWChar_tAsBuiltInType="false"
+ RuntimeTypeInfo="false"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
+ CallingConvention="2"
CompileAs="0"
DisableSpecificWarnings="4996"
- EnablePREfast="false"
+ ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
+ PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib zlib.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib winio.lib setupapi.lib wininet.lib capsimg.lib dxerr8.lib shlwapi.lib"
+ AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib portaudio_x64.lib packet.lib wpcap.lib openal32.lib libpng.lib lglcd.lib wtsapi32.lib wntab32x.lib enet_x64.lib prowizard.lib"
+ ShowProgress="0"
OutputFile="d:\amiga\winuae64.exe"
- LinkIncremental="2"
+ LinkIncremental="1"
SuppressStartupBanner="true"
+ AdditionalLibraryDirectories=""
GenerateManifest="true"
- DelayLoadDLLs=""
+ IgnoreDefaultLibraryNames="MSVCRT.lib"
+ DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll"
GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug64/winuae.pdb"
+ ProgramDatabaseFile=".\Release/winuae.pdb"
SubSystem="2"
- StackReserveSize="2621440"
- StackCommitSize="2621440"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
+ StackReserveSize="0"
+ StackCommitSize="0"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="0"
+ LinkTimeCodeGeneration="0"
+ RandomizedBaseAddress="2"
+ FixedBaseAddress="1"
+ DataExecutionPrevention="2"
TargetMachine="17"
/>
<Tool
/>
<Tool
Name="VCManifestTool"
- AdditionalManifestFiles="..\resources\winuae.exe.manifest"
+ AdditionalManifestFiles="..\resources\winuae64.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
- GenerateManifest="true"
+ GenerateManifest="false"
AdditionalManifestDependencies=""
DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x86.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll;wininet.dll"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\FullRelease/winuae.pdb"
SubSystem="2"
- StackReserveSize="0"
- StackCommitSize="0"
- LargeAddressAware="1"
+ StackReserveSize="2621440"
+ StackCommitSize="2621440"
+ LargeAddressAware="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
OptimizeForWindows98="0"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
<Tool
Name="VCCLCompilerTool"
Optimization="3"
- InlineFunctionExpansion="1"
+ InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
- WholeProgramOptimization="false"
+ WholeProgramOptimization="true"
AdditionalIncludeDirectories="..\..\include,..\..,..\,..\resources,..\osdep,..\sounddep"
- PreprocessorDefinitions="WINVER=0x0500,WIN32,NDEBUG,_WINDOWS,ZLIB_DLL,_WIN32_IE 0x0500,WIN64,_WIN64,UNIX"
+ PreprocessorDefinitions="WINVER=0x0500;NDEBUG;_WIN32_IE=0x0700;WIN32;WIN64;CINTERFACE;COBJMACROS"
StringPooling="true"
ExceptionHandling="0"
BasicRuntimeChecks="0"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/winuae_msvc.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
+ PrecompiledHeaderFile=".\FullRelease/winuae_msvc.pch"
+ AssemblerListingLocation=".\FullRelease/"
+ ObjectFile=".\FullRelease/"
+ ProgramDataBaseFileName=".\FullRelease/"
WarningLevel="3"
SuppressStartupBanner="true"
- CompileAs="1"
+ CallingConvention="2"
+ CompileAs="0"
DisableSpecificWarnings="4996"
ForcedIncludeFiles=""
/>
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="opengl32.lib glu32.lib ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr8.lib shlwapi.lib"
+ AdditionalDependencies="ws2_32.lib ddraw.lib dxguid.lib winmm.lib comctl32.lib version.lib vfw32.lib msacm32.lib dsound.lib dinput8.lib d3d9.lib d3dx9.lib setupapi.lib wininet.lib dxerr.lib shlwapi.lib zlibstat.lib portaudio_x64.lib packet.lib wpcap.lib openal32.lib libpng.lib lglcd.lib wtsapi32.lib wntab32x.lib enet_x64.lib prowizard.lib"
ShowProgress="0"
OutputFile="d:\amiga\winuae64.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
- GenerateManifest="true"
- DelayLoadDLLs=""
+ GenerateManifest="false"
+ IgnoreDefaultLibraryNames="MSVCRT.lib"
+ DelayLoadDLLs="wpcap.dll;packet.dll;d3dx9_42.dll;openal32.dll;wintab32.dll;portaudio_x64.dll;freetype6.dll;ws2_32.dll;msacm32.dll;wtsapi32.dll;dsound.dll;avrt.dll"
GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Release/winuae.pdb"
+ ProgramDatabaseFile=".\FullRelease/winuae.pdb"
SubSystem="2"
StackReserveSize="0"
StackCommitSize="0"
OptimizeReferences="2"
EnableCOMDATFolding="2"
OptimizeForWindows98="0"
- LinkTimeCodeGeneration="0"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
+ LinkTimeCodeGeneration="1"
+ RandomizedBaseAddress="2"
+ FixedBaseAddress="1"
+ DataExecutionPrevention="2"
TargetMachine="17"
/>
<Tool
/>
<Tool
Name="VCManifestTool"
+ AdditionalManifestFiles="..\resources\winuae64.exe.manifest"
/>
<Tool
Name="VCXDCMakeTool"
>
</File>
<File
- RelativePath=".\configfile.ico"
+ RelativePath="..\resources\configfile.ico"
>
</File>
<File
- RelativePath="..\resources\configfile.ico"
+ RelativePath=".\configfile.ico"
>
</File>
<File
>
</File>
<File
- RelativePath=".\expansion.ico"
+ RelativePath="..\resources\expansion.ico"
>
</File>
<File
- RelativePath="..\resources\expansion.ico"
+ RelativePath=".\expansion.ico"
>
</File>
<File
- RelativePath=".\file.ico"
+ RelativePath="..\resources\file.ico"
>
</File>
<File
- RelativePath="..\resources\file.ico"
+ RelativePath=".\file.ico"
>
</File>
<File
/>
</FileConfiguration>
<FileConfiguration
- Name="TestRelease|x64"
+ Name="FullRelease|Win32"
>
<Tool
Name="VCResourceCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
- Name="Release64|x64"
+ Name="FullRelease|x64"
>
<Tool
Name="VCResourceCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
- Name="Debug64|Win32"
+ Name="TestRelease|x64"
>
<Tool
Name="VCResourceCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
- Name="Debug64|x64"
+ Name="Release64|x64"
>
<Tool
Name="VCResourceCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
- Name="FullRelease|Win32"
+ Name="Debug64|Win32"
>
<Tool
Name="VCResourceCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
- Name="FullRelease|x64"
+ Name="Debug64|x64"
>
<Tool
Name="VCResourceCompilerTool"
<File
RelativePath="..\hq2x16.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\hq2x32.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\hq3x16.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\hq3x32.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\hq4x16.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\hq4x32.obj"
>
+ <FileConfiguration
+ Name="Debug|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="FullRelease|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\resources\resource"
+Beta 8:
+
+- do not use D3D9Ex if no v3 shader or dynamic texture support
+ (workaround for some older cards that may not be fully compatible)
+- added workaround for weird display drivers that don't allow changing
+ to 50Hz Direct3D fullscreen but accept it if identical directdraw
+ fullscreen mode is already open
+- 68000 exception3 quick fix (Zoom)
+- CE 68000 CIA cycle timing updates (was too fast)
+- warp mode was slow in windowed D3D mode (b7)
+- selected dostype in create hardfile panel was ignored if hardfile
+ type was dynamic
+- added filter panel overlay/mask selection, put overlay/mask files
+ in <path>\plugins\overlays
+- DMS files with fake complete first cyl (containing BBS ads) didn't
+ unpack correctly. Support HD DMS files (not tested)
+- CE interrupt handling rewritten (still not good enough)
+
Beta 7:
- Direct3D errors didn't properly reset back to non-D3D mode
ok = 1;
}
if (!ok) {
- _tprintf (L"UAE unpacker uaeunp 0.8 by Toni Wilen (c)2009\n");
+ _tprintf (L"UAE unpacker uaeunp 0.8b by Toni Wilen (c)2010\n");
_tprintf (L"\n");
_tprintf (L"List: \"uaeunp (-l) <path>\"\n");
_tprintf (L"List all recursively: \"uaeunp -l <path> **\"\n");