Doesn't compile in Linux for x86_64?
Moderator: ZSNES Mods
Doesn't compile in Linux for x86_64?
Hello!
When running "sudo ./autogen.sh --target x86_64" I am told "configure: error: This Target is Not Supported".
Is anyone able to compile for x86_64 chipsets? Am I missing something?
Please help!
- Linux Noob
When running "sudo ./autogen.sh --target x86_64" I am told "configure: error: This Target is Not Supported".
Is anyone able to compile for x86_64 chipsets? Am I missing something?
Please help!
- Linux Noob
-
- Locksmith of Hyrule
- Posts: 3634
- Joined: Sun Aug 08, 2004 7:49 am
- Location: 255.255.255.255
- Contact:
iirc ZSNES doesn't support compiling on 64-bit Linux OS'es. I learned this the hard way.
Of course, you can help with this, by providing the devs with a x86_64 machine, or write it yourself.
Of course, you can help with this, by providing the devs with a x86_64 machine, or write it yourself.

<Nach> so why don't the two of you get your own room and leave us alone with this stupidity of yours?
NSRT here.
NSRT here.
-
- ZSNES Shake Shake Prinny
- Posts: 5632
- Joined: Wed Jul 28, 2004 4:15 pm
- Location: PAL50, dood !
use ./autogen.sh without target and it should try and guess.
皆黙って俺について来い!!
Pantheon: Gideon Zhi | CaitSith2 | Nach | kode54
Code: Select all
<jmr> bsnes has the most accurate wiki page but it takes forever to load (or something)
-
- Rookie
- Posts: 15
- Joined: Mon Jan 09, 2006 2:22 pm
Good news, zsnes (from the svn repo), compiles on my ol' opteron 144 under Ubuntu Dapper amd64.adventure_of_link wrote:iirc ZSNES doesn't support compiling on 64-bit Linux OS'es. I learned this the hard way.
The only problem is it gets an error when run (although ./zsnes --help works

I can run it perfectly under a 32-bit chroot (with a recompile that is) in the meantime. I would not have been able to switch to Linux without zsnes

Here is some of the output (no errors at all, just warnings. awesome work you guys!)
There were also some warnings after running autogen.sh (I've got automake 1.9)-I/usr/local/include -I/usr/include -D__UNIXSDL__ -I/usr/include/SDL -D_REENTRANT -D__OPENGL__ -O3 -fomit-frame-pointer -s -march=opteron -fno-rtti -L/usr/local/lib -L/usr/lib -lz -L/usr/lib -lSDL -lpthread -lpng -lm -L/usr/X11R6/lib -lGL
/usr/bin/ld: warning: i386 architecture of input file `endmem.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `init.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `ui.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `vcache.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/sfxproc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/fxemu2.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/dsp1proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/fxemu2b.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/fxemu2c.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/fxtable.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/sa1proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/sa1regs.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/st10proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/dsp2proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/dsp4proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/dsp3proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `chips/obc1proc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/dma.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/dsp.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/dspproc.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/execute.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/irq.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/memory.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/spc700.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/stable.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/table.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/tableb.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `cpu/tablec.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `linux/copyvwin.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `linux/sdlintrf.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `dos/debug.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `dos/joy.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `dos/vesa2.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `gui/gui.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `gui/menu.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/makev16b.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/makev16t.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/makevid.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode716.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode716b.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode716d.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode716e.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode716t.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode7.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mode7ext.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/mv16tms.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/newg162.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/newgfx16.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/newgfx2.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/newgfx.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/m716text.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/2xsaiw.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/procvid.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/sw_draw.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq2x16.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq2x32.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq3x16.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq3x32.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq4x16.o' is incompatible with i386:x86-64 output
/usr/bin/ld: warning: i386 architecture of input file `video/hq4x32.o' is incompatible with i386:x86-64 output
rm -f version.o
#######
./zsnes
ZSNES vPre 1.43, (c) 1997-2006, ZSNES Team
Be sure to check http://www.zsnes.com/ for the latest version.
Please report crashes to zsnes-devel@lists.sourceforge.net.
ZSNES is written by the ZSNES Team (See AUTHORS.TXT)
ZSNES comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions;
please read 'LICENSE.TXT' thoroughly before doing so.
Use ZSNES -? for command line definitions.
This is a work in progress build. It contains code which
May or may not be complete
ManyMouse: 0 mice detected.
Illegal instruction
Please let me know if there is any other info I can offer. Thanks../autogen.sh
Generating build information using aclocal and autoconf...
/usr/share/aclocal/oaf.m4:4: warning: underquoted definition of AM_PATH_OAF
run info '(automake)Extending aclocal'
or see http://sources.redhat.com/automake/auto ... ng-aclocal
/usr/share/aclocal/glib.m4:8: warning: underquoted definition of AM_PATH_GLIB
/usr/share/aclocal/gconf-1.m4:4: warning: underquoted definition of AM_PATH_GCONF
/usr/share/aclocal/gconf-1.m4:71: warning: underquoted definition of AM_GCONF_SOURCE

-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
I just got an Athlon 64 machine last week (thanks to those that donated), so I can finally do in house testing.
I've fixed some issues already. However it'll need a lot of work to compile natively at 64 bit.
Although after I got Linux set up, it only took me ~5 minutes to get my setup able to compile 32 bit binaries, so I don't think it's such a major issue at the moment.
I've fixed some issues already. However it'll need a lot of work to compile natively at 64 bit.
Although after I got Linux set up, it only took me ~5 minutes to get my setup able to compile 32 bit binaries, so I don't think it's such a major issue at the moment.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
-
- Rookie
- Posts: 15
- Joined: Mon Jan 09, 2006 2:22 pm
Took me 15 minutes =)Nach wrote:I just got an Athlon 64 machine last week (thanks to those that donated), so I can finally do in house testing.
I've fixed some issues already. However it'll need a lot of work to compile natively at 64 bit.
Although after I got Linux set up, it only took me ~5 minutes to get my setup able to compile 32 bit binaries, so I don't think it's such a major issue at the moment.
Hope you get to have some fun with your new machine.
The only thing I've wondered is...
Do you think there will be any tangible speed benefits with it running pure 64?
And behind me is
the Whole Hole
It consumes
anything.
--Yomi (Terranigma)
the Whole Hole
It consumes
anything.
--Yomi (Terranigma)
I'm curious, how would compiling a standard c++ application on an x64 work? Do I need any changes to sizes like int, short, long, long long etc? I use both MSVC2k5 and gcc. I'd be curious if bsnes could run on x64 systems or not. I imagine the context-switching code will need to be ported, shouldn't be too hard, assuming nasm can do x64 code, hopefully.
It'll probably run slower due to increased code size, and larger default data types when the precision isn't necessary. But it'll speed up operations like memcpy, most likely.Do you think there will be any tangible speed benefits with it running pure 64?
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
Usually not. And if you use <stdint.h> like you're really supposed to, then it's never a problem.byuu wrote:I'm curious, how would compiling a standard c++ application on an x64 work? Do I need any changes to sizes like int, short, long, long long etc?
The biggest issue these days seems to be pointer arithmatic without using proper sizeof() checks.
I can test it. However I don't have any of the code on this PC, if you could help with that...byuu wrote: I'd be curious if bsnes could run on x64 systems or not.
Good luck finding a NASM with 64 bit support.byuu wrote: I imagine the context-switching code will need to be ported, shouldn't be too hard, assuming nasm can do x64 code, hopefully.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
For whatever reason, MSVC 2k5 does not come with stdint.h. In fact, that's always bugged me. Since I am not going to stop using this compiler (it builds 3x as fast as gcc/MinGW and optimizes better, too), I've no choice but to do things the hard way.Usually not. And if you use <stdint.h> like you're really supposed to, then it's never a problem.
The biggest issue these days seems to be pointer arithmatic without using proper sizeof() checks.
Hmm, I've got a lot of pointer arithmetic, but I always cast and index properly. I don't do much work on copying arrays of pointers around, only in libvector.h, but that uses sizeof()s around everything anyway.
You want me to post a WIP build? My local copy uses libco which won't work on x64, otherwise the most up-to-date code that doesn't is already hosted on your website :)I can test it. However I don't have any of the code on this PC, if you could help with that...
That, and I have to learn all the differences from x86 and somehow find impossibly obscure ABI information for x64 mode on all platforms. And then I have to write the code using a new assembler like yasm or something. And I also get to actually install a 64-bit OS, which I'm very hesitant to do (mostly just apathy).Good luck finding a NASM with 64 bit support.
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
Lack of standards compliance.byuu wrote: For whatever reason, MSVC 2k5 does not come with stdint.h.
I can understand it compiling faser than GCC 4, but optimizing better? Perhaps for bit handling, but overall not.byuu wrote: it builds 3x as fast as gcc/MinGW and optimizes better, too
Well I could go get the code off my site, but then I don't get my new makefilebyuu wrote: You want me to post a WIP build? My local copy uses libco which won't work on x64, otherwise the most up-to-date code that doesn't is already hosted on your website![]()

