Getting into 8-bit NESdev with only 64-bit free software

You can talk about almost anything that you want to on this board.

Moderator: Moderators

tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Getting into 8-bit NESdev with only 64-bit free software

Post by tepples »

A user wants to use an NES debugger on a 64-bit Linux PC but refuses to use any non-free software out of principle and refuses to install any 32-bit free software (such as FCEUX for Windows in Wine) out of fear that the 32-bit support libraries will take several gigabytes and "hav[ing] better use for that space".

I recognize sticking to free software in principle. But principles can be taken too far:
  • If you refuse all non-free software, how do you connect to the Internet? The firmware of your machine's Wi-Fi radio is probably not free software. For example, in the United States, FCC rules require radio transmitter manufacturers to secure the firmware against changes that could cause it to violate Part 15.
  • If you refuse all non-free software, how did you get into the NES in the first place? NES games published prior to 1997 were not free software.
The workaround in that topic was to attach gdb to FCEUX for SDL and debug the emulator instead of debugging the game.

The disk space complaint is one I find somewhat legitimate. But I need more information before I can forward it to the experts at UNIX & Linux Stack Exchange. Here's what I have so far; it's missing the distribution and the size of the disk.
How can I run 32-bit Wine on 64-bit Linux with minimal disk space?

I want to run a free 32-bit Windows application (FCEUX debugger for Windows) on my 64-bit PC with an [unspecified size] HDD running [unspecified distribution] Linux. How can I set up a minimal environment to run Wine? Would a chroot work?

I tried running FCEUX for Linux, but unlike the Windows version of FCEUX, the SDL version of FCEUX lacks any debugging capability. I don't want to run FCEUX for Windows in Windows because Windows is non-free, and I don't want to install any non-free software on my PC. I considered Wine, and I have reports elsewhere that FCEUX for Windows works well in Wine, but I don't want to install several gigabytes of 32-bit support libraries into my 64-bit operating system.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by calima »

If you refuse all non-free software, how do you connect to the Internet? The firmware of your machine's Wi-Fi radio is probably not free software.
I connect via wired Ethernet, which incidentally needs no firmware. There is burned-in microcode in the chip, which I'd like to be free, but in the absence of suitably priced options, I can live with the burned microcode. It's close to a decade old, so should it have any backdoor, the likelihood of it still working is small.
If you refuse all non-free software, how did you get into the NES in the first place? NES games published prior to 1997 were not free software.
My viewpoint comes primarily from security, with the ethics being second.

Running games on a non-networked console, with no or very specific permanent storage, is quite different from running code on a computer that has access to both my data and the internet. One can hurt me in various ways, and one cannot. Thus running a NES game on a NES has no security implications.

Games in general are art IMHO, so the ability to modify them is not as relevant as on productivity programs. They're an experience you can only get once, similar to a book or a movie (multiplayer excepted).
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by GradualGames »

If Microsoft open sources Windows, then it might be a matter of time before I'm already doing nesdev with all free 64 bit software (I use mingw64 and compile cc65 from source) then again I think the emulator binaries I'm using are 32 bit right at the moment....
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by tepples »

calima wrote:
If you refuse all non-free software, how do you connect to the Internet? The firmware of your machine's Wi-Fi radio is probably not free software.
I connect via wired Ethernet, which incidentally needs no firmware.
Good point, for those people who live where it is practical. Is your PC's BIOS also free? Or the firmware of your HDD's controller?
Games in general are art IMHO, so the ability to modify them is not as relevant as on productivity programs.
The ability to adapt them to work on a new platform is still relevant. I mention this because I've been invited to draft an e-mail to licensing@fsf.org regarding issues related to video game software. I've already set forth a few thoughts in my article about genres of non-free software.
They're an experience you can only get once, similar to a book or a movie (multiplayer excepted).
Your argument for allowing non-free video games is that video games have little replay value. If that's true, it's more an indictment of AAA unoriginality and the "walking simulator" fad among indie developers than of games in general. I'd draw an analogy to golf, bowling, track and field, and weightlifting, which are in essence single-player sports, yet a player is expected to improve over time. Likewise, several video games have areas available only in New Game+.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by calima »

Is your PC's BIOS also free? Or the firmware of your HDD's controller?
Neither is, but the ability to run Coreboot stacks very highly on any new purchases.
The ability to adapt them to work on a new platform is still relevant.
I agree, but this only applies if there's any replay value, which I find there's generally not. In a generalized game engine, such as RPG maker, Renpy or Adventure Game Studio, it makes very much sense, like you write.
I mention this because I've been invited to draft an e-mail to licensing@fsf.org regarding issues related to video game software.
I'm surprised, because you give off a really anti-free vibe. Why do you continue to recommend non-free software, if you claim to be a supporter?
Your argument for allowing non-free video games is that video games have little replay value. If that's true, it's more an indictment of AAA unoriginality and the "walking simulator" fad among indie developers than of games in general. I'd draw an analogy to golf, bowling, track and field, and weightlifting, which are in essence single-player sports, yet a player is expected to improve over time. Likewise, several video games have areas available only in New Game+.
I don't find any replay value in Zelda, Mario, or other such highly regarded games, so my opinion is certainly not limited to current AAA devs or walking simulators. It's rather about what I enjoy in a game, and that I have an excellent memory. If I know what happens next in a movie, book, or game, it is no longer fun to me. I acknowledge I'm in a minority in this position.

New Game+ is a cheap cheat to get more play time, and if something is exclusive to it, I think I'd boycott that developer. Why would I suffer through hours of tedium to get that exclusive content?
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by rainwarrior »

calima wrote:I'm surprised, because you give off a really anti-free vibe.
It's very funny that you would get that impression of someone that's not anti-free at all? (Of all the regulars here, I'd guess that tepples is the most pro-free.)
calima wrote:Why do you continue to recommend non-free software, if you claim to be a supporter?
Why do you think that having anything to do with non-free software has to make someone anti-free?
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by tepples »

calima wrote:I'm surprised, because you give off a really anti-free vibe. Why do you continue to recommend non-free software, if you claim to be a supporter?
I support free software where it is practical. I learned GIMP instead of Paint Shop Pro or Photoshop, and I run Xubuntu on my laptop. My NES and Super NES projects are free software (save one) and built using free software (ca65 and Python+Pillow), and my Super NES makefile can be switched from a proprietary emulator to a free emulator on a suitable machine.

But I'm also pragmatically aware that the market for computing devices running a completely free software stack is not enough to sustain economies of scale. You won't find Purism Librem laptops in stores, for instance, and they don't make a full range of sizes (no 10-11", no 17") yet. And is it more enjoyable to play-test a Super NES game at one-fourth speed with choppy sound on a free emulator or on a proprietary emulator at full speed with correct sound? Because that's the speed difference between free bsnes and proprietary NO$SNS on the Atom N450 in my laptop.

Besides, I'm trying to help you find a free software solution to this problem. FCEUX for Windows is free, and it's not even Java trapped because 32-bit Wine is free, even if it does allegedly require you to install gigabytes of free software to support it.

Perhaps I wasn't clear, but the implication of the "genres" page was that if you don't need games, movies, or tax software, you can get along fine with only free software. Am I "anti-free" because I was lead programmer on Haunted: Halloween '85, a proprietary commercial NES game? And even that project used non-game-specific libraries that I had previously made available as (permissively licensed) free software.
If I know what happens next in a movie, book, or game, it is no longer fun to me. I acknowledge I'm in a minority in this position.
You're going to hate me for this:
It makes your car more aerodynamic.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by calima »

rainwarrior wrote:It's very funny that you would get that impression of someone that's not anti-free at all? (Of all the regulars here, I'd guess that tepples is the most pro-free.)
I got the impression, because he repeatedly tries to troll me over preferring free software.
tepples wrote:And is it more enjoyable to play-test a Super NES game at one-fourth speed with choppy sound on a free emulator or on a proprietary emulator at full speed with correct sound? Because that's the speed difference between free bsnes and proprietary NO$SNS on the Atom N450 in my laptop.
Is something wrong with snes9x or zsnes? I remember running them years ago, full speed on a Pentium 3, and not even trying bsnes because everyone claimed it was too slow.

That is your choice, though if it were me, I wouldn't use the proprietary emulator, I would improve the best existing free one. You certainly have the skills, taking from your online profiles.
Besides, I'm trying to help you find a free software solution to this problem.
My problem was solved. No need to go over it anymore.
Perhaps I wasn't clear, but the implication of the "genres" page was that if you don't need games, movies, or tax software, you can get along fine with only free software.
Well, I live in a country with sane tax laws, and do my company's accounting and taxes using entirely free software. So depends where you live.
zzo38
Posts: 1096
Joined: Mon Feb 07, 2011 12:46 pm

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by zzo38 »

If the software is free software then you may be able to compile it for 64-bit mode even if they don't provide 64-bit binaries. (This is one of the advantages of free software; there are also many other advantages.)

I used to use Windows but I now use Linux (the CPU of my old computer failed); this Linux is much better than Windows. However, I would let you to run these programs on whatever operating system you want and to use them with whatever programs you want to do. Since you are going to run the programs on your own computer, I certainly do not intend to stop you from doing what you want with it.

I prefer to use and write free software, however I often use a lot of different software from the common ones; I use i3-wm instead of the default window manager and desktop environment, I use xterm instead of the other terminal emulator, and for dealing with pictures I use ImageMagick instead of GIMP or whatever, and AmigaMML instead of MilkyTracker or whatever, and I use a highly customized version of Firefox.

I like the UNIX design and so write software that is based on such principles and will prefer to use such software too.

As far as I know, all native code I run on my computer is free software (with the possible exception of the BIOS and firmware). (I do use a few sandboxed non-native proprietary software though, such as some DOS games.)

There are many games which are free software (although a lot of them aren't), and a small number of movies, and no tax software as far as I know (in any case I do not understand taxes and get other people to do it for me).

About Microsoft open sourcing Windows, I have read that too somewhere, although I highly doubt it. However it seems reasonable to me that Microsoft might open source several files that would help Wine and ReactOS projects.

About non-free computer games, I think it can also depend on the game and on the VM. For example, there are different styles of computer games and VMs. A multi-player game could be played on internet you just connect to the server with a telnet client, you don't need to download their software. However, if it is a free software then you can also to download your own copy, learn the rules of the game more precisely, modify it to the preferences of your group of players, and can run it on a local network so it can even be used without an internet connection. You can have a free software implementation of Z-machine or Famicom VM or whatever, even if the program running under the VM is not free software. (The other way around is also possible; it is up to the user of the program, what they want to do.)

It is advantageous that SQLite is free software; for one thing, it even help me to find the bug in the program (which as far as I know they still have not put into their bug report system; the bug is that using auxdata together with triggers will sometimes cause functions to use the wrong auxdata because they keep track of only the line number and not which subprogram it is in).
(Free Hero Mesh - FOSS puzzle game engine)
tepples
Posts: 22705
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by tepples »

calima wrote:Is something wrong with snes9x or zsnes?
For one thing, Snes9x's license has a clause prohibiting distribution for a fee, making it non-free. So switching from NO$SNS to Snes9x would not decrease the amount of non-free software on a computer.

Plus last time I checked, Snes9x and ZSNES allowed writing to video memory during draw time without forced blanking. That's NESticle-levels of inaccuracy, and video memory access during draw time is one of the most common reason that homebrew and ROM hacks work in emulators but fail on hardware. The only reason you noticed you had a bug is that FCEUX is accurate enough not to let you do that. (It's inaccurate in other ways, but fortunately not that one.)
calima wrote:My problem was solved. No need to go over it anymore.
In that case, you're welcome to write a guide to using gdb to debug NES games. I'd be interested to read about the details.
calima wrote:Well, I live in a country with sane tax laws
I'll assume you didn't mean move.
adam_smasher
Posts: 271
Joined: Sun Mar 27, 2011 10:49 am
Location: Victoria, BC

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by adam_smasher »

tepples wrote:
calima wrote: Is something wrong with snes9x or zsnes?
For one thing, Snes9x's license has a clause prohibiting distribution for a fee, making it non-free. So switching from NO$SNS to Snes9x would not decrease the amount of non-free software on a computer.

Plus last time I checked, Snes9x and ZSNES allowed writing to video memory during draw time without forced blanking. That's NESticle-levels of inaccuracy, and video memory access during draw time is one of the most common reason that homebrew and ROM hacks work in emulators but fail on hardware. The only reason you noticed you had a bug is that FCEUX is accurate enough not to let you do that. (It's inaccurate in other ways, but fortunately not that one.)
ZSNES also has a known security flaw that allows for arbitrary code execution on the host machine. The many eyes of open source only get you so far when your code is unreadable x86 assembly!
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by calima »

tepples wrote:For one thing, Snes9x's license has a clause prohibiting distribution for a fee, making it non-free. So switching from NO$SNS to Snes9x would not decrease the amount of non-free software on a computer.
It would still be an improvement, no? A program you can modify, and verify what it's doing.
Plus last time I checked, Snes9x and ZSNES allowed writing to video memory during draw time without forced blanking. That's NESticle-levels of inaccuracy, and video memory access during draw time is one of the most common reason that homebrew and ROM hacks work in emulators but fail on hardware. The only reason you noticed you had a bug is that FCEUX is accurate enough not to let you do that. (It's inaccurate in other ways, but fortunately not that one.)
Good point, yeah. Have you tried to optimize bsnes?

