Zsnes 1.4 source and MinGW/MSYS

General area for talk about ZSNES. The best place to ask for related questions as well as troubleshooting.

Moderator: ZSNES Mods

Locked
ieremiou
Rookie
Posts: 49
Joined: Thu Jul 29, 2004 6:38 am
Location: Michigan
Contact:

Zsnes 1.4 source and MinGW/MSYS

Post by ieremiou »

I had to modify the makefile.mingw for it to compile a bit because of the the linking slashes were the wrong direction when compiling in Msys (which is a UNIX like shell) but it did compile succesfully with some warnings. The ultimate problem though is that I get a MSVCRT.DLL crash when opening up my MinGW compiled version of ZSNES.

I'm using the lastest MinGW GCC 3.4.2, GNU autotools, zlib 1.2.2 and libpng 1.2.8 libraries that are available to me.

This is my makefile.mingw
-----------------------------------------------------------------------------------
#Copyright (C) 1997-2004 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com )
#
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#as published by the Free Software Foundation; either
#version 2 of the License, or (at your option) any later
#version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#This file depends on link.win32 so if you modify this makefile,
#don't forget to update link.win32
#it is quite ugly but without that trick, the compilation didn't
#work for me (command line too long)

CHIPDIR=chips
CPUDIR=cpu
DOSDIR=dos
GUIDIR=gui
VIDEODIR=video
WINDIR=win
OBJDIR=obj
ZIPDIR=zip
EFFECTSDIR=effects
JMADIR=jma

CHIPSOBJ=${CHIPDIR}/sfxproc.o ${CHIPDIR}/fxemu2.o ${CHIPDIR}/dsp1proc.o\
${CHIPDIR}/fxemu2b.o ${CHIPDIR}/fxemu2c.o ${CHIPDIR}/fxtable.o\
${CHIPDIR}/sa1proc.o ${CHIPDIR}/sa1regs.o ${CHIPDIR}/dsp1emu.o\
${CHIPDIR}/st10proc.o ${CHIPDIR}/seta10.o ${CHIPDIR}/dsp2proc.o\
${CHIPDIR}/sdd1emu.o

CPUOBJ=${CPUDIR}/addrni.o ${CPUDIR}/dma.o ${CPUDIR}/dsp.o ${CPUDIR}/dspproc.o\
${CPUDIR}/execute.o ${CPUDIR}/irq.o ${CPUDIR}/memory.o\
${CPUDIR}/spc700.o ${CPUDIR}/stable.o ${CPUDIR}/table.o\
${CPUDIR}/tableb.o ${CPUDIR}/tablec.o

GUIOBJ=${GUIDIR}/gui.o ${GUIDIR}/menu.o

VIDEOBJ=${VIDEODIR}/makev16b.o ${VIDEODIR}/makev16t.o ${VIDEODIR}/makevid.o\
${VIDEODIR}/mode716.o ${VIDEODIR}/mode716b.o ${VIDEODIR}/mode716d.o\
${VIDEODIR}/mode716e.o ${VIDEODIR}/mode716t.o ${VIDEODIR}/mode7.o\
${VIDEODIR}/mode7ext.o ${VIDEODIR}/mv16tms.o ${VIDEODIR}/newg162.o\
${VIDEODIR}/newgfx16.o ${VIDEODIR}/newgfx2.o ${VIDEODIR}/newgfx.o\
${VIDEODIR}/m716text.o ${VIDEODIR}/2xsaiw.o\
${VIDEODIR}/procvid.o ${VIDEODIR}/sw_draw.o\
${VIDEODIR}/hq2x16.o ${VIDEODIR}/hq2x32.o\
${VIDEODIR}/hq3x16.o ${VIDEODIR}/hq3x32.o\
${VIDEODIR}/hq4x16.o ${VIDEODIR}/hq4x32.o

WINOBJ=${WINDIR}/copyvwin.o \
${WINDIR}/winintrf.o ${WINDIR}/winlink.o ${WINDIR}/zloaderw.o\
${WINDIR}/ztcp.o ${WINDIR}/zipxw.o ${WINDIR}/zfilew.o

WINDOSOBJ=${DOSDIR}/debug.o ${DOSDIR}/joy.o ${DOSDIR}/modemrtn.o ${DOSDIR}/vesa2.o\
${DOSDIR}/initvid.o ${DOSDIR}/sw.o ${DOSDIR}/gppro.o ${DOSDIR}/vesa12.o\
${DOSDIR}/zsipx.o