Just remember you're not allowed to push or pop the 32 bit registers.byuu wrote: That, and I have to learn all the differences from x86 and somehow find impossibly obscure ABI information for x64 mode on all platforms. And then I have to write the code using a new assembler like yasm or something. And I also get to actually install a 64-bit OS, which I'm very hesitant to do (mostly just apathy).
And I'm not sure YASM compiles 64 bit assembly.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
To C99, at least. Apparently Solaris has the same issue. For such a portable language, c++ sure is a pain in the ass sometimes :)Lack of standards compliance.
...ok? That's odd. So does 32-bit mode not allow 16-bit register push/pops? I can get around that problem anyway, not that I need to.Just remember you're not allowed to push or pop the 32 bit registers.
macro push(reg)
mov dword[rsp],%reg
sub rsp,4
endmacro
macro pop(reg)
add rsp,4
mov %reg,dword[rsp]
endmacro
push(eax)
pop(eax)
Suck it, x64! Now then...
http://www.logix.cz/michal/devel/amd64-regs/
That says that RDI and RSI are non-volatile? That's certainly not the case for edi and esi on x86. Ah well, r12-15 in addition means I'm only required to save two more registers than x86, but of course, they're all twice as big, too. So context switching will be more intense, but still not too bad.
Fine, I'll write my own if I have to. I want to use r0-r15 anyway instead of rax,rbx,...r8,r9...r15.And I'm not sure YASM compiles 64 bit assembly.
Edit: grr, they made long = 8 bytes, and yet short = 2 bytes. Whatever, this is why I use typedefs in all of my programs.
Last edited by byuu on Wed May 17, 2006 12:38 am, edited 1 time in total.
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
C++ isn't C99. In fact some stuff in C99 goes against strict standards in last published C++ spec.byuu wrote:To C99, at least. Apparently Solaris has the same issue. For such a portable language, c++ sure is a pain in the ass sometimesLack of standards compliance.![]()
You'll really write your own assembler which will compile the code properly, and output COFF or ELF64 or whatever?byuu wrote:Fine, I'll write my own if I have to. I want to use r0-r15 anyway instead of rax,rbx,...r8,r9...r15.And I'm not sure YASM compiles 64 bit assembly.
BTW if you, I'm interested in this project, some parts about NASM just need fixing...
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
And since stdint is a C99 specification...C++ isn't C99.
I've written my own assemblers before. The only challenging part will be supporting ELF64/OBJ(64?) formats.You'll really write your own assembler which will compile the code properly, and output COFF or ELF64 or whatever?
I am indeed me. Well, in all seriousness I can easily write the parser and the opcode generation, but supporting object formats is definitely over my head, at least at present.BTW if you, I'm interested in this project, some parts about NASM just need fixing...
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
byuu wrote:I'd be curious if bsnes could run on x64 systems or not.
Code: Select all
/home/nach/bsnes/016/src/sdl> make
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c sdlmain.cpp `sdl-config --cflags`
sdlmain.h:12: warning: non-local variable ‘<anonymous struct> screen_info’ uses anonymous type
../snes/snes.h:25: warning: inline function ‘virtual void SNES::runtoframe()’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../lib/libstring.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../lib/libconfig.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../lib/libbpf.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../reader/reader.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../cart/cart.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../cheat/cheat.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../memory/memory.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../memory/bmemory/bmemory.cpp
../memory/bmemory/bmemory.cpp: In member function ‘uint8 bMemBus::memory_type(uint32)’:
../memory/bmemory/bmemory.cpp:90: warning: comparison is always true due to limited range of data type
../memory/bmemory/bmemory.cpp:96: warning: comparison is always true due to limited range of data type
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../cpu/cpu.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../cpu/bcpu/bcpu.cpp
../cpu/bcpu/../../apu/bapu/memory/memory.h:5: warning: inline function ‘virtual uint8 bAPU::port_read(uint8)’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../apu/apu.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../apu/bapu/bapu.cpp
../apu/bapu/../../cpu/bcpu/memory/memory.h:2: warning: inline function ‘virtual uint8 bCPU::port_read(uint8)’ used but never defined
../apu/bapu/../../cpu/bcpu/memory/memory.h:3: warning: inline function ‘virtual void bCPU::port_write(uint8, uint8)’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../dsp/bdsp/bdsp.cpp
../dsp/bdsp/../../apu/bapu/memory/memory.h:8: warning: inline function ‘virtual uint8* bAPU::get_spcram_handle()’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../ppu/ppu.cpp
../ppu/../cpu/bcpu/timing/timing.h:52: warning: inline function ‘virtual bool bCPU::interlace()’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../ppu/bppu/bppu.cpp
../ppu/bppu/../../cpu/bcpu/timing/timing.h:50: warning: inline function ‘virtual uint16 bCPU::hcounter()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:49: warning: inline function ‘virtual uint16 bCPU::vcounter()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:51: warning: inline function ‘virtual uint16 bCPU::hcycles()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:52: warning: inline function ‘virtual bool bCPU::interlace()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:53: warning: inline function ‘virtual bool bCPU::interlace_field()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:55: warning: inline function ‘virtual uint16 bCPU::region_scanlines()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:54: warning: inline function ‘virtual bool bCPU::overscan()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:66: warning: inline function ‘virtual void bCPU::set_overscan(bool)’ used but never defined
../ppu/bppu/../../cpu/bcpu/bcpu.h:83: warning: inline function ‘virtual uint8 bCPU::pio_status()’ used but never defined
../ppu/bppu/../../cpu/bcpu/timing/timing.h:65: warning: inline function ‘virtual void bCPU::set_interlace(bool)’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../snes/snes.cpp
../snes/../cpu/bcpu/timing/timing.h:54: warning: inline function ‘virtual bool bCPU::overscan()’ used but never defined
../snes/../cpu/bcpu/timing/timing.h:49: warning: inline function ‘virtual uint16 bCPU::vcounter()’ used but never defined
../snes/../cpu/bcpu/timing/timing.h:53: warning: inline function ‘virtual bool bCPU::interlace_field()’ used but never defined
../snes/../cpu/bcpu/bcpu.h:84: warning: inline function ‘virtual void bCPU::run()’ used but never defined
../snes/../cpu/bcpu/bcpu.h:85: warning: inline function ‘virtual uint32 bCPU::cycles_executed()’ used but never defined
../snes/../apu/bapu/bapu.h:18: warning: inline function ‘virtual void bAPU::run()’ used but never defined
../snes/../apu/bapu/timing/timing.h:9: warning: inline function ‘virtual uint32 bAPU::cycles_executed()’ used but never defined
../snes/../cpu/bcpu/bcpu.h:88: warning: inline function ‘virtual void bCPU::power()’ used but never defined
../snes/../apu/bapu/bapu.h:19: warning: inline function ‘virtual void bAPU::power()’ used but never defined
../snes/../cpu/bcpu/bcpu.h:89: warning: inline function ‘virtual void bCPU::reset()’ used but never defined
../snes/../apu/bapu/bapu.h:20: warning: inline function ‘virtual void bAPU::reset()’ used but never defined
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../chip/srtc/srtc.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../chip/sdd1/sdd1.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../chip/c4/c4.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../chip/dsp2/dsp2.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../chip/obc1/obc1.cpp
gcc-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -c ../reader/zlib/*.c
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti -c ../reader/jma/*.cpp
g++-4.1 -O3 -fomit-frame-pointer -ffast-math -march=athlon64 -ftree-vectorize -fno-rtti sdlmain.o libstring.o libconfig.o libbpf.o reader.o cart.o cheat.o memory.o bmemory.o cpu.o bcpu.o apu.o bapu.o bdsp.o ppu.o bppu.o snes.o srtc.o sdd1.o c4.o dsp2.o obc1.o adler32.o compress.o crc32.o deflate.o gzio.o inffast.o inflate.o inftrees.o ioapi.o trees.o unzip.o zip.o zutil.o jma.o jcrc32.o lzmadec.o 7zlzma.o iiostrm.o inbyte.o lzma.o winout.o `sdl-config --cflags --libs` -o bsnes_sdl
/home/nach/bsnes/016/src/sdl> ./bsnes_sdl /tmp/SNES/MM7.SMC
* Loading "/tmp/SNES/MM7.SMC"...
* Image Name : "MEGAMAN 7 "
* Region : NTSC
* Address Decoder : 21
* SRAM Size : 0kb
* Coprocessor(s) : None
* Reset:ff98 NMI:ffa8 IRQ:ff90 BRK[n]:ff94 COP[n]:ff94 BRK[e]:ff94 COP[e]:ff94
Getting pretty stable emulation of Mega Man 7 at 70FPS, although sometimes during a simple scene I see it peek to 115FPS for a few moment.
It's only using 95% of the CPU it's on.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
-
- Locksmith of Hyrule
- Posts: 3634
- Joined: Sun Aug 08, 2004 7:49 am
- Location: 255.255.255.255
- Contact:
This is off topic, but, congratulations Nach !Nach wrote:I just got an Athlon 64 machine last week (thanks to those that donated), so I can finally do in house testing.
I've fixed some issues already. However it'll need a lot of work to compile natively at 64 bit.
Although after I got Linux set up, it only took me ~5 minutes to get my setup able to compile 32 bit binaries, so I don't think it's such a major issue at the moment.


Congrats, and keep up the good work

<Nach> so why don't the two of you get your own room and leave us alone with this stupidity of yours?
NSRT here.
NSRT here.
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
Feels great to be hereadventure_of_link wrote: This is off topic, but, congratulations Nach !It's about time you joined us (when it comes to 64-bit land)
![]()

Now I just need to get access to more of my old data, and setup some scripts.
64 of course.adventure_of_link wrote: By the way, the Linux you're using, is it 32 or 64-bits ?
I really need to figure out though how ot make my 32 bit shells look different so I don't confuse them...
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
Neat! Thanks for testing. Heh, I thought it errored out with all of those warnings. Funny the way MSVC doesn't complain about any of that stuff.Nach wrote:/home/nach/bsnes/016/src/sdl> ./bsnes_sdl /tmp/SNES/MM7.SMC
* Loading "/tmp/SNES/MM7.SMC"...
* Image Name : "MEGAMAN 7 "
* Region : NTSC
* Address Decoder : 21
* SRAM Size : 0kb
* Coprocessor(s) : None
* Reset:ff98 NMI:ffa8 IRQ:ff90 BRK[n]:ff94 COP[n]:ff94 BRK[e]:ff94 COP[e]:ff94
So that's with pure 64-bit code, then? Awesome stuff. Now I just need to port my one x86 asm file and find a way to assemble it, and everything should be great.
70fps average seems low for your processor speed, it's slow because it's using SDL. You'd probably pull 90-130fps on Windows, which is a little below what I get on windows with PGO optimizations on my 3500+ single core. Can't quite tell if it's faster with x64 or slower, though. I'm seeing now that you'd probably get a good boost by having x64 pass all of the function arguments in registers rather than on the stack, but there's still all of that extra overhead by working with 64-bit registers.
And cool, I just found another significant optimization for libco, I can just push the current registers onto the current context, and then pop the registers from the new context, converting mov [eax+n],reg to push reg and mov reg,[eax+n] to pop reg. Appears to be 20% faster now from the work machine P4.
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
No problem.byuu wrote: Neat! Thanks for testing.
I've always had those warnings, I've told you about them before.byuu wrote: Heh, I thought it errored out with all of those warnings. Funny the way MSVC doesn't complain about any of that stuff.
Yes.byuu wrote: So that's with pure 64-bit code, then?
I recompiled with PGO.byuu wrote: 70fps average seems low for your processor speed, it's slow because it's using SDL. You'd probably pull 90-130fps on Windows, which is a little below what I get on windows with PGO optimizations on my 3500+ single core. Can't quite tell if it's faster with x64 or slower, though. I'm seeing now that you'd probably get a good boost by having x64 pass all of the function arguments in registers rather than on the stack, but there's still all of that extra overhead by working with 64-bit registers.
Getting an average of 85 now with peaks at 125 FPS.
I could probably get more if I looked to see what new crazy things tree-ssa added recently.
I tried running Windows version in WINE, but I was getting a lot of errors. Probably need to setup WINE more...
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
-
- Lurker
- Posts: 102
- Joined: Sat Feb 25, 2006 7:47 pm
- Contact:
-
- ZSNES Developer
- Posts: 3904
- Joined: Tue Jul 27, 2004 10:54 pm
- Location: Solar powered park bench
- Contact:
I installed 32 bit GCC and NASM, SDL, etc...doktor_kris wrote:Care to fill me in on how you guys made it compile as a 32-bits binary?Nach wrote:Although after I got Linux set up, it only took me ~5 minutes to get my setup able to compile 32 bit binaries, so I don't think it's such a major issue at the moment.
then just compiled with that.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
_____________
Insane Coding
-
- Lurker
- Posts: 102
- Joined: Sat Feb 25, 2006 7:47 pm
- Contact: