Prepared the code for loading custom video ROMs via the new loader.
Various small fixes and cleanups. Applied the relevant upstream commits.
This commit is contained in:
@@ -1,591 +0,0 @@
|
||||
#
|
||||
# 86Box A hypervisor and IBM PC system emulator that specializes in
|
||||
# running old operating systems and software designed for IBM
|
||||
# PC systems and compatibles from 1981 through fairly recent
|
||||
# system designs based on the PCI bus.
|
||||
#
|
||||
# This file is part of the 86Box distribution.
|
||||
#
|
||||
# Makefile for Microsoft Visual Studio (2008) environment.
|
||||
#
|
||||
# Version: @(#)Makefile.MSVS 1.0.1 2017/11/25
|
||||
#
|
||||
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
#
|
||||
|
||||
# Various compile-time options.
|
||||
ifndef STUFF
|
||||
STUFF :=
|
||||
endif
|
||||
|
||||
# Add feature selections here.
|
||||
ifndef EXTRAS
|
||||
EXTRAS :=
|
||||
endif
|
||||
|
||||
# Defaults for several build options (possibly defined in a chained file.)
|
||||
ifndef AUTODEP
|
||||
AUTODEP := n
|
||||
endif
|
||||
ifndef CRASHDUMP
|
||||
CRASHCUMP := n
|
||||
endif
|
||||
ifndef DEBUG
|
||||
DEBUG := n
|
||||
endif
|
||||
ifndef OPTIM
|
||||
OPTIM := n
|
||||
endif
|
||||
ifndef RELEASE
|
||||
RELEASE := n
|
||||
endif
|
||||
ifndef X64
|
||||
X64 := n
|
||||
endif
|
||||
ifndef WX
|
||||
WX := n
|
||||
endif
|
||||
ifndef USB
|
||||
USB := n
|
||||
endif
|
||||
ifndef VNC
|
||||
VNC := n
|
||||
endif
|
||||
ifndef RDP
|
||||
RDP := n
|
||||
endif
|
||||
ifndef DEV_BUILD
|
||||
DEV_BUILD := n
|
||||
endif
|
||||
ifndef DEV_BRANCH
|
||||
DEV_BRANCH := n
|
||||
endif
|
||||
ifndef CIRRUS
|
||||
CIRRUS := n
|
||||
endif
|
||||
ifndef NE1000
|
||||
NE1000 := n
|
||||
endif
|
||||
ifndef NV_RIVA
|
||||
NV_RIVA := n
|
||||
endif
|
||||
ifndef OPENAL
|
||||
OPENAL := y
|
||||
endif
|
||||
ifndef FLUIDSYNTH
|
||||
FLUIDSYNTH := y
|
||||
endif
|
||||
ifndef MUNT
|
||||
MUNT := y
|
||||
endif
|
||||
ifndef PAS16
|
||||
PAS16 := n
|
||||
endif
|
||||
ifndef DYNAREC
|
||||
DYNAREC := y
|
||||
endif
|
||||
|
||||
|
||||
# Name of the executable.
|
||||
ifndef PROG
|
||||
ifneq ($(WX), n)
|
||||
PROG := Wx86Box
|
||||
else
|
||||
PROG := 86Box
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(DEV_BUILD), y)
|
||||
DEBUG := y
|
||||
DEV_BRANCH := y
|
||||
CIRRUS := y
|
||||
NE1000 := y
|
||||
NV_RIVA := y
|
||||
PAS16 := y
|
||||
VNC := y
|
||||
endif
|
||||
|
||||
# WxWidgets basic info. Extract using the config program.
|
||||
ifneq ($(WX), n)
|
||||
EXPATH += wx
|
||||
WX_CONFIG := wx-config.exe
|
||||
ifeq ($(WX), y)
|
||||
WX_PATH := C:/MinGW32/WxWidgets
|
||||
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
||||
-I$(WX_PATH)/include/wx-3.0 \
|
||||
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
||||
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
||||
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
||||
-lwx_mswu-3.0.dll \
|
||||
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
||||
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
||||
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
||||
endif
|
||||
ifeq ($(WX), static)
|
||||
WX_PATH := C:/MinGW32/WxWidgets
|
||||
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
|
||||
-I$(WX_PATH)/include/wx-3.0 \
|
||||
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
|
||||
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
|
||||
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
|
||||
-lwx_mswu-3.0 -lwxscintilla-3.0 \
|
||||
-lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 \
|
||||
-lwxregexu-3.0 -lwxexpat-3.0 \
|
||||
-lrpcrt4 -loleaut32 -lole32 -luuid \
|
||||
-lwinspool -lwinmm -lshell32 -lcomctl32 \
|
||||
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
# Where is the the DirectX SDK?
|
||||
DIRECTX = N:\DEV\Windows\DX9
|
||||
DXINC = -I$(DIRECTX)\Include
|
||||
DXLIB = -L$(DIRECTX)\Lib
|
||||
|
||||
|
||||
#########################################################################
|
||||
# Nothing should need changing from here on.. #
|
||||
#########################################################################
|
||||
VPATH := $(EXPATH) . cpu \
|
||||
cdrom disk floppy game machine \
|
||||
sound \
|
||||
sound/munt sound/munt/c_interface sound/munt/sha1 \
|
||||
sound/munt/srchelper \
|
||||
sound/resid-fp \
|
||||
scsi video lzf network network/slirp win
|
||||
|
||||
|
||||
# Set up the correct toolchain flags.
|
||||
# Microsoft Windows, Intel PC, Microsoft Visual Studio 2008.
|
||||
OPTS = -D_CRT_SECURE_NO_WARNINGS -D__MSC__ -D_WIN32 \
|
||||
-Dinline=
|
||||
ifeq ($(X64), y)
|
||||
OPTS += -D_WIN64
|
||||
CPP := cl
|
||||
CC := cl
|
||||
else
|
||||
CPP := cl
|
||||
CC := cl
|
||||
endif
|
||||
LD = link -nologo
|
||||
AR = lib
|
||||
RC = rc -nologo
|
||||
DEPS = -MMD -MF $*.d -c $<
|
||||
DEPFILE := win/.depends
|
||||
|
||||
OPTS += -nologo $(EXTRAS) $(STUFF)
|
||||
LOPTS := -nologo
|
||||
ifdef EXFLAGS
|
||||
OPTS += $(EXFLAGS)
|
||||
endif
|
||||
ifdef EXINC
|
||||
OPTS += -I$(EXINC)
|
||||
endif
|
||||
ifeq ($(X64), y)
|
||||
ifeq ($(OPTIM), y)
|
||||
DFLAGS := #-march=native
|
||||
else
|
||||
DFLAGS :=
|
||||
endif
|
||||
else
|
||||
ifeq ($(OPTIM), y)
|
||||
DFLAGS := #-march=native
|
||||
else
|
||||
DFLAGS := #-march=i686
|
||||
endif
|
||||
endif
|
||||
ifeq ($(DEBUG), y)
|
||||
DFLAGS += -Z7 -DDEBUG
|
||||
LOPTS += -debug
|
||||
AOPTIM :=
|
||||
ifndef COPTIM
|
||||
COPTIM := -Od
|
||||
endif
|
||||
else
|
||||
ifeq ($(OPTIM), y)
|
||||
AOPTIM := #-mtune=native
|
||||
ifndef COPTIM
|
||||
COPTIM := -O2
|
||||
endif
|
||||
else
|
||||
ifndef COPTIM
|
||||
COPTIM := -O2
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
AFLAGS := #-msse -msse2 -mfpmath=sse
|
||||
RFLAGS :=
|
||||
ifeq ($(CRASHDUMP), y)
|
||||
OPTS += -DUSE_CRASHDUMP
|
||||
endif
|
||||
ifeq ($(RELEASE), y)
|
||||
OPTS += -DRELEASE_BUILD
|
||||
RFLAGS += -DRELEASE_BUILD
|
||||
endif
|
||||
ifeq ($(VRAMDUMP), y)
|
||||
OPTS += -DENABLE_VRAM_DUMP
|
||||
RFLAGS += -DENABLE_VRAM_DUMP
|
||||
endif
|
||||
ifeq ($(X64), y)
|
||||
PLATCG := codegen_x86-64.obj
|
||||
CGOPS := codegen_ops_x86-64.h
|
||||
VCG := vid_voodoo_codegen_x86-64.h
|
||||
else
|
||||
PLATCG := codegen_x86.obj
|
||||
CGOPS := codegen_ops_x86.h
|
||||
VCG := vid_voodoo_codegen_x86.h
|
||||
endif
|
||||
|
||||
# Optional modules.
|
||||
ifeq ($(DYNAREC), y)
|
||||
OPTS += -DUSE_DYNAREC
|
||||
RFLAGS += -DUSE_DYNAREC
|
||||
DYNARECOBJ := 386_dynarec_ops.obj \
|
||||
codegen.obj \
|
||||
codegen_ops.obj \
|
||||
codegen_timing_common.obj codegen_timing_486.obj \
|
||||
codegen_timing_686.obj codegen_timing_pentium.obj \
|
||||
codegen_timing_winchip.obj $(PLATCG)
|
||||
endif
|
||||
|
||||
ifneq ($(WX), n)
|
||||
OPTS += -DUSE_WX $(WX_FLAGS)
|
||||
LIBS += $(WX_LIBS)
|
||||
UIOBJ := wx_main.obj wx_ui.obj wx_stbar.obj wx_render.obj
|
||||
else
|
||||
UIOBJ := win_ui.obj win_ddraw.obj win_d3d.obj win_png.obj \
|
||||
win_dialog.obj win_about.obj win_status.obj win_stbar.obj \
|
||||
win_settings.obj win_devconf.obj win_jsconf.obj
|
||||
endif
|
||||
|
||||
ifeq ($(OPENAL), y)
|
||||
OPTS += -DUSE_OPENAL
|
||||
endif
|
||||
ifeq ($(FLUIDSYNTH), y)
|
||||
OPTS += -DUSE_FLUIDSYNTH
|
||||
FSYNTHOBJ := midi_fluidsynth.obj
|
||||
endif
|
||||
|
||||
ifeq ($(MUNT), y)
|
||||
OPTS += -DUSE_MUNT
|
||||
MUNTOBJ := midi_mt32.obj \
|
||||
Analog.obj BReverbModel.obj File.obj FileStream.obj LA32Ramp.obj \
|
||||
LA32FloatWaveGenerator.obj LA32WaveGenerator.obj \
|
||||
MidiStreamParser.obj Part.obj Partial.obj PartialManager.obj \
|
||||
Poly.obj ROMInfo.obj SampleRateConverter_dummy.obj Synth.obj \
|
||||
Tables.obj TVA.obj TVF.obj TVP.obj sha1.obj c_interface.obj
|
||||
endif
|
||||
|
||||
ifeq ($(VNC), y)
|
||||
OPTS += -DUSE_VNC
|
||||
RFLAGS += -DUSE_VNC
|
||||
ifneq ($(VNC_PATH), )
|
||||
OPTS += -I$(VNC_PATH)\INCLUDE
|
||||
VNCLIB := -L$(VNC_PATH)\LIB
|
||||
endif
|
||||
VNCLIB += -lvncserver
|
||||
VNCOBJ := vnc.obj vnc_keymap.obj
|
||||
endif
|
||||
|
||||
ifeq ($(RDP), y)
|
||||
OPTS += -DUSE_RDP
|
||||
RFLAGS += -DUSE_RDP
|
||||
ifneq ($(RDP_PATH), )
|
||||
OPTS += -I$(RDP_PATH)\INCLUDE
|
||||
RDPLIB := -L$(RDP_PATH)\LIB
|
||||
endif
|
||||
RDPLIB += -lrdp
|
||||
RDPOBJ := rdp.obj
|
||||
endif
|
||||
|
||||
# Options for the DEV branch.
|
||||
ifeq ($(DEV_BRANCH), y)
|
||||
OPTS += -DDEV_BRANCH
|
||||
DEVBROBJ :=
|
||||
|
||||
ifeq ($(CIRRUS), y)
|
||||
OPTS += -DUSE_CIRRUS
|
||||
DEVBROBJ += vid_cl_gd.obj vid_cl_gd_blit.obj vid_cl_ramdac.obj
|
||||
endif
|
||||
|
||||
ifeq ($(NE1000), y)
|
||||
OPTS += -DUSE_NE1000
|
||||
endif
|
||||
|
||||
ifeq ($(NV_RIVA), y)
|
||||
OPTS += -DUSE_RIVA
|
||||
DEVBROBJ += vid_nv_riva128.obj
|
||||
endif
|
||||
|
||||
ifeq ($(PAS16), y)
|
||||
OPTS += -DUSE_PAS16
|
||||
DEVBROBJ += snd_pas16.obj
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
|
||||
# Options for works-in-progress.
|
||||
ifndef SERIAL
|
||||
SERIAL := serial.obj
|
||||
endif
|
||||
|
||||
|
||||
# Final versions of the toolchain flags.
|
||||
CFLAGS := -Iwin/msvs $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||
$(AFLAGS) -W4 -Gs
|
||||
CXXFLAGS := -Iwin/msvs $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||
$(AFLAGS) -fno-strict-aliasing -fvisibility=hidden \
|
||||
-Wall -Wundef -fvisibility-inlines-hidden \
|
||||
-Wunused-parameter -Wno-ctor-dtor-privacy \
|
||||
-Woverloaded-virtual
|
||||
|
||||
|
||||
#########################################################################
|
||||
# Create the (final) list of objects to build. #
|
||||
#########################################################################
|
||||
MAINOBJ := pc.obj config.obj random.obj timer.obj io.obj dma.obj nmi.obj pic.obj \
|
||||
pit.obj ppi.obj pci.obj mca.obj mcr.obj mem.obj memregs.obj rom.obj \
|
||||
device.obj nvr.obj nvr_at.obj nvr_ps2.obj $(VNCOBJ) $(RDPOBJ) \
|
||||
intel.obj intel_flash.obj intel_piix.obj intel_piix4.obj intel_sio.obj
|
||||
|
||||
CPUOBJ := cpu.obj cpu_table.obj \
|
||||
808x.obj 386.obj x86seg.obj x87.obj \
|
||||
386_dynarec.obj $(DYNARECOBJ)
|
||||
|
||||
MCHOBJ := machine.obj machine_table.obj \
|
||||
m_amstrad.obj m_europc.obj m_europc_hdc.obj \
|
||||
m_olivetti_m24.obj m_tandy.obj \
|
||||
m_xt.obj m_xt_compaq.obj m_xt_laserxt.obj \
|
||||
m_at.obj m_at_ali1429.obj m_at_commodore.obj \
|
||||
m_at_neat.obj m_at_headland.obj \
|
||||
m_at_opti495.obj m_at_scat.obj \
|
||||
m_at_compaq.obj m_at_wd76c10.obj \
|
||||
m_at_sis_85c471.obj m_at_sis_85c496.obj \
|
||||
m_at_430lx_nx.obj m_at_430fx.obj \
|
||||
m_at_430hx.obj m_at_430vx.obj \
|
||||
m_at_440fx.obj \
|
||||
m_pcjr.obj m_ps1.obj m_ps2_isa.obj m_ps2_mca.obj
|
||||
|
||||
DEVOBJ := bugger.obj lpt.obj $(SERIAL) \
|
||||
sio_detect.obj \
|
||||
sio_fdc37c66x.obj sio_fdc37c669.obj sio_fdc37c93x.obj \
|
||||
sio_pc87306.obj sio_w83877f.obj sio_um8669f.obj \
|
||||
keyboard.obj \
|
||||
keyboard_xt.obj keyboard_at.obj \
|
||||
gameport.obj \
|
||||
joystick_standard.obj joystick_ch_flightstick_pro.obj \
|
||||
joystick_sw_pad.obj joystick_tm_fcs.obj \
|
||||
mouse.obj \
|
||||
mouse_serial.obj mouse_ps2.obj mouse_bus.obj
|
||||
|
||||
FDDOBJ := fdd.obj fdc.obj fdi2raw.obj \
|
||||
floppy.obj floppy_common.obj floppy_86f.obj \
|
||||
floppy_fdi.obj floppy_imd.obj floppy_img.obj floppy_json.obj \
|
||||
floppy_td0.obj
|
||||
|
||||
HDDOBJ := hdd.obj \
|
||||
hdd_image.obj hdd_table.obj \
|
||||
hdc.obj \
|
||||
hdc_esdi_at.obj hdc_esdi_mca.obj hdc_ide.obj hdc_mfm_at.obj \
|
||||
hdc_mfm_xt.obj hdc_xtide.obj
|
||||
|
||||
CDROMOBJ := cdrom.obj \
|
||||
cdrom_dosbox.obj cdrom_image.obj cdrom_null.obj
|
||||
|
||||
ifeq ($(USB), y)
|
||||
USBOBJ := usb.obj
|
||||
endif
|
||||
|
||||
SCSIOBJ := scsi.obj \
|
||||
scsi_bus.obj scsi_device.obj \
|
||||
scsi_disk.obj \
|
||||
scsi_x54x.obj \
|
||||
scsi_buslogic.obj scsi_aha154x.obj \
|
||||
scsi_ncr5380.obj
|
||||
|
||||
NETOBJ := network.obj \
|
||||
net_pcap.obj \
|
||||
net_slirp.obj \
|
||||
bootp.obj ip_icmp.obj misc.obj socket.obj tcp_timer.obj cksum.obj \
|
||||
ip_input.obj queue.obj tcp_input.obj debug.obj ip_output.obj \
|
||||
sbuf.obj tcp_output.obj udp.obj if.obj mbuf.obj slirp.obj tcp_subr.obj \
|
||||
net_ne2000.obj
|
||||
|
||||
SNDOBJ := sound.obj \
|
||||
openal.obj \
|
||||
dbopl.obj nukedopl.obj \
|
||||
snd_resid.obj \
|
||||
convolve.obj convolve-sse.obj envelope.obj extfilt.obj \
|
||||
filter.obj pot.obj sid.obj voice.obj wave6581__ST.obj \
|
||||
wave6581_P_T.obj wave6581_PS_.obj wave6581_PST.obj \
|
||||
wave8580__ST.obj wave8580_P_T.obj wave8580_PS_.obj \
|
||||
wave8580_PST.obj wave.obj \
|
||||
midi.obj $(FSYNTHOBJ) $(MUNTOBJ) \
|
||||
midi_system.obj \
|
||||
snd_speaker.obj \
|
||||
snd_pssj.obj \
|
||||
snd_lpt_dac.obj snd_lpt_dss.obj \
|
||||
snd_adlib.obj snd_adlibgold.obj snd_ad1848.obj snd_audiopci.obj \
|
||||
snd_sb.obj snd_sb_dsp.obj snd_cms.obj snd_dbopl.obj \
|
||||
snd_emu8k.obj snd_gus.obj snd_opl.obj \
|
||||
snd_mpu401.obj \
|
||||
snd_sn76489.obj snd_ssi2001.obj snd_wss.obj \
|
||||
snd_ym7128.obj
|
||||
|
||||
VIDOBJ := video.obj \
|
||||
vid_table.obj \
|
||||
vid_cga.obj vid_cga_comp.obj vid_mda.obj \
|
||||
vid_ega.obj vid_ega_render.obj \
|
||||
vid_vga.obj vid_svga.obj vid_svga_render.obj \
|
||||
vid_hercules.obj vid_herculesplus.obj vid_incolor.obj \
|
||||
vid_colorplus.obj \
|
||||
vid_genius.obj \
|
||||
vid_s3.obj vid_s3_virge.obj \
|
||||
vid_et4000.obj vid_et4000w32.obj vid_icd2061.obj \
|
||||
vid_oti067.obj \
|
||||
vid_paradise.obj \
|
||||
vid_tvga.obj vid_tgui9440.obj vid_tkd8001_ramdac.obj \
|
||||
vid_ati_eeprom.obj vid_ati18800.obj vid_ati28800.obj \
|
||||
vid_ati68860_ramdac.obj vid_ati_mach64.obj \
|
||||
vid_ics2595.obj \
|
||||
vid_sc1502x_ramdac.obj \
|
||||
vid_sdac_ramdac.obj \
|
||||
vid_stg_ramdac.obj \
|
||||
vid_ti_cf62011.obj \
|
||||
vid_wy700.obj \
|
||||
vid_voodoo.obj
|
||||
|
||||
PLATOBJ := win.obj \
|
||||
win_crashdump.obj win_dynld.obj win_thread.obj $(WSERIAL) \
|
||||
win_cdrom.obj win_cdrom_ioctl.obj win_keyboard.obj \
|
||||
win_mouse.obj win_joystick.obj win_midi.obj
|
||||
|
||||
OBJ := $(MAINOBJ) $(CPUOBJ) $(MCHOBJ) $(DEVOBJ) \
|
||||
$(FDDOBJ) $(CDROMOBJ) $(HDDOBJ) \
|
||||
$(USBOBJ) $(NETOBJ) $(SCSIOBJ) $(SNDOBJ) $(VIDOBJ) \
|
||||
$(PLATOBJ) $(UIOBJ) $(DEVBROBJ)
|
||||
ifdef EXOBJ
|
||||
OBJ += $(EXOBJ)
|
||||
endif
|
||||
|
||||
LZFOBJ := lzf_c.obj lzf_d.obj
|
||||
|
||||
LIBS := -mwindows \
|
||||
-lopenal.dll -lopelal \
|
||||
-lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 \
|
||||
-lcomctl32 -lwinmm
|
||||
ifeq ($(VNC), y)
|
||||
LIBS += $(VNCLIB) -lws2_32 -lz
|
||||
endif
|
||||
ifeq ($(RDP), y)
|
||||
LIBS += $(RDPLIB)
|
||||
endif
|
||||
ifneq ($(WX), n)
|
||||
LIBS += $(WX_LIBS) -lz -lm
|
||||
endif
|
||||
LIBS += -lkernel32 -lwsock32 -liphlpapi -lpsapi
|
||||
LIBS += -lpthread -static -lstdc++ -lgcc
|
||||
LIBS += -Wl,--large-address-aware
|
||||
|
||||
|
||||
# Build module rules.
|
||||
ifeq ($(AUTODEP), y)
|
||||
%.obj: %.c
|
||||
@echo $<
|
||||
@$(CC) $(CFLAGS) $(DEPS) -c $<
|
||||
|
||||
%.obj: %.cc
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
||||
|
||||
%.obj: %.cpp
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) $(DEPS) -c $<
|
||||
else
|
||||
%.obj: %.c
|
||||
@echo $<
|
||||
@$(CC) $(CFLAGS) -c $<
|
||||
|
||||
%.obj: %.cc
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) -c $<
|
||||
|
||||
%.obj: %.cpp
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) -c $<
|
||||
|
||||
%.d: %.c $(wildcard $*.d)
|
||||
@echo $<
|
||||
@$(CC) $(CFLAGS) $(DEPS) -E $< >NUL
|
||||
|
||||
%.d: %.cc $(wildcard $*.d)
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL
|
||||
|
||||
%.d: %.cpp $(wildcard $*.d)
|
||||
@echo $<
|
||||
@$(CPP) $(CXXFLAGS) $(DEPS) -E $< >NUL
|
||||
endif
|
||||
|
||||
|
||||
all: $(PROG).exe pcap_if.exe
|
||||
|
||||
|
||||
86Box.res: 86Box.rc
|
||||
@echo Processing $<
|
||||
@$(RC) $(RFLAGS) $(EXTRAS) -r $<
|
||||
|
||||
$(PROG).exe: $(OBJ) $(LZFOBJ) 86Box.res
|
||||
@echo Linking $(PROG).exe ..
|
||||
@$(LD) -OUT:$(PROG) $(OBJ) $(LZFOBJ) 86Box.res $(LIBS)
|
||||
|
||||
pcap_if.res: pcap_if.rc
|
||||
@echo Processing $<
|
||||
@$(RC) $(RFLAGS) $(EXTRAS) -r $<
|
||||
|
||||
pcap_if.exe: pcap_if.obj win_dynld.obj pcap_if.res
|
||||
@echo Linking pcap_if.exe ..
|
||||
@$(LD) -OUT:pcap_if pcap_if.obj win_dynld.obj pcap_if.res
|
||||
|
||||
hello.exe: hello.obj
|
||||
$(CXX) $(LDFLAGS) -o hello.exe hello.obj $(WXLIBS) $(LIBS)
|
||||
|
||||
|
||||
clean:
|
||||
@echo Cleaning objects..
|
||||
@-rm -f *.obj 2>NUL
|
||||
@-rm -f *.res 2>NUL
|
||||
|
||||
clobber: clean
|
||||
@echo Cleaning executables..
|
||||
@-rm -f *.d 2>NUL
|
||||
@-rm -f *.exe 2>NUL
|
||||
# @-rm -f $(DEPFILE) 2>NUL
|
||||
|
||||
ifneq ($(AUTODEP), y)
|
||||
depclean:
|
||||
@-rm -f $(DEPFILE) 2>NUL
|
||||
@echo Creating dependencies..
|
||||
@echo # Run "make depends" to re-create this file. >$(DEPFILE)
|
||||
|
||||
depends: DEPOBJ=$(OBJ:%.obj=%.d)
|
||||
depends: depclean $(OBJ:%.obj=%.d)
|
||||
@-cat $(DEPOBJ) >>$(DEPFILE)
|
||||
@-rm -f $(DEPOBJ)
|
||||
|
||||
$(DEPFILE):
|
||||
endif
|
||||
|
||||
|
||||
# Module dependencies.
|
||||
ifeq ($(AUTODEP), y)
|
||||
#-include $(OBJ:%.obj=%.d) (better, but sloooowwwww)
|
||||
-include *.d
|
||||
else
|
||||
include $(wildcard $(DEPFILE))
|
||||
endif
|
||||
|
||||
|
||||
# End of Makefile.MSVS.
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
# Makefile for Windows systems using the MinGW32 environment.
|
||||
#
|
||||
# Version: @(#)Makefile.mingw 1.0.14 2018/03/17
|
||||
# Version: @(#)Makefile.mingw 1.0.15 2018/03/20
|
||||
#
|
||||
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
#
|
||||
@@ -472,10 +472,10 @@ CXXFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
|
||||
#########################################################################
|
||||
# Create the (final) list of objects to build. #
|
||||
#########################################################################
|
||||
MAINOBJ := pc.o config.o random.o timer.o io.o dma.o nmi.o pic.o \
|
||||
pit.o ppi.o pci.o mca.o mcr.o mem.o memregs.o rom.o \
|
||||
rom_load.o device.o nvr.o nvr_at.o nvr_ps2.o \
|
||||
$(VNCOBJ) $(RDPOBJ)
|
||||
MAINOBJ := pc.o config.o \
|
||||
random.o timer.o io.o dma.o nmi.o pic.o pit.o ppi.o \
|
||||
pci.o mca.o mcr.o mem.o memregs.o rom.o rom_load.o \
|
||||
device.o nvr.o nvr_at.o nvr_ps2.o $(VNCOBJ) $(RDPOBJ)
|
||||
|
||||
INTELOBJ := intel.o \
|
||||
intel_flash.o \
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Platform main support module for Windows.
|
||||
*
|
||||
* Version: @(#)win.c 1.0.8 2018/03/17
|
||||
* Version: @(#)win.c 1.0.9 2018/03/20
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Handle the About dialog.
|
||||
*
|
||||
* Version: @(#)win_about.c 1.0.3 2018/03/07
|
||||
* Version: @(#)win_about.c 1.0.5 2018/03/20
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include "../emu.h"
|
||||
#include "../version.h"
|
||||
#include "../plat.h"
|
||||
#include "win.h"
|
||||
|
||||
@@ -93,7 +94,7 @@ AboutDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
(WPARAM)NULL, (LPARAM)emu_title);
|
||||
set_font_bold(hdlg, IDT_TITLE);
|
||||
|
||||
sprintf(temp, "v%s", emu_version);
|
||||
sprintf(temp, "%s", emu_fullversion);
|
||||
SendDlgItemMessage(hdlg, IDT_VERSION, WM_SETTEXT,
|
||||
(WPARAM)NULL, (LPARAM)temp);
|
||||
break;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Implementation of the CD-ROM host drive IOCTL interface for
|
||||
* Windows using SCSI Passthrough Direct.
|
||||
*
|
||||
* Version: @(#)cdrom_ioctl.c 1.0.7 2018/03/20
|
||||
* Version: @(#)cdrom_ioctl.c 1.0.8 2018/03/21
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -44,8 +44,10 @@
|
||||
#include <ntddscsi.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
#define HAVE_STDARG_H
|
||||
#include "../emu.h"
|
||||
#include "../device.h"
|
||||
#include "../scsi/scsi.h"
|
||||
@@ -72,8 +74,8 @@ typedef struct {
|
||||
|
||||
cdrom_ioctl_windows_t cdrom_ioctl_windows[CDROM_NUM];
|
||||
|
||||
#ifdef ENABLE_CDROM_LOG
|
||||
int cdrom_ioctl_do_log = ENABLE_CDROM_LOG;
|
||||
#ifdef ENABLE_CDROM_IOCTL_LOG
|
||||
int cdrom_ioctl_do_log = ENABLE_CDROM_IOCTL_LOG;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -83,13 +85,13 @@ static CDROM ioctl_cdrom;
|
||||
static void
|
||||
cdrom_ioctl_log(const char *format, ...)
|
||||
{
|
||||
#ifdef ENABLE_CDROM_LOG
|
||||
#ifdef ENABLE_CDROM_IOCTL_LOG
|
||||
va_list ap;
|
||||
|
||||
if (cdrom_ioctl_do_log) {
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vfprintf(stdlog, format, ap);
|
||||
pclog_ex(format, ap);
|
||||
va_end(ap);
|
||||
fflush(stdlog);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -107,15 +109,19 @@ void ioctl_audio_callback(uint8_t id, int16_t *output, int len)
|
||||
if (dev->cd_state == CD_PLAYING)
|
||||
{
|
||||
dev->seek_pos += (len >> 11);
|
||||
}
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): playing but mute\n");
|
||||
} else
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): not playing\n");
|
||||
cdrom_ioctl_windows[id].is_playing = 0;
|
||||
memset(output, 0, len * 2);
|
||||
return;
|
||||
}
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): dev->cd_buflen = %i, len = %i\n", dev->cd_buflen, len);
|
||||
while (dev->cd_buflen < len)
|
||||
{
|
||||
if (dev->seek_pos < dev->cd_end)
|
||||
{
|
||||
in.DiskOffset.LowPart = (dev->seek_pos - 150) * 2048;
|
||||
in.DiskOffset.LowPart = dev->seek_pos * 2048;
|
||||
in.DiskOffset.HighPart = 0;
|
||||
in.SectorCount = 1;
|
||||
in.TrackMode = CDDA;
|
||||
@@ -126,11 +132,13 @@ void ioctl_audio_callback(uint8_t id, int16_t *output, int len)
|
||||
ioctl_close(id);
|
||||
dev->cd_state = CD_STOPPED;
|
||||
dev->cd_buflen = len;
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): read sector error, stopped\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
dev->seek_pos++;
|
||||
dev->cd_buflen += (2352 / 2);
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): dev->seek_pos = %i\n", dev->seek_pos);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -140,6 +148,7 @@ void ioctl_audio_callback(uint8_t id, int16_t *output, int len)
|
||||
ioctl_close(id);
|
||||
dev->cd_state = CD_STOPPED;
|
||||
dev->cd_buflen = len;
|
||||
cdrom_ioctl_log("ioctl_audio_callback(): reached the end\n");
|
||||
}
|
||||
}
|
||||
memcpy(output, dev->cd_buffer, len * 2);
|
||||
@@ -165,27 +174,32 @@ static int get_track_nr(uint8_t id, uint32_t pos)
|
||||
if (dev->disc_changed)
|
||||
{
|
||||
return 0;
|
||||
cdrom_ioctl_log("get_track_nr(): disc changed\n");
|
||||
}
|
||||
|
||||
if (cdrom_ioctl[id].last_track_pos == pos)
|
||||
{
|
||||
cdrom_ioctl_log("get_track_nr(): cdrom_ioctl[id].last_track_pos == pos\n");
|
||||
return cdrom_ioctl[id].last_track_nr;
|
||||
}
|
||||
|
||||
for (c = cdrom_ioctl_windows[id].toc.FirstTrack; c < cdrom_ioctl_windows[id].toc.LastTrack; c++)
|
||||
/* for (c = cdrom_ioctl_windows[id].toc.FirstTrack; c < cdrom_ioctl_windows[id].toc.LastTrack; c++) */
|
||||
for (c = 0; c < cdrom_ioctl_windows[id].toc.LastTrack; c++)
|
||||
{
|
||||
uint32_t track_address = cdrom_ioctl_windows[id].toc.TrackData[c].Address[3] +
|
||||
(cdrom_ioctl_windows[id].toc.TrackData[c].Address[2] * 75) +
|
||||
(cdrom_ioctl_windows[id].toc.TrackData[c].Address[1] * 75 * 60);
|
||||
uint32_t track_address = MSFtoLBA(cdrom_ioctl_windows[id].toc.TrackData[c].Address[1],
|
||||
cdrom_ioctl_windows[id].toc.TrackData[c].Address[2],
|
||||
cdrom_ioctl_windows[id].toc.TrackData[c].Address[3]) - 150;
|
||||
|
||||
if (track_address <= pos)
|
||||
{
|
||||
cdrom_ioctl_log("get_track_nr(): track = %i\n", c);
|
||||
track = c;
|
||||
}
|
||||
}
|
||||
cdrom_ioctl[id].last_track_pos = pos;
|
||||
cdrom_ioctl[id].last_track_nr = track;
|
||||
|
||||
cdrom_ioctl_log("get_track_nr(): return %i\n", track);
|
||||
return track;
|
||||
}
|
||||
|
||||
@@ -218,6 +232,7 @@ static void ioctl_playaudio(uint8_t id, uint32_t pos, uint32_t len, int ismsf)
|
||||
{
|
||||
return;
|
||||
}
|
||||
cdrom_ioctl_log("Play audio - %08X %08X %i\n", pos, len, ismsf);
|
||||
if (ismsf == 2)
|
||||
{
|
||||
start_msf = get_track_msf(id, pos);
|
||||
@@ -233,11 +248,11 @@ static void ioctl_playaudio(uint8_t id, uint32_t pos, uint32_t len, int ismsf)
|
||||
m = (start_msf >> 16) & 0xff;
|
||||
s = (start_msf >> 8) & 0xff;
|
||||
f = start_msf & 0xff;
|
||||
pos = MSFtoLBA(m, s, f);
|
||||
pos = MSFtoLBA(m, s, f) - 150;
|
||||
m = (end_msf >> 16) & 0xff;
|
||||
s = (end_msf >> 8) & 0xff;
|
||||
f = end_msf & 0xff;
|
||||
len = MSFtoLBA(m, s, f);
|
||||
len = MSFtoLBA(m, s, f) - 150;
|
||||
}
|
||||
else if (ismsf == 1)
|
||||
{
|
||||
@@ -252,13 +267,13 @@ static void ioctl_playaudio(uint8_t id, uint32_t pos, uint32_t len, int ismsf)
|
||||
}
|
||||
else
|
||||
{
|
||||
pos = MSFtoLBA(m, s, f);
|
||||
pos = MSFtoLBA(m, s, f) - 150;
|
||||
}
|
||||
|
||||
m = (len >> 16) & 0xff;
|
||||
s = (len >> 8) & 0xff;
|
||||
f = len & 0xff;
|
||||
len = MSFtoLBA(m, s, f);
|
||||
len = MSFtoLBA(m, s, f) - 150;
|
||||
}
|
||||
else if (ismsf == 0)
|
||||
{
|
||||
@@ -271,11 +286,7 @@ static void ioctl_playaudio(uint8_t id, uint32_t pos, uint32_t len, int ismsf)
|
||||
}
|
||||
dev->seek_pos = pos;
|
||||
dev->cd_end = len;
|
||||
if (dev->seek_pos < 150)
|
||||
{
|
||||
/* Adjust because the host expects a minimum adjusted LBA of 0 which is equivalent to an absolute LBA of 150. */
|
||||
dev->seek_pos = 150;
|
||||
}
|
||||
|
||||
if (!cdrom_ioctl_windows[id].is_playing)
|
||||
{
|
||||
ioctl_hopen(id);
|
||||
@@ -485,9 +496,11 @@ static uint8_t ioctl_getcurrentsubchannel(uint8_t id, uint8_t *b, int msf)
|
||||
if (dev->cd_state == CD_PLAYING || dev->cd_state == CD_PAUSED)
|
||||
{
|
||||
track = get_track_nr(id, cdpos);
|
||||
track_address = cdrom_ioctl_windows[id].toc.TrackData[track].Address[3] + (cdrom_ioctl_windows[id].toc.TrackData[track].Address[2] * 75) + (cdrom_ioctl_windows[id].toc.TrackData[track].Address[1] * 75 * 60);
|
||||
track_address = MSFtoLBA(cdrom_ioctl_windows[id].toc.TrackData[track].Address[1],
|
||||
cdrom_ioctl_windows[id].toc.TrackData[track].Address[2],
|
||||
cdrom_ioctl_windows[id].toc.TrackData[track].Address[3]) - 150;
|
||||
|
||||
cdrom_ioctl_log("cdpos = %i, track = %i, track_address = %i\n", cdpos, track, track_address);
|
||||
cdrom_ioctl_log("ioctl_getcurrentsubchannel(): cdpos = %i, track = %i, track_address = %i\n", cdpos, track, track_address);
|
||||
|
||||
b[pos++] = sub.CurrentPosition.Control;
|
||||
b[pos++] = track + 1;
|
||||
@@ -501,7 +514,7 @@ static uint8_t ioctl_getcurrentsubchannel(uint8_t id, uint8_t *b, int msf)
|
||||
b[pos + 1] = (uint8_t)dat;
|
||||
b[pos] = 0;
|
||||
pos += 4;
|
||||
dat = cdpos - track_address - 150;
|
||||
dat = cdpos - track_address;
|
||||
b[pos + 3] = (uint8_t)(dat % 75); dat /= 75;
|
||||
b[pos + 2] = (uint8_t)(dat % 60); dat /= 60;
|
||||
b[pos + 1] = (uint8_t)dat;
|
||||
@@ -545,12 +558,12 @@ static uint8_t ioctl_getcurrentsubchannel(uint8_t id, uint8_t *b, int msf)
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t temp = MSFtoLBA(sub.CurrentPosition.AbsoluteAddress[1], sub.CurrentPosition.AbsoluteAddress[2], sub.CurrentPosition.AbsoluteAddress[3]);
|
||||
uint32_t temp = MSFtoLBA(sub.CurrentPosition.AbsoluteAddress[1], sub.CurrentPosition.AbsoluteAddress[2], sub.CurrentPosition.AbsoluteAddress[3]) - 150;
|
||||
b[pos++] = temp >> 24;
|
||||
b[pos++] = temp >> 16;
|
||||
b[pos++] = temp >> 8;
|
||||
b[pos++] = temp;
|
||||
temp = MSFtoLBA(sub.CurrentPosition.TrackRelativeAddress[1], sub.CurrentPosition.TrackRelativeAddress[2], sub.CurrentPosition.TrackRelativeAddress[3]);
|
||||
temp = MSFtoLBA(sub.CurrentPosition.TrackRelativeAddress[1], sub.CurrentPosition.TrackRelativeAddress[2], sub.CurrentPosition.TrackRelativeAddress[3]) - 150;
|
||||
b[pos++] = temp >> 24;
|
||||
b[pos++] = temp >> 16;
|
||||
b[pos++] = temp >> 8;
|
||||
@@ -1296,6 +1309,7 @@ int ioctl_open(uint8_t id, char d)
|
||||
cdrom_ioctl_windows[id].hIOCTL = CreateFile(cdrom_ioctl[id].ioctl_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
cdrom_drives[id].handler = &ioctl_cdrom;
|
||||
dev->handler_inited = 1;
|
||||
cdrom_ioctl_windows[id].is_playing = 0;
|
||||
cdrom_ioctl[id].capacity_read=0; /* With these two lines, we read the READ CAPACITY command output from the host drive into our cache buffer. */
|
||||
ioctl_read_capacity(id, NULL);
|
||||
pclog(rcs, drb[0], drb[1], drb[2], drb[3], drb[4], drb[5], drb[6], drb[7],
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Handle generation of crash-dump reports.
|
||||
*
|
||||
* Version: @(#)win_crashdump.c 1.0.5 2018/03/08
|
||||
* Version: @(#)win_crashdump.c 1.0.6 2018/03/20
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Riley (Rai-chan),
|
||||
@@ -174,12 +174,12 @@ MakeCrashDump(PEXCEPTION_POINTERS ExceptionInfo)
|
||||
|
||||
/* Start to put the crash-dump string into the buffer. */
|
||||
sprintf(ExceptionHandlerBuffer,
|
||||
"#\r\n# %s\r\n#\r\n"
|
||||
"#\r\n# %s %s\r\n#\r\n"
|
||||
"# Crash on %d-%02d-%02d at %02d:%02d:%02d.%03d\r\n#\r\n"
|
||||
"\r\n"
|
||||
"Exception details:\r\n"
|
||||
" NTSTATUS code: 0x%08lx\r\n Address: 0x%p",
|
||||
emu_version,
|
||||
emu_title, emu_fullversion,
|
||||
SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay,
|
||||
SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond,
|
||||
SystemTime.wMilliseconds,
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Implement the user Interface module.
|
||||
*
|
||||
* Version: @(#)win_ui.c 1.0.6 2018/03/18
|
||||
* Version: @(#)win_ui.c 1.0.7 2018/03/20
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
#include "../emu.h"
|
||||
#include "../version.h"
|
||||
#include "../config.h"
|
||||
#include "../device.h"
|
||||
#include "../keyboard.h"
|
||||
@@ -815,7 +816,7 @@ ui_init(int nCmdShow)
|
||||
menuMain = LoadMenu(hinstance, MENU_NAME);
|
||||
|
||||
/* Now create our main window. */
|
||||
mbstowcs(title, emu_version, sizeof_w(title));
|
||||
wsprintf(title, L"%S", emu_version, sizeof_w(title));
|
||||
hwnd = CreateWindowEx (
|
||||
0, /* no extended possibilites */
|
||||
CLASS_NAME, /* class name */
|
||||
|
||||
Reference in New Issue
Block a user