JMAOBJ=${JMADIR}/7zlzma.o ${JMADIR}/crc32.o ${JMADIR}/iiostrm.o\
${JMADIR}/inbyte.o ${JMADIR}/jma.o ${JMADIR}/lzma.o ${JMADIR}/lzmadec.o\
${JMADIR}/winout.o ${JMADIR}/zsnesjma.o
PREOBJ=

ZIPOBJ=${ZIPDIR}/unzip.o ${ZIPDIR}/zpng.o

EFFECTSOBJ=${EFFECTSDIR}/burn.o ${EFFECTSDIR}/water.o ${EFFECTSDIR}/smoke.o

MAINOBJ=cfgload.o endmem.o init.o initc.o uic.o patch.o ui.o vcache.o version.o


OBJS=${CHIPSOBJ} ${CPUOBJ} ${WINOBJ} ${GUIOBJ} ${VIDEOBJ} ${ZIPOBJ} ${MAINOBJ} ${WINDOSOBJ} ${EFFECTSOBJ} ${JMAOBJ}
LIBS=
CFLAGS=-c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s
ASM=nasm
ASMFLAGS=-O1 -f win32 -D__WIN32__
CC=gcc
CPP=g++

.SUFFIXES: .c .cpp .asm

%.o : %.c
${CC} ${CFLAGS} -o$@ $<

%.o: %.cpp
${CPP} ${CFLAGS} -o$@ $<

%.o: %.asm
${ASM} ${ASMFLAGS} -o $@ $<

ALL: zsnesw.exe

zsnesw.exe: ${OBJS} ${WINDIR}/zsnes.o
g++ -ozsnesw.exe chips/dsp1proc.o chips/dsp2proc.o dos/sw.o dos/gppro.o dos/vesa12.o dos/zsipx.o dos/modemrtn.o dos/joy.o dos/debug.o dos/vesa2.o dos/initvid.o cfgload.o endmem.o init.o initc.o uic.o patch.o ui.o vcache.o effects/water.o effects/smoke.o effects/burn.o version.o video/procvid.o win/copyvwin.o win/winintrf.o win/winlink.o win/zloaderw.o win/ztcp.o win/zfilew.o win/zipxw.o video/makev16b.o video/makev16t.o video/makevid.o video/mode716.o video/mode716b.o video/mode716d.o video/mode716e.o video/mode716t.o video/mode7.o video/mode7ext.o video/mv16tms.o video/newg162.o video/newgfx16.o video/newgfx2.o video/newgfx.o video/m716text.o video/2xsaiw.o video/sw_draw.o video/hq2x16.o video/hq2x32.o video/hq3x16.o video/hq3x32.o video/hq4x16.o video/hq4x32.o gui/gui.o gui/menu.o cpu/addrni.o cpu/dma.o cpu/dsp.o cpu/dspproc.o cpu/execute.o cpu/irq.o cpu/memory.o cpu/spc700.o cpu/stable.o cpu/table.o cpu/tableb.o cpu/tablec.o chips/dsp1emu.o chips/fxemu2.o chips/fxemu2b.o chips/fxemu2c.o chips/fxtable.o chips/sa1proc.o chips/sa1regs.o chips/sfxproc.o chips/st10proc.o chips/seta10.o chips/sdd1emu.o zip/unzip.o zip/zpng.o jma/7zlzma.o jma/crc32.o jma/iiostrm.o jma/inbyte.o jma/jma.o jma/lzmadec.o jma/lzma.o jma/winout.o jma/zsnesjma.o win/zsnes.o -ldxguid -ldinput8 -lwsock32 -luser32 -lgdi32 -lshell32 -lwinmm -lz -lpng -mwindows

