Doesn't compile in Linux for x86_64?

Found a bug? Please report it, but remember to follow the bug reporting guidelines.
Missing a sane feature? Let us know!
But please do NOT request ports to other systems.

Moderator: ZSNES Mods

Post Reply
Herbchef
New Member
Posts: 5
Joined: Wed May 03, 2006 12:14 am

Doesn't compile in Linux for x86_64?

Post by Herbchef »

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
adventure_of_link
Locksmith of Hyrule
Posts: 3634
Joined: Sun Aug 08, 2004 7:49 am
Location: 255.255.255.255
Contact:

Post by adventure_of_link »

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. ;)
<Nach> so why don't the two of you get your own room and leave us alone with this stupidity of yours?
NSRT here.
grinvader
ZSNES Shake Shake Prinny
Posts: 5632
Joined: Wed Jul 28, 2004 4:15 pm
Location: PAL50, dood !

Post by grinvader »

use ./autogen.sh without target and it should try and guess.
皆黙って俺について来い!!

Code: Select all

<jmr> bsnes has the most accurate wiki page but it takes forever to load (or something)
Pantheon: Gideon Zhi | CaitSith2 | Nach | kode54
safaribans
Rookie
Posts: 15
Joined: Mon Jan 09, 2006 2:22 pm

Post by safaribans »

adventure_of_link wrote:iirc ZSNES doesn't support compiling on 64-bit Linux OS'es. I learned this the hard way.
Good news, zsnes (from the svn repo), compiles on my ol' opteron 144 under Ubuntu Dapper amd64.

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!)
-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
There were also some warnings after running autogen.sh (I've got automake 1.9)
./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
Please let me know if there is any other info I can offer. Thanks. :)
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

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.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
safaribans
Rookie
Posts: 15
Joined: Mon Jan 09, 2006 2:22 pm

Post by safaribans »

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.
Took me 15 minutes =)

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)
byuu

Post by byuu »

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.
Do you think there will be any tangible speed benefits with it running pure 64?
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.
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

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?
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.
byuu wrote: I'd be curious if bsnes could run on x64 systems or not.
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 imagine the context-switching code will need to be ported, shouldn't be too hard, assuming nasm can do x64 code, hopefully.
Good luck finding a NASM with 64 bit support.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
byuu

Post by byuu »

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.
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.

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.
I can test it. However I don't have any of the code on this PC, if you could help with that...
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 :)
Good luck finding a NASM with 64 bit support.
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).
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

byuu wrote: For whatever reason, MSVC 2k5 does not come with stdint.h.
Lack of standards compliance.
byuu wrote: it builds 3x as fast as gcc/MinGW and optimizes better, too
I can understand it compiling faser than GCC 4, but optimizing better? Perhaps for bit handling, but overall not.
byuu 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 :)
Well I could go get the code off my site, but then I don't get my new makefile :P

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).
Just remember you're not allowed to push or pop the 32 bit registers.
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
byuu

Post by byuu »

Lack of standards compliance.
To C99, at least. Apparently Solaris has the same issue. For such a portable language, c++ sure is a pain in the ass sometimes :)
Just remember you're not allowed to push or pop the 32 bit registers.
...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.

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.
And I'm not sure YASM compiles 64 bit assembly.
Fine, I'll write my own if I have to. I want to use r0-r15 anyway instead of rax,rbx,...r8,r9...r15.

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.
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

byuu wrote:
Lack of standards compliance.
To C99, at least. Apparently Solaris has the same issue. For such a portable language, c++ sure is a pain in the ass sometimes :)
C++ isn't C99. In fact some stuff in C99 goes against strict standards in last published C++ spec.
byuu wrote:
And I'm not sure YASM compiles 64 bit assembly.
Fine, I'll write my own if I have to. I want to use r0-r15 anyway instead of rax,rbx,...r8,r9...r15.
You'll really write your own assembler which will compile the code properly, and output COFF or ELF64 or whatever?

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
byuu

Post by byuu »

C++ isn't C99.
And since stdint is a C99 specification...
You'll really write your own assembler which will compile the code properly, and output COFF or ELF64 or whatever?
I've written my own assemblers before. The only challenging part will be supporting ELF64/OBJ(64?) formats.
BTW if you, I'm interested in this project, some parts about NASM just need fixing...
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.
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

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
This is on an X2 3800.
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
adventure_of_link
Locksmith of Hyrule
Posts: 3634
Joined: Sun Aug 08, 2004 7:49 am
Location: 255.255.255.255
Contact:

Post by adventure_of_link »

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.
This is off topic, but, congratulations Nach ! :D It's about time you joined us (when it comes to 64-bit land) :D By the way, the Linux you're using, is it 32 or 64-bits ?

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.
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

adventure_of_link wrote: This is off topic, but, congratulations Nach ! :D It's about time you joined us (when it comes to 64-bit land) :D
Feels great to be here :D

Now I just need to get access to more of my old data, and setup some scripts.
adventure_of_link wrote: By the way, the Linux you're using, is it 32 or 64-bits ?
64 of course.

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
byuu

Post by byuu »

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
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.

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.
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

byuu wrote: Neat! Thanks for testing.
No problem.
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.
I've always had those warnings, I've told you about them before.
byuu wrote: So that's with pure 64-bit code, then?
Yes.
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.
I recompiled with PGO.
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
doktor_kris
Lurker
Posts: 102
Joined: Sat Feb 25, 2006 7:47 pm
Contact:

Post by doktor_kris »

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.
Care to fill me in on how you guys made it compile as a 32-bits binary?
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

doktor_kris wrote:
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.
Care to fill me in on how you guys made it compile as a 32-bits binary?
I installed 32 bit GCC and NASM, SDL, etc...
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
doktor_kris
Lurker
Posts: 102
Joined: Sat Feb 25, 2006 7:47 pm
Contact:

Post by doktor_kris »

Ah. Thanks!
Post Reply