Merge branch 'master' of https://github.com/OBattler/86Box
This commit is contained in:
61
src/86Box.rc
61
src/86Box.rc
@@ -142,6 +142,41 @@ BEGIN
|
|||||||
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_VID_SCREENSHOT
|
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_VID_SCREENSHOT
|
||||||
END
|
END
|
||||||
MENUITEM "S&tatus", IDM_STATUS
|
MENUITEM "S&tatus", IDM_STATUS
|
||||||
|
#ifdef ENABLE_LOG_TOGGLES
|
||||||
|
#if defined ENABLE_BUSLOGIC_LOG || defined ENABLE_CDROM_LOG || defined ENABLE_D86F_LOG || defined ENABLE_FDC_LOG || defined ENABLE_IDE_LOG || defined ENABLE_NE2000_LOG
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
MENUITEM "Enable BusLogic logs\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_CDROM_LOG
|
||||||
|
MENUITEM "Enable CD-ROM logs\tCtrl+F5", IDM_LOG_CDROM
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_D86F_LOG
|
||||||
|
MENUITEM "Enable floppy (86F) logs\tCtrl+F6", IDM_LOG_D86F
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_FDC_LOG
|
||||||
|
MENUITEM "Enable floppy controller logs\tCtrl+F7", IDM_LOG_FDC
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_IDE_LOG
|
||||||
|
MENUITEM "Enable IDE logs\tCtrl+F8", IDM_LOG_IDE
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_NE2000_LOG
|
||||||
|
MENUITEM "Enable NE2000 logs\tCtrl+F9", IDM_LOG_NE2000
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_LOG_BREAKPOINT
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Log breakpoint\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
MENUITEM "Dump &video RAM\tCtrl+F1", IDM_DUMP_VRAM
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Dump &video RAM\tCtrl+F1", IDM_DUMP_VRAM
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
END
|
END
|
||||||
POPUP "&Help"
|
POPUP "&Help"
|
||||||
BEGIN
|
BEGIN
|
||||||
@@ -157,6 +192,32 @@ END
|
|||||||
|
|
||||||
MAINACCEL ACCELERATORS MOVEABLE PURE
|
MAINACCEL ACCELERATORS MOVEABLE PURE
|
||||||
BEGIN
|
BEGIN
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
VK_F1, IDM_DUMP_VRAM, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_LOG_TOGGLES
|
||||||
|
#ifdef ENABLE_BUSLOGIC_LOG
|
||||||
|
VK_F4, IDM_LOG_BUSLOGIC, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_CDROM_LOG
|
||||||
|
VK_F5, IDM_LOG_CDROM, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_D86F_LOG
|
||||||
|
VK_F6, IDM_LOG_D86F, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_FDC_LOG
|
||||||
|
VK_F7, IDM_LOG_FDC, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_IDE_LOG
|
||||||
|
VK_F8, IDM_LOG_IDE, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_NE2000_LOG
|
||||||
|
VK_F9, IDM_LOG_NE2000, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_LOG_BREAKPOINT
|
||||||
|
VK_F10, IDM_LOG_BREAKPOINT, CONTROL, VIRTKEY
|
||||||
|
#endif
|
||||||
VK_F11, IDM_VID_SCREENSHOT, VIRTKEY, CONTROL
|
VK_F11, IDM_VID_SCREENSHOT, VIRTKEY, CONTROL
|
||||||
VK_F12, IDM_FILE_RESET_CAD, VIRTKEY, CONTROL
|
VK_F12, IDM_FILE_RESET_CAD, VIRTKEY, CONTROL
|
||||||
END
|
END
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#
|
#
|
||||||
# Modified Makefile for Win32 MinGW 32-bit environment.
|
# Modified Makefile for Win32 MinGW 32-bit environment.
|
||||||
#
|
#
|
||||||
# Version: @(#)Makefile.mingw 1.0.6 2017/05/06
|
# Version: @(#)Makefile.mingw 1.0.7 2017/05/07
|
||||||
#
|
#
|
||||||
# Authors: Kotori, <oubattler@gmail.com>
|
# Authors: Kotori, <oubattler@gmail.com>
|
||||||
# Fred N. van Kempen, <decwiz@yahoo.com>
|
# Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
@@ -44,7 +44,11 @@ WINDRES = windres.exe
|
|||||||
|
|
||||||
OPTS = -DWIN32 $(EXTRAS) $(STUFF)
|
OPTS = -DWIN32 $(EXTRAS) $(STUFF)
|
||||||
ifeq ($(DEBUG), y)
|
ifeq ($(DEBUG), y)
|
||||||
|
ifeq ($(VRAMDUMP), y)
|
||||||
|
DFLAGS = -march=i686 -ggdb -DDEBUG -DENABLE_VRAM_DUMP
|
||||||
|
else
|
||||||
DFLAGS = -march=i686 -ggdb -DDEBUG
|
DFLAGS = -march=i686 -ggdb -DDEBUG
|
||||||
|
endif
|
||||||
COPTIM = -Og
|
COPTIM = -Og
|
||||||
else
|
else
|
||||||
ifeq ($(OPTIM), y)
|
ifeq ($(OPTIM), y)
|
||||||
@@ -66,9 +70,19 @@ AOPTIM =
|
|||||||
endif
|
endif
|
||||||
AFLAGS = -msse -msse2 \
|
AFLAGS = -msse -msse2 \
|
||||||
-mfpmath=sse
|
-mfpmath=sse
|
||||||
|
ifeq ($(RELEASE), y)
|
||||||
|
CFLAGS = $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) $(AFLAGS) \
|
||||||
|
-fomit-frame-pointer -mstackrealign -DRELEASE_BUILD
|
||||||
|
RFLAGS = --input-format=rc -O coff -DRELEASE_BUILD
|
||||||
|
else
|
||||||
CFLAGS = $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) $(AFLAGS) \
|
CFLAGS = $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) $(AFLAGS) \
|
||||||
-fomit-frame-pointer -mstackrealign
|
-fomit-frame-pointer -mstackrealign
|
||||||
|
ifeq ($(VRAMDUMP), y)
|
||||||
|
RFLAGS = --input-format=rc -O coff -DENABLE_VRAM_DUMP
|
||||||
|
else
|
||||||
RFLAGS = --input-format=rc -O coff
|
RFLAGS = --input-format=rc -O coff
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(X64), y)
|
ifeq ($(X64), y)
|
||||||
PLATCG = codegen_x86-64.o
|
PLATCG = codegen_x86-64.o
|
||||||
@@ -125,7 +139,7 @@ SNDOBJ = sound.o \
|
|||||||
wave8580__ST.o wave8580_P_T.o wave8580_PS_.o \
|
wave8580__ST.o wave8580_P_T.o wave8580_PS_.o \
|
||||||
wave8580_PST.o wave.o \
|
wave8580_PST.o wave.o \
|
||||||
dbopl.o nukedopl.o openal.o \
|
dbopl.o nukedopl.o openal.o \
|
||||||
snd_speaker.o dac.o snd_ps1.o snd_pssj.o \
|
snd_speaker.o snd_ps1.o snd_pssj.o \
|
||||||
snd_adlib.o snd_adlibgold.o snd_ad1848.o \
|
snd_adlib.o snd_adlibgold.o snd_ad1848.o \
|
||||||
snd_sb.o snd_sb_dsp.o snd_cms.o snd_dbopl.o \
|
snd_sb.o snd_sb_dsp.o snd_cms.o snd_dbopl.o \
|
||||||
snd_emu8k.o snd_gus.o snd_opl.o \
|
snd_emu8k.o snd_gus.o snd_opl.o \
|
||||||
|
|||||||
@@ -270,7 +270,6 @@ void sound_poll(void *priv)
|
|||||||
if (sound_pos_global == SOUNDBUFLEN)
|
if (sound_pos_global == SOUNDBUFLEN)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
/* int16_t buf16[SOUNDBUFLEN * 2 ];*/
|
|
||||||
|
|
||||||
memset(outbuffer, 0, SOUNDBUFLEN * 2 * sizeof(int32_t));
|
memset(outbuffer, 0, SOUNDBUFLEN * 2 * sizeof(int32_t));
|
||||||
|
|
||||||
@@ -278,19 +277,6 @@ void sound_poll(void *priv)
|
|||||||
sound_handlers[c].get_buffer(outbuffer, SOUNDBUFLEN, sound_handlers[c].priv);
|
sound_handlers[c].get_buffer(outbuffer, SOUNDBUFLEN, sound_handlers[c].priv);
|
||||||
|
|
||||||
|
|
||||||
/* for (c=0;c<SOUNDBUFLEN*2;c++)
|
|
||||||
{
|
|
||||||
if (outbuffer[c] < -32768)
|
|
||||||
buf16[c] = -32768;
|
|
||||||
else if (outbuffer[c] > 32767)
|
|
||||||
buf16[c] = 32767;
|
|
||||||
else
|
|
||||||
buf16[c] = outbuffer[c];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!soundf) soundf=fopen("sound.pcm","wb");
|
|
||||||
fwrite(buf16,(SOUNDBUFLEN)*2*2,1,soundf);*/
|
|
||||||
|
|
||||||
for (c = 0; c < SOUNDBUFLEN * 2; c++)
|
for (c = 0; c < SOUNDBUFLEN * 2; c++)
|
||||||
{
|
{
|
||||||
outbuffer_ex[c] = ((float) outbuffer[c]) / 32768.0;
|
outbuffer_ex[c] = ((float) outbuffer[c]) / 32768.0;
|
||||||
|
|||||||
@@ -2391,7 +2391,7 @@ static device_config_t s3_phoenix_trio64_config[] =
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"card_id", "Card ID", CONFIG_SELECTION, "", 1,
|
"card_id", "Card ID", CONFIG_SELECTION, "", 0,
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
"S3 Trio64", 0
|
"S3 Trio64", 0
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
#include "../ibm.h"
|
#include "../ibm.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
#include "../mem.h"
|
#include "../mem.h"
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
#include "../rom.h"
|
||||||
|
#endif
|
||||||
#include "../timer.h"
|
#include "../timer.h"
|
||||||
#include "video.h"
|
#include "video.h"
|
||||||
#include "vid_svga.h"
|
#include "vid_svga.h"
|
||||||
@@ -916,6 +919,11 @@ void svga_poll(void *p)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
uint8_t *ext_vram;
|
||||||
|
int ext_memsize;
|
||||||
|
#endif
|
||||||
|
|
||||||
int svga_init(svga_t *svga, void *p, int memsize,
|
int svga_init(svga_t *svga, void *p, int memsize,
|
||||||
void (*recalctimings_ex)(struct svga_t *svga),
|
void (*recalctimings_ex)(struct svga_t *svga),
|
||||||
uint8_t (*video_in) (uint16_t addr, void *p),
|
uint8_t (*video_in) (uint16_t addr, void *p),
|
||||||
@@ -950,6 +958,10 @@ int svga_init(svga_t *svga, void *p, int memsize,
|
|||||||
svga->dispofftime = 1000 * (1 << TIMER_SHIFT);
|
svga->dispofftime = 1000 * (1 << TIMER_SHIFT);
|
||||||
svga->bpp = 8;
|
svga->bpp = 8;
|
||||||
svga->vram = malloc(memsize);
|
svga->vram = malloc(memsize);
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
ext_vram = svga->vram;
|
||||||
|
ext_memsize = memsize;
|
||||||
|
#endif
|
||||||
svga->vram_limit = memsize;
|
svga->vram_limit = memsize;
|
||||||
svga->vrammask = memsize - 1;
|
svga->vrammask = memsize - 1;
|
||||||
svga->changedvram = malloc(/*(memsize >> 12) << 1*/memsize >> 12);
|
svga->changedvram = malloc(/*(memsize >> 12) << 1*/memsize >> 12);
|
||||||
@@ -1008,21 +1020,38 @@ void svga_write(uint32_t addr, uint8_t val, void *p)
|
|||||||
if (!(svga->gdcreg[6] & 1)) svga->fullchange=2;
|
if (!(svga->gdcreg[6] & 1)) svga->fullchange=2;
|
||||||
if (svga->chain4 || svga->fb_only)
|
if (svga->chain4 || svga->fb_only)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
00000 -> writemask 1, addr 0 -> vram addr 00000
|
||||||
|
00001 -> writemask 2, addr 0 -> vram addr 00001
|
||||||
|
00002 -> writemask 4, addr 0 -> vram addr 00002
|
||||||
|
00003 -> writemask 8, addr 0 -> vram addr 00003
|
||||||
|
00004 -> writemask 1, addr 4 -> vram addr 00004
|
||||||
|
00005 -> writemask 2, addr 4 -> vram addr 00005
|
||||||
|
00006 -> writemask 4, addr 4 -> vram addr 00006
|
||||||
|
00007 -> writemask 8, addr 4 -> vram addr 00007
|
||||||
|
*/
|
||||||
writemask2=1<<(addr&3);
|
writemask2=1<<(addr&3);
|
||||||
addr&=~3;
|
addr&=~3;
|
||||||
}
|
}
|
||||||
else if (svga->chain2_write)
|
else if (svga->chain2_write)
|
||||||
{
|
{
|
||||||
if ((svga->gdcreg[6] & 0xC) == 0x4)
|
#if 0
|
||||||
|
if (svga->oddeven_page)
|
||||||
{
|
{
|
||||||
writemask2 &= (svga->oddeven_page ? ~0xe : ~0xb);
|
/* Odd/Even page is 1, mask out plane 2 or 3, according to bit 0 of the address. */
|
||||||
|
writemask2 &= (addr & 1) ? 8 : 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writemask2 &= ~0xa;
|
/* Odd/Even page is 2, mask out plane 0 or 1, according to bit 0 of the address. */
|
||||||
|
writemask2 &= (addr & 1) ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
writemask2 &= ~0xa;
|
||||||
if (addr & 1)
|
if (addr & 1)
|
||||||
writemask2 <<= 1;
|
writemask2 <<= 1;
|
||||||
|
|
||||||
addr &= ~1;
|
addr &= ~1;
|
||||||
addr <<= 2;
|
addr <<= 2;
|
||||||
}
|
}
|
||||||
@@ -1212,7 +1241,12 @@ uint8_t svga_read(uint32_t addr, void *p)
|
|||||||
}
|
}
|
||||||
else if (svga->chain2_read)
|
else if (svga->chain2_read)
|
||||||
{
|
{
|
||||||
readplane = (readplane & 2) | (addr & 1);
|
readplane = addr & 1;
|
||||||
|
if (svga->oddeven_page)
|
||||||
|
{
|
||||||
|
readplane |= 2;
|
||||||
|
}
|
||||||
|
|
||||||
addr &= ~1;
|
addr &= ~1;
|
||||||
addr <<= 2;
|
addr <<= 2;
|
||||||
}
|
}
|
||||||
@@ -1275,16 +1309,23 @@ void svga_write_linear(uint32_t addr, uint8_t val, void *p)
|
|||||||
}
|
}
|
||||||
else if (svga->chain2_write)
|
else if (svga->chain2_write)
|
||||||
{
|
{
|
||||||
if ((svga->gdcreg[6] & 0xC) == 0x4)
|
#if 0
|
||||||
|
if (svga->oddeven_page)
|
||||||
{
|
{
|
||||||
writemask2 &= (svga->oddeven_page ? ~0xe : ~0xb);
|
/* Odd/Even page is 1, mask out plane 2 or 3, according to bit 0 of the address. */
|
||||||
|
writemask2 &= (addr & 1) ? 8 : 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writemask2 &= ~0xa;
|
/* Odd/Even page is 2, mask out plane 0 or 1, according to bit 0 of the address. */
|
||||||
|
writemask2 &= (addr & 1) ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
writemask2 &= ~0xa;
|
||||||
if (addr & 1)
|
if (addr & 1)
|
||||||
writemask2 <<= 1;
|
writemask2 <<= 1;
|
||||||
|
|
||||||
addr &= ~1;
|
addr &= ~1;
|
||||||
addr <<= 2;
|
addr <<= 2;
|
||||||
}
|
}
|
||||||
@@ -1469,7 +1510,12 @@ uint8_t svga_read_linear(uint32_t addr, void *p)
|
|||||||
}
|
}
|
||||||
else if (svga->chain2_read)
|
else if (svga->chain2_read)
|
||||||
{
|
{
|
||||||
readplane = (readplane & 2) | (addr & 1);
|
readplane = addr & 1;
|
||||||
|
if (svga->oddeven_page)
|
||||||
|
{
|
||||||
|
readplane |= 2;
|
||||||
|
}
|
||||||
|
|
||||||
addr &= ~1;
|
addr &= ~1;
|
||||||
addr <<= 2;
|
addr <<= 2;
|
||||||
}
|
}
|
||||||
@@ -1816,6 +1862,28 @@ uint32_t svga_readl_linear(uint32_t addr, void *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
void svga_dump_vram()
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
|
||||||
|
if (ext_vram == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
f = nvrfopen(L"svga_vram.dmp", L"wb");
|
||||||
|
if (f == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite(ext_vram, ext_memsize, 1, f);
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void svga_add_status_info(char *s, int max_len, void *p)
|
void svga_add_status_info(char *s, int max_len, void *p)
|
||||||
{
|
{
|
||||||
svga_t *svga = (svga_t *)p;
|
svga_t *svga = (svga_t *)p;
|
||||||
|
|||||||
@@ -121,3 +121,7 @@ void video_updatetiming();
|
|||||||
|
|
||||||
void hline(BITMAP *b, int x1, int y, int x2, uint32_t col);
|
void hline(BITMAP *b, int x1, int y, int x2, uint32_t col);
|
||||||
void updatewindowsize(int x, int y);
|
void updatewindowsize(int x, int y);
|
||||||
|
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
void svga_dump_vram();
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ uint8_t amstrad_read(uint16_t port, void *priv)
|
|||||||
switch (port)
|
switch (port)
|
||||||
{
|
{
|
||||||
case 0x379:
|
case 0x379:
|
||||||
return 7 | readdacfifo();
|
return 7;
|
||||||
case 0x37a:
|
case 0x37a:
|
||||||
if (romset == ROM_PC1512) return 0x20;
|
if (romset == ROM_PC1512) return 0x20;
|
||||||
if (romset == ROM_PC200) return 0x80;
|
if (romset == ROM_PC200) return 0x80;
|
||||||
|
|||||||
70
src/dac.c
70
src/dac.c
@@ -1,70 +0,0 @@
|
|||||||
/* Copyright holders: Sarah Walker
|
|
||||||
see COPYING for more details
|
|
||||||
*/
|
|
||||||
#include "ibm.h"
|
|
||||||
#include "dac.h"
|
|
||||||
|
|
||||||
uint8_t dac,dac2;
|
|
||||||
uint8_t dacctrl;
|
|
||||||
int lptfifo;
|
|
||||||
uint8_t dssbuffer[16];
|
|
||||||
int dssstart=0,dssend=0;
|
|
||||||
int dssmode=0;
|
|
||||||
|
|
||||||
void writedac(uint16_t addr, uint8_t val)
|
|
||||||
{
|
|
||||||
if (dssmode) dac2=val;
|
|
||||||
else dac=val;
|
|
||||||
}
|
|
||||||
|
|
||||||
void writedacctrl(uint16_t addr, uint8_t val)
|
|
||||||
{
|
|
||||||
if (dacctrl&8 && !(val&8) && (lptfifo!=16))
|
|
||||||
{
|
|
||||||
dssbuffer[dssend++]=dac2;
|
|
||||||
dssend&=15;
|
|
||||||
lptfifo++;
|
|
||||||
}
|
|
||||||
dacctrl=val;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t readdacfifo()
|
|
||||||
{
|
|
||||||
if (lptfifo==16) return 0x40;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pollss()
|
|
||||||
{
|
|
||||||
if (lptfifo)
|
|
||||||
{
|
|
||||||
dac=dssbuffer[dssstart++];
|
|
||||||
dssstart&=15;
|
|
||||||
lptfifo--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int16_t dacbuffer[SOUNDBUFLEN+20];
|
|
||||||
int dacbufferpos=0;
|
|
||||||
void getdacsamp()
|
|
||||||
{
|
|
||||||
if (dacbufferpos<SOUNDBUFLEN+20) dacbuffer[dacbufferpos++]=(((int)(unsigned int)dac)-0x80)*0x20;
|
|
||||||
}
|
|
||||||
|
|
||||||
void adddac(int16_t *p)
|
|
||||||
{
|
|
||||||
int c;
|
|
||||||
if (dacbufferpos>SOUNDBUFLEN) dacbufferpos=SOUNDBUFLEN;
|
|
||||||
for (c=0;c<dacbufferpos;c++)
|
|
||||||
{
|
|
||||||
p[c<<1]+=(dacbuffer[c]);
|
|
||||||
p[(c<<1)+1]+=(dacbuffer[c]);
|
|
||||||
}
|
|
||||||
for (;c<SOUNDBUFLEN;c++)
|
|
||||||
{
|
|
||||||
p[c<<1]+=(dacbuffer[dacbufferpos-1]);
|
|
||||||
p[(c<<1)+1]+=(dacbuffer[dacbufferpos-1]);
|
|
||||||
}
|
|
||||||
dacbufferpos=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
void writedac(uint16_t addr, uint8_t val);
|
|
||||||
void writedacctrl(uint16_t addr, uint8_t val);
|
|
||||||
@@ -4,7 +4,6 @@
|
|||||||
#include "ibm.h"
|
#include "ibm.h"
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
|
||||||
#include "dac.h"
|
|
||||||
#include "lpt.h"
|
#include "lpt.h"
|
||||||
|
|
||||||
static uint8_t lpt1_dat, lpt2_dat;
|
static uint8_t lpt1_dat, lpt2_dat;
|
||||||
@@ -15,11 +14,9 @@ void lpt1_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
switch (port & 3)
|
switch (port & 3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
writedac(port, val);
|
|
||||||
lpt1_dat = val;
|
lpt1_dat = val;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
writedacctrl(port, val);
|
|
||||||
lpt1_ctrl = val;
|
lpt1_ctrl = val;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -30,8 +27,6 @@ uint8_t lpt1_read(uint16_t port, void *priv)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return lpt1_dat;
|
return lpt1_dat;
|
||||||
case 1:
|
|
||||||
return readdacfifo();
|
|
||||||
case 2:
|
case 2:
|
||||||
return lpt1_ctrl;
|
return lpt1_ctrl;
|
||||||
}
|
}
|
||||||
@@ -43,11 +38,9 @@ void lpt2_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
switch (port & 3)
|
switch (port & 3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
writedac(port, val);
|
|
||||||
lpt2_dat = val;
|
lpt2_dat = val;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
writedacctrl(port, val);
|
|
||||||
lpt2_ctrl = val;
|
lpt2_ctrl = val;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -58,8 +51,6 @@ uint8_t lpt2_read(uint16_t port, void *priv)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return lpt2_dat;
|
return lpt2_dat;
|
||||||
case 1:
|
|
||||||
return readdacfifo();
|
|
||||||
case 2:
|
case 2:
|
||||||
return lpt2_ctrl;
|
return lpt2_ctrl;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,6 +216,9 @@
|
|||||||
#ifdef ENABLE_LOG_BREAKPOINT
|
#ifdef ENABLE_LOG_BREAKPOINT
|
||||||
# define IDM_LOG_BREAKPOINT 51206
|
# define IDM_LOG_BREAKPOINT 51206
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
# define IDM_DUMP_VRAM 51207
|
||||||
|
#endif
|
||||||
|
|
||||||
#define IDC_COMBO1 1000
|
#define IDC_COMBO1 1000
|
||||||
#define IDC_COMBOVID 1001
|
#define IDC_COMBOVID 1001
|
||||||
|
|||||||
@@ -1843,6 +1843,12 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_VRAM_DUMP
|
||||||
|
case IDM_DUMP_VRAM:
|
||||||
|
svga_dump_vram();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case IDM_CONFIG_LOAD:
|
case IDM_CONFIG_LOAD:
|
||||||
pause = 1;
|
pause = 1;
|
||||||
if (!file_dlg_st(hwnd, 2174, "", 0))
|
if (!file_dlg_st(hwnd, 2174, "", 0))
|
||||||
|
|||||||
Reference in New Issue
Block a user