This particular bug would have been noticed on any emulator though, it would have prevented reacting to input even if the graphical glitches wouldn't have shown.
In that case, you're welcome to write a guide to using gdb to debug NES games. I'd be interested to read about the details.
Eh, that's not really something I'm interested in. It was basic gdb usage, combined with fceux keeping the guest RAM in a pointer called RAM.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by calima »

tepples wrote:
calima wrote:Well, I live in a country with sane tax laws
I'll assume you didn't mean move.
Yeah, it was more "vote for someone who will make your laws sane".
Near
Founder of higan project
Posts: 1553
Joined: Mon Mar 27, 2006 5:23 pm

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by Near »

And is it more enjoyable to play-test a Super NES game at one-fourth speed with choppy sound on a free emulator or on a proprietary emulator at full speed with correct sound? Because that's the speed difference between free bsnes and proprietary NO$SNS on the Atom N450 in my laptop.
Use the performance profile on an Atom processor. I get 80fps on my MSI Wind, and 100fps on my NUC.

If you're only getting 15fps on your Atom with that, then it's due to user error.

Or use Snes9X v1.54 beta, which is nearly twice as fast and nearly as good as the performance profile.
For one thing, Snes9x's license has a clause prohibiting distribution for a fee, making it non-free. So switching from NO$SNS to Snes9x would not decrease the amount of non-free software on a computer.
Only the most extreme zealots would equate closed-source, pure x86-assembly, Win32-only, $2.50 for the latest version, no$sns with open-source Snes9X, C, ported to nearly every system imaginable. Plus, last time I benchmarked the two, Snes9X was faster.

Unless calima is intending to sell Snes9X, then it's not a problem for him.
Have you tried to optimize bsnes?
This goes entirely against the purpose of the project. I mean, you can do it anyway, but most of the lost performance in the fastest profile is due to design requirements of the most accurate profile. It would be very easy to speed things up a lot, if one were to break the accuracy profile from building with the same core.

I continue to offer to start on a new SNES emulator that has a focus on performance, but still tries to be reasonable about accuracy. We could set up an SVN or Git repository for it. I'm willing to help out a lot, but I'm not willing to do it alone. Especially not the GUI ... I want nothing to do with that.
Sik
Posts: 1589
Joined: Thu Aug 12, 2010 3:43 am

Re: Getting into 8-bit NESdev with only 64-bit free software

Post by Sik »

byuu wrote:Especially not the GUI ... I want nothing to do with that.
Use IUP? I know it's C but having used Qt and FLTK before (and looked into other GUIs) it seriously seems like one of the easiest to use out there (at the expense of making it harder to make heavily custom controls, but an emulator shouldn't need that).
Post Reply