${WINDIR}/zsnes.o: ${WINDIR}/zsnes.rc
windres --include-dir ${WINDIR} ${WINDIR}/zsnes.rc -o${WINDIR}/zsnes.o
${WINDIR}/copyvwin.o: ${WINDIR}/copyvwin.asm macros.mac
${WINDIR}/winintrf.o: ${WINDIR}/winintrf.asm macros.mac
${WINDIR}/zfilew.o: ${WINDIR}/zfilew.c
${WINDIR}/zipxw.o: ${WINDIR}/zipxw.c
${WINDIR}/zloaderw.o: ${WINDIR}/zloaderw.c
${WINDIR}/ztcp.o: ${WINDIR}/ztcp.c
${WINDIR}/winlink.o: ${WINDIR}/winlink.cpp ${WINDIR}/resource.h
${CPP} ${CFLAGS} -O0 -o$@ $<
${ZIPDIR}/unzip.o: ${ZIPDIR}/unzip.c ${ZIPDIR}/zunzip.h
${ZIPDIR}/zpng.o: ${ZIPDIR}/zpng.c ${ZIPDIR}/zpng.h
${DOSDIR}/initvid.o:${DOSDIR}/initvid.asm macros.mac
${DOSDIR}/modemrtn.o: ${DOSDIR}/modemrtn.asm macros.mac
${DOSDIR}/zsipx.o: ${DOSDIR}/zsipx.asm
${DOSDIR}/debug.o: ${DOSDIR}/debug.asm macros.mac
${DOSDIR}/joy.o: ${DOSDIR}/joy.asm macros.mac
${DOSDIR}/vesa2.o: ${DOSDIR}/vesa2.asm macros.mac
${DOSDIR}/gppro.o: ${DOSDIR}/gppro.asm macros.mac
${DOSDIR}/sw.o: ${DOSDIR}/sw.asm macros.mac
${DOSDIR}/vesa12.o: ${DOSDIR}/vesa12.asm macros.mac
${EFFECTSDIR}/water.o: ${EFFECTSDIR}/water.c ${EFFECTSDIR}/fixsin.h
${EFFECTSDIR}/smoke.o: ${EFFECTSDIR}/smoke.c
${EFFECTSDIR}/burn.o: ${EFFECTSDIR}/burn.c
${VIDEODIR}/2xsaiw.o: ${VIDEODIR}/2xsaiw.asm macros.mac
${VIDEODIR}/procvid.o: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xSaImmx.inc
${VIDEODIR}/sw_draw.o: ${VIDEODIR}/sw_draw.asm macros.mac
${VIDEODIR}/hq2x16.o: ${VIDEODIR}/hq2x16.asm macros.mac
${VIDEODIR}/hq2x32.o: ${VIDEODIR}/hq2x32.asm macros.mac
${VIDEODIR}/hq3x16.o: ${VIDEODIR}/hq3x16.asm macros.mac
${VIDEODIR}/hq3x32.o: ${VIDEODIR}/hq3x32.asm macros.mac
${VIDEODIR}/hq4x16.o: ${VIDEODIR}/hq4x16.asm macros.mac
${VIDEODIR}/hq4x32.o: ${VIDEODIR}/hq4x32.asm macros.mac
${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
${CHIPDIR}/sfxproc.o: ${CHIPDIR}/sfxproc.asm macros.mac\
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
${CHIPDIR}/st10proc.o: ${CHIPDIR}/st10proc.asm macros.mac\
${CPUDIR}/regs.mac ${CPUDIR}/regsw.mac
${CHIPDIR}/seta10.o: ${CHIPDIR}/seta10.c
${CHIPDIR}/dsp1emu.o: ${CHIPDIR}/dsp1emu.c
${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac
${CHIPDIR}/sdd1emu.o: ${CHIPDIR}/sdd1emu.c
ui.o: ui.asm macros.mac
cfgload.o:cfgload.asm macros.mac
init.o:init.asm macros.mac
initc.o:initc.c ${JMADIR}/zsnesjma.h
uic.o:uic.c
patch.o:patch.c
ALL:
rm version.o
version.o:version.c

${DOSDIR}/debug.o: ${DOSDIR}/debug.asm macros.mac
${CPUDIR}/addrni.o: ${CPUDIR}/addrni.asm
${CPUDIR}/execute.o: ${CPUDIR}/execute.asm macros.mac
${CPUDIR}/table.o: ${CPUDIR}/table.asm ${CPUDIR}/65816d.inc\
${CPUDIR}/address.inc ${CPUDIR}/addrni.inc ${CPUDIR}/e65816.inc\
${CPUDIR}/regs.mac ${CPUDIR}/regs.inc ${CPUDIR}/regsw.mac\
${CPUDIR}/regsw.inc macros.mac
${CPUDIR}/tableb.o: ${CPUDIR}/tableb.asm ${CPUDIR}/65816db.inc\
${CPUDIR}/address.inc ${CPUDIR}/addrni.inc ${CPUDIR}/e65816b.inc\
${CPUDIR}/regs.mac macros.mac
${CPUDIR}/tablec.o: ${CPUDIR}/tablec.asm ${CPUDIR}/65816dc.inc\
${CPUDIR}/address.inc ${CPUDIR}/addrni.inc ${CPUDIR}/e65816c.inc\
${CPUDIR}/regs.mac macros.mac
${CPUDIR}/stable.o: ${CPUDIR}/stable.asm ${CPUDIR}/s65816d.inc\
${CPUDIR}/saddress.inc ${CPUDIR}/saddrni.inc ${CPUDIR}/se65816.inc\
macros.mac
${CPUDIR}/memory.o: ${CPUDIR}/memory.asm macros.mac
${CPUDIR}/dma.o: ${CPUDIR}/dma.asm macros.mac
${DOSDIR}/dosintrf.o: ${DOSDIR}/dosintrf.asm macros.mac
vcache.o:vcache.asm macros.mac
${DOSDIR}/initvid.o:${DOSDIR}/initvid.asm macros.mac
${VIDEODIR}/makevid.o: ${VIDEODIR}/makevid.asm ${VIDEODIR}/vidmacro.mac\
macros.mac
${VIDEODIR}/makev16b.o: ${VIDEODIR}/makev16b.asm ${VIDEODIR}/vidmacro.mac\
macros.mac
${VIDEODIR}/makev16t.o: ${VIDEODIR}/makev16t.asm ${VIDEODIR}/vidmacro.mac\
macros.mac
${VIDEODIR}/mv16tms.o: ${VIDEODIR}/mv16tms.asm ${VIDEODIR}/vidmacro.mac\
macros.mac
${VIDEODIR}/mode7.o: ${VIDEODIR}/mode7.asm ${VIDEODIR}/mode7.mac\
macros.mac
${VIDEODIR}/mode716.o: ${VIDEODIR}/mode716.asm ${VIDEODIR}/mode716.mac\
macros.mac
${VIDEODIR}/mode716b.o:${VIDEODIR}/mode716b.asm ${VIDEODIR}/mode7.mac\
macros.mac
${VIDEODIR}/mode716t.o:${VIDEODIR}/mode716t.asm ${VIDEODIR}/mode7.mac\
macros.mac
${VIDEODIR}/mode716d.o:${VIDEODIR}/mode716d.asm ${VIDEODIR}/mode7.mac\
macros.mac
${VIDEODIR}/mode7ext.o:${VIDEODIR}/mode7ext.asm macros.mac
${VIDEODIR}/mode716e.o:${VIDEODIR}/mode716e.asm macros.mac
${VIDEODIR}/m716text.o:${VIDEODIR}/m716text.asm ${VIDEODIR}/mode7.mac\
macros.mac
${CPUDIR}/irq.o: ${CPUDIR}/irq.asm macros.mac
${CPUDIR}/dspproc.o: ${CPUDIR}/dspproc.asm macros.mac
${CPUDIR}/spc700.o:${CPUDIR}/spc700.asm macros.mac\
${CPUDIR}/regsw.mac ${CPUDIR}/spcdef.inc ${CPUDIR}/spcaddr.inc
${CPUDIR}/dsp.o: ${CPUDIR}/dsp.asm macros.mac
${DOSDIR}/vesa2.o: ${DOSDIR}/vesa2.asm macros.mac
${DOSDIR}/vesa12.o: ${DOSDIR}/vesa12.asm macros.mac
${DOSDIR}/joy.o: ${DOSDIR}/joy.asm macros.mac
${DOSDIR}/sw.o: ${DOSDIR}/sw.asm macros.mac
${GUIDIR}/gui.o: ${GUIDIR}/gui.asm ${GUIDIR}/guitools.inc\
${GUIDIR}/guimisc.inc ${GUIDIR}/guimouse.inc ${GUIDIR}/guiwindp.inc\
${GUIDIR}/guinetpl.inc ${GUIDIR}/guikeys.inc ${GUIDIR}/guicheat.inc\
${GUIDIR}/guicombo.inc ${GUIDIR}/guiload.inc macros.mac
${GUIDIR}/menu.o: ${GUIDIR}/menu.asm macros.mac
${VIDEODIR}/newgfx.o:${VIDEODIR}/newgfx.asm ${VIDEODIR}/vidmacro.mac\
${VIDEODIR}/newgfx2.mac ${VIDEODIR}/newgfx.mac macros.mac
${VIDEODIR}/newgfx2.o:${VIDEODIR}/newgfx2.asm ${VIDEODIR}/newgfxwn.mac\
${VIDEODIR}/newgfx.mac macros.mac
${VIDEODIR}/newgfx16.o: ${VIDEODIR}/newgfx16.asm macros.mac ${VIDEODIR}/vidmacro.mac\
${VIDEODIR}/newgfx16.mac ${VIDEODIR}/newg162.mac
${VIDEODIR}/newg162.o: macros.mac ${VIDEODIR}/newg162.asm ${VIDEODIR}/newg162.mac\
${VIDEODIR}/vidmacro.mac ${VIDEODIR}/newg16wn.mac
${CHIPDIR}/fxemu2.o: ${CHIPDIR}/fxemu2.asm ${CHIPDIR}/fxemu2.mac\
macros.mac
${CHIPDIR}/fxemu2b.o: ${CHIPDIR}/fxemu2b.asm ${CHIPDIR}/fxemu2.mac\
${CHIPDIR}/fxemu2b.mac
${CHIPDIR}/fxemu2c.o: ${CHIPDIR}/fxemu2c.asm macros.mac ${CHIPDIR}/fxemu2.mac\
${CHIPDIR}/fxemu2b.mac ${CHIPDIR}/fxemu2c.mac
${CHIPDIR}/fxtable.o: ${CHIPDIR}/fxtable.asm macros.mac
${DOSDIR}/gppro.o: ${DOSDIR}/gppro.asm macros.mac
${DOSDIR}/zsipx.o: ${DOSDIR}/zsipx.asm
${CHIPDIR}/sa1proc.o: ${CHIPDIR}/sa1proc.asm macros.mac
endmem.o: endmem.asm macros.mac
${DOSDIR}/modemrtn.o: ${DOSDIR}/modemrtn.asm macros.mac

${JMADIR}/7zlzma.o: ${JMADIR}/7zlzma.cpp
${CPP} ${CFLAGS} -fexceptions -o$@ $<
${JMADIR}/crc32.o: ${JMADIR}/crc32.cpp ${JMADIR}/crc32.h
${JMADIR}/iiostrm.o: ${JMADIR}/iiostrm.cpp
${JMADIR}/inbyte.o: ${JMADIR}/inbyte.cpp
${CPP} ${CFLAGS} -fexceptions -o$@ $<
${JMADIR}/jma.o: ${JMADIR}/jma.cpp ${JMADIR}/jma.h ${JMADIR}/crc32.h ${JMADIR}/portable.h
${CPP} ${CFLAGS} -fexceptions -o$@ $<
${JMADIR}/lzma.o: ${JMADIR}/lzma.cpp
${JMADIR}/lzmadec.o: ${JMADIR}/lzmadec.cpp
${CPP} ${CFLAGS} -fexceptions -o$@ $<
${JMADIR}/winout.o: ${JMADIR}/winout.cpp
${CPP} ${CFLAGS} -fexceptions -o$@ $<
${JMADIR}/zsnesjma.o: ${JMADIR}/zsnesjma.cpp ${JMADIR}/zsnesjma.h ${JMADIR}/jma.h

clean:
rm *.o
rm ${CHIPDIR}/*.o
rm ${CPUDIR}/*.o
rm ${VIDEODIR}/*.o
rm ${GUIDIR}/*.o
rm ${WINDIR}/*.o
rm ${ZIPDIR}/*.o
rm ${DOSDIR}/*.o
rm ${EFFECTSDIR}/*.o
rm ${JMADIR}/*.o
rm zsnesw.exe
-----------------------------------------------------------------------------------
I had to change the "\" in the linking process to "/" and the part where it says "ASMFLAGS=-O1 -f gnuwin32 -D__WIN32__" to "ASMFLAGS=-O1 -f win32 -D__WIN32__" to compile with NASM since gnuwin32 isn't a switch.

I also modified my link.win32 as it said to do in the beginning of makefile.mingw changing the "\" to "/".
-----------------------------------------------------------------------------------
/Fezsnesw.exe chips/dsp1proc.obj chips/dsp2proc.obj dos/sw.obj dos/gppro.obj dos/vesa12.obj dos/zsipx.obj dos/modemrtn.obj dos/joy.obj dos/debug.obj dos/vesa2.obj dos/initvid.obj cfgload.obj endmem.obj init.obj initc.obj uic.obj patch.obj ui.obj vcache.obj effects/water.obj effects/smoke.obj effects/burn.obj version.obj video/procvid.obj win/copyvwin.obj win/winintrf.obj win/winlink.obj win/zloaderw.obj win/ztcp.obj win/zfilew.obj win/zipxw.obj video/makev16b.obj video/makev16t.obj video/makevid.obj video/mode716.obj video/mode716b.obj video/mode716d.obj video/mode716e.obj video/mode716t.obj video/mode7.obj video/mode7ext.obj video/mv16tms.obj video/newg162.obj video/newgfx16.obj video/newgfx2.obj video/newgfx.obj video/m716text.obj video/2xsaiw.obj video/sw_draw.obj video/hq2x16.obj video/hq2x32.obj video/hq3x16.obj video/hq3x32.obj video/hq4x16.obj video/hq4x32.obj gui/gui.obj gui/menu.obj cpu/addrni.obj cpu/dma.obj cpu/dsp.obj cpu/dspproc.obj cpu/execute.obj cpu/irq.obj cpu/memory.obj cpu/spc700.obj cpu/stable.obj cpu/table.obj cpu/tableb.obj cpu/tablec.obj chips/dsp1emu.obj chips/fxemu2.obj chips/fxemu2b.obj chips/fxemu2c.obj chips/fxtable.obj chips/sa1proc.obj chips/sa1regs.obj chips/sfxproc.obj chips/st10proc.obj chips/seta10.obj chips/sdd1emu.obj zip/unzip.obj zip/zpng.obj jma/7zlzma.obj jma/crc32.obj jma/iiostrm.obj jma/inbyte.obj jma/jma.obj jma/lzmadec.obj jma/lzma.obj jma/winout.obj jma/zsnesjma.obj zlib.lib libpng.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib dinput8.lib dxguid.lib /link /section:.text,erw
-----------------------------------------------------------------------------------
This is my build log:
-----------------------------------------------------------------------------------
nasm -O1 -f win32 -D__WIN32__ -o chips/sfxproc.o chips/sfxproc.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/fxemu2.o chips/fxemu2.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/dsp1proc.o chips/dsp1proc.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/fxemu2b.o chips/fxemu2b.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/fxemu2c.o chips/fxemu2c.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/fxtable.o chips/fxtable.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/sa1proc.o chips/sa1proc.asm
nasm -O1 -f win32 -D__WIN32__ -o chips/sa1regs.o chips/sa1regs.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ochips/dsp1emu.o chips/dsp1emu.c
nasm -O1 -f win32 -D__WIN32__ -o chips/st10proc.o chips/st10proc.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ochips/seta10.o chips/seta10.c
chips/seta10.c: In function `ST010DoCommand':
chips/seta10.c:383: warning: implicit declaration of function `abs'
nasm -O1 -f win32 -D__WIN32__ -o chips/dsp2proc.o chips/dsp2proc.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ochips/sdd1emu.o chips/sdd1emu.c
nasm -O1 -f win32 -D__WIN32__ -o cpu/addrni.o cpu/addrni.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/dma.o cpu/dma.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/dsp.o cpu/dsp.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/dspproc.o cpu/dspproc.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/execute.o cpu/execute.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/irq.o cpu/irq.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/memory.o cpu/memory.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/spc700.o cpu/spc700.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/stable.o cpu/stable.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/table.o cpu/table.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/tableb.o cpu/tableb.asm
nasm -O1 -f win32 -D__WIN32__ -o cpu/tablec.o cpu/tablec.asm
nasm -O1 -f win32 -D__WIN32__ -o win/copyvwin.o win/copyvwin.asm
nasm -O1 -f win32 -D__WIN32__ -o win/winintrf.o win/winintrf.asm
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -O0 -owin/winlink.o win/winlink.cpp
win/winlink.cpp: In function `void DDrawError()':
win/winlink.cpp:332: warning: embedded `\0' in format
win/winlink.cpp: In function `void DInputError()':
win/winlink.cpp:1216: warning: embedded `\0' in format
win/winlink.cpp: In function `bool InitInput()':
win/winlink.cpp:1227: warning: embedded `\0' in format
win/winlink.cpp:1233: warning: unsigned int format, long int arg (arg 3)
win/winlink.cpp:1233: warning: embedded `\0' in format
win/winlink.cpp:1237: warning: unsigned int format, long int arg (arg 3)
win/winlink.cpp:1237: warning: embedded `\0' in format
win/winlink.cpp:1241: warning: unsigned int format, long int arg (arg 3)
win/winlink.cpp:1241: warning: embedded `\0' in format
win/winlink.cpp:1245: warning: unsigned int format, long int arg (arg 3)
win/winlink.cpp:1245: warning: embedded `\0' in format
win/winlink.cpp:1249: warning: unsigned int format, long int arg (arg 3)
win/winlink.cpp:1249: warning: embedded `\0' in format
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -owin/zloaderw.o win/zloaderw.c
win/zloaderw.c: In function `WinMain':
win/zloaderw.c:213: warning: embedded `\0' in format
win/zloaderw.c:349: warning: embedded `\0' in format
win/zloaderw.c:374: warning: no return statement in function returning non-void
win/zloaderw.c:374: warning: control reaches end of non-void function
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -owin/ztcp.o win/ztcp.c
win/ztcp.c: In function `WaitForServer':
win/ztcp.c:406: warning: suggest parentheses around assignment used as truth value
win/ztcp.c: In function `GetLeft':
win/ztcp.c:1030: warning: passing arg 3 of `ioctlsocket' from incompatible pointer type
win/ztcp.c: In function `ConnectServer':
win/ztcp.c:252: warning: 'host1' might be used uninitialized in this function
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -owin/zipxw.o win/zipxw.c
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -owin/zfilew.o win/zfilew.c
win/zfilew.c:510:8: warning: extra tokens at end of #endif directive
win/zfilew.c: In function `ZFileFindNext':
win/zfilew.c:876: warning: suggest parentheses around comparison in operand of &
win/zfilew.c: In function `ZFileFindFirst':
win/zfilew.c:891: warning: suggest parentheses around comparison in operand of &
nasm -O1 -f win32 -D__WIN32__ -o gui/gui.o gui/gui.asm
nasm -O1 -f win32 -D__WIN32__ -o gui/menu.o gui/menu.asm
nasm -O1 -f win32 -D__WIN32__ -o video/makev16b.o video/makev16b.asm
nasm -O1 -f win32 -D__WIN32__ -o video/makev16t.o video/makev16t.asm
nasm -O1 -f win32 -D__WIN32__ -o video/makevid.o video/makevid.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode716.o video/mode716.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode716b.o video/mode716b.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode716d.o video/mode716d.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode716e.o video/mode716e.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode716t.o video/mode716t.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode7.o video/mode7.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mode7ext.o video/mode7ext.asm
nasm -O1 -f win32 -D__WIN32__ -o video/mv16tms.o video/mv16tms.asm
nasm -O1 -f win32 -D__WIN32__ -o video/newg162.o video/newg162.asm
nasm -O1 -f win32 -D__WIN32__ -o video/newgfx16.o video/newgfx16.asm
nasm -O1 -f win32 -D__WIN32__ -o video/newgfx2.o video/newgfx2.asm
nasm -O1 -f win32 -D__WIN32__ -o video/newgfx.o video/newgfx.asm
nasm -O1 -f win32 -D__WIN32__ -o video/m716text.o video/m716text.asm
nasm -O1 -f win32 -D__WIN32__ -o video/2xsaiw.o video/2xsaiw.asm
nasm -O1 -f win32 -D__WIN32__ -o video/procvid.o video/procvid.asm
nasm -O1 -f win32 -D__WIN32__ -o video/sw_draw.o video/sw_draw.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq2x16.o video/hq2x16.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq2x32.o video/hq2x32.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq3x16.o video/hq3x16.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq3x32.o video/hq3x32.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq4x16.o video/hq4x16.asm
nasm -O1 -f win32 -D__WIN32__ -o video/hq4x32.o video/hq4x32.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ozip/unzip.o zip/unzip.c
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ozip/zpng.o zip/zpng.c
nasm -O1 -f win32 -D__WIN32__ -o cfgload.o cfgload.asm
nasm -O1 -f win32 -D__WIN32__ -o endmem.o endmem.asm
nasm -O1 -f win32 -D__WIN32__ -o init.o init.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -oinitc.o initc.c
initc.c: In function `SPC7_Convert_Upper':
initc.c:1450: warning: implicit declaration of function `toupper'
initc.c: In function `SPC7_Convert_Lower':
initc.c:1460: warning: implicit declaration of function `tolower'
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ouic.o uic.c
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -opatch.o patch.c
nasm -O1 -f win32 -D__WIN32__ -o ui.o ui.asm
nasm -O1 -f win32 -D__WIN32__ -o vcache.o vcache.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -oversion.o version.c
nasm -O1 -f win32 -D__WIN32__ -o dos/debug.o dos/debug.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/joy.o dos/joy.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/modemrtn.o dos/modemrtn.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/vesa2.o dos/vesa2.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/initvid.o dos/initvid.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/sw.o dos/sw.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/gppro.o dos/gppro.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/vesa12.o dos/vesa12.asm
nasm -O1 -f win32 -D__WIN32__ -o dos/zsipx.o dos/zsipx.asm
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -oeffects/burn.o effects/burn.c
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -oeffects/water.o effects/water.c
gcc -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -oeffects/smoke.o effects/smoke.c
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -fexceptions -ojma/7zlzma.o jma/7zlzma.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ojma/crc32.o jma/crc32.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ojma/iiostrm.o jma/iiostrm.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -fexceptions -ojma/inbyte.o jma/inbyte.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -fexceptions -ojma/jma.o jma/jma.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ojma/lzma.o jma/lzma.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -fexceptions -ojma/lzmadec.o jma/lzmadec.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -fexceptions -ojma/winout.o jma/winout.cpp
g++ -c -O3 -march=i586 -fno-exceptions -ffast-math -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -masm=intel -s -ojma/zsnesjma.o jma/zsnesjma.cpp
windres --include-dir win win/zsnes.rc -owin/zsnes.o
g++ -ozsnesw.exe chips/dsp1proc.o chips/dsp2proc.o dos/sw.o dos/gppro.o dos/vesa12.o dos/zsipx.o dos/modemrtn.o dos/joy.o dos/debug.o dos/vesa2.o dos/initvid.o cfgload.o endmem.o init.o initc.o uic.o patch.o ui.o vcache.o effects/water.o effects/smoke.o effects/burn.o version.o video/procvid.o win/copyvwin.o win/winintrf.o win/winlink.o win/zloaderw.o win/ztcp.o win/zfilew.o win/zipxw.o video/makev16b.o video/makev16t.o video/makevid.o video/mode716.o video/mode716b.o video/mode716d.o video/mode716e.o video/mode716t.o video/mode7.o video/mode7ext.o video/mv16tms.o video/newg162.o video/newgfx16.o video/newgfx2.o video/newgfx.o video/m716text.o video/2xsaiw.o video/sw_draw.o video/hq2x16.o video/hq2x32.o video/hq3x16.o video/hq3x32.o video/hq4x16.o video/hq4x32.o gui/gui.o gui/menu.o cpu/addrni.o cpu/dma.o cpu/dsp.o cpu/dspproc.o cpu/execute.o cpu/irq.o cpu/memory.o cpu/spc700.o cpu/stable.o cpu/table.o cpu/tableb.o cpu/tablec.o chips/dsp1emu.o chips/fxemu2.o chips/fxemu2b.o chips/fxemu2c.o chips/fxtable.o chips/sa1proc.o chips/sa1regs.o chips/sfxproc.o chips/st10proc.o chips/seta10.o chips/sdd1emu.o zip/unzip.o zip/zpng.o jma/7zlzma.o jma/crc32.o jma/iiostrm.o jma/inbyte.o jma/jma.o jma/lzmadec.o jma/lzma.o jma/winout.o jma/zsnesjma.o win/zsnes.o -ldxguid -ldinput8 -lwsock32 -luser32 -lgdi32 -lshell32 -lwinmm -lz -lpng -mwindows
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
Warning: .drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" ' unrecognized
rm version.o
-----------------------------------------------------------------------------------

That's the Crash in windows.
-----------------------------------------------------------------------------------
AppName: zsnesw.exe AppVer: 0.0.0.0 ModName: msvcrt.dll
ModVer: 7.0.2600.1106 Offset: 000335d1
-----------------------------------------------------------------------------------

When I try to use my build of ZSNES it creates the corresponding zsnesw.cfg and then crashes. I'm not very familiar with debugging but I hope this will help in having zsnes build sucessfully under MinGW/MSYS.
TheDanish
Rookie
Posts: 12
Joined: Fri Jul 30, 2004 10:23 pm

Post by TheDanish »

You're missing Nach's version of NASM that has the gnuwin32 format.
Get it -- and a working makefile -- out of the archive
http://www.cs.ucr.edu/~millerd/misc/zsnes140-mingw.zip

You'll want the makefile in zsnes/src/makefile.mingw and nasm out of mingw/bin

Or just use http://nsrt.edgeemu.com/nasmw.zip if you only want the correct nasm build.

Edit: don't forget to 'make clean' before you start since the objects files you just created won't be useful to MinGW.

Edit2: That makefile was created without MSYS in mind, but the only thing that needs to change is "del" -> "rm"

And ignore the comment about link.win32. It's not necessary.
ieremiou
Rookie
Posts: 49
Joined: Thu Jul 29, 2004 6:38 am
Location: Michigan
Contact:

Post by ieremiou »

Awesome thanks TheDanish.
Didn't know about Nach's NASM version.
Works beautifully now.
I just left my prior changes and changed "win32" to "gnuwin32" in the ASM line and it built and ran. I had to change the link direction since MSYS is a UNIX like shell and expects "/" and not "\" for directory entry.
Thanks bro,

Ieremiou
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

Aside from all that, which part of we are not supporting MinGW yet don't people understand?

We do not support MinGW yet. So now when you start seeing bugs with the build you just made that don't exist with the official ZSNESW v1.40, don't bother reporting them, I already know.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
Locked