Trying to figure out Action53

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Trying to figure out Action53

Post by blahblahblah »

I want to make a multicart eventually of all the NES ROMs I've made. They are all the same mapper -- Mapper 30, coming from NESMaker, but converted to Mapper 2 so they work with this:
https://github.com/pinobatch/action53

I downloaded all the junk, plugged in all the plug-ins, and ran the test program to see if it worked....but I couldn't even get that far. The main problem is that you have to use a command line to compile it.

I really don't understand why everyone on Github keeps writing their programs with this confusing mechanic; why are we still using command lines in 2022? Worse yet, they all assume complete and total knowledge of using command lines before you begin. I have no idea what's going on with these things.

So when I open CMD on Windows and navigate to the Action 53 folder, I copy-paste this:

tools/a53build.py example.cfg example.nes

...nothing happens. Specifically, it keeps telling me it needs a file called "a53menu.prg" and it's not there. Well, it really isn't there. Did they forget to put it in? What am I expected to do here?
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Trying to figure out Action53

Post by rainwarrior »

blahblahblah wrote: Sun May 01, 2022 6:11 pmI really don't understand why everyone on Github keeps writing their programs with this confusing mechanic; why are we still using command lines in 2022? Worse yet, they all assume complete and total knowledge of using command lines before you begin. I have no idea what's going on with these things.
If you want to do programming, you're going to have to learn about command lines. They are not obsolete, and they are not going away.
blahblahblah wrote: Sun May 01, 2022 6:11 pm...nothing happens. Specifically, it keeps telling me it needs a file called "a53menu.prg" and it's not there. Well, it really isn't there. Did they forget to put it in? What am I expected to do here?
I believe a53menu.prg is built first by running "make". Unfortunately, this is not a tool that's normally available on windows. I believe this action53 tool was written on and for linux.

At this point, I'm not sure if the easier suggestion is to install a Linux VM, install MSYS2, install linux subsystem for windows, or to look for GNU Make for Windows, but unfortunately building linux stuff on Windows is not a simple turnkey operation, so I can't really give you a quick walkthrough at this point.

Maybe someone has an already built PRG that they can share.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

rainwarrior wrote: Sun May 01, 2022 9:46 pm Maybe someone has an already built PRG that they can share.
So PRG doesn't have to be specific to each individual ROM? According to this page, GNU Make is "a program to calculate which files need to be rebuilt when other files change."
https://github.com/pinobatch/nrom-template

That's the page the Action53 page sends you to gather the required plug-ins. There is a complete set of plug-ins for Windows, but not much instruction as to how to use them.
To make ca65 and ld65 available to Make, you'll need to add the folder containing ca65.exe and ld65.exe to Path or put them in a folder already on Path.

Then open the makefile in a text editor and change EMU to the path of whatever NES emulator you have installed.

If make prints nothing, not even "command not found" or "No targets specified and no makefile found", then you may have accidentally downloaded and installed Make with Guile. Download the version without Guile and try again.

To get make dist to build a zipfile, you'll need to install the Zip and UnZip command-line tools published by Info-ZIP. Be careful, as unz600xn.exe is a self-extracting archive that extracts multiple files to the current directory, like a tarbomb, so run it in a new folder and then copy zip.exe and unzip.exe to a folder on Path.
I can't open up a makefile until I know what it is, or where it is. They don't even tell you what kind of command makes the file! Help?
Last edited by blahblahblah on Sun May 01, 2022 10:59 pm, edited 1 time in total.
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Trying to figure out Action53

Post by rainwarrior »

blahblahblah wrote: Sun May 01, 2022 10:58 pmSo PRG doesn't have to be specific to each individual ROM?
I don't know, but I was assuming that "make" will build a PRG file and then that python script injects the other stuff into it? Somebody who understands how this tool works could give you a better answer.
blahblahblah wrote:I can't open up a makefile until I know what it is, or where it is. They don't even tell you what kind of command makes the file! Help?
A makefile is a file named "makefile". You can find it in the root directory of the project.

It's just a text file, you can open/edit it with a text editor. Inside is a program in the make language for building he project.

To run a makefile program, you normally just type "make" on the command line, assuming you have the make utility installed (and everything else you need). That automatically looks for the file called "makefile" and executes it.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

rainwarrior wrote: Sun May 01, 2022 11:27 pm
To run a makefile program, you normally just type "make" on the command line, assuming you have the make utility installed (and everything else you need). That automatically looks for the file called "makefile" and executes it.
Okay, I found it, and typed in Make, but it's doing this:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'make' is not defined
I don't know what it means by Line 1. The first line of the makefile is:

#!/usr/bin/make -f

That directory doesn't exist. But you'll notice it's commented out, so it shouldn't actually be doing anything.
Last edited by blahblahblah on Sun May 01, 2022 11:54 pm, edited 1 time in total.
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Trying to figure out Action53

Post by rainwarrior »

I think you may have typed "make" into a python interpreter, and not into a command line.


I'm sorry that I'm not much help here but it's hard to tell what you have, what you already know, and how you're trying to go about it from this message board dialog. All I can say is that this task will probably be quite a bit more difficult than it seems like it should be, because it will require a bunch of baseline knowledge to proceed.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

rainwarrior wrote: Mon May 02, 2022 12:15 am I think you may have typed "make" into a python interpreter, and not into a command line.
Well, I'm getting closer. "Make" works now but got halfway through the process before it spit out an incomprehensible error.
py tools/vwfbuild.py tilesets/vwf7.png obj/nes/vwf7.s
ca65 -DDPCM_UNSAFE=1 obj/nes/vwf7.s -o obj/nes/vwf7.o
ca65 -DDPCM_UNSAFE=1 src/wait_loops.s -o obj/nes/wait_loops.o
ca65 -DDPCM_UNSAFE=1 src/vwf_draw.s -o obj/nes/vwf_draw.o
py tools/quadanalyze.py audio/selnow.wav obj/nes/selnow.qdp
Traceback (most recent call last):
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\quadanalyze.py", line 191, in <module>
main()
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\quadanalyze.py", line 184, in main
bitstream = quads_enc(wavedata)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\quadanalyze.py", line 140, in quads_enc
bitstream.fromstring(enc)
AttributeError: 'array.array' object has no attribute 'fromstring'
make: *** [makefile:122: obj/nes/selnow.qdp] Error 1
rm obj/nes/vwf7.s
Here's what Line 122 of makefile looks like, plus the surrounding code:
# Files that depend on .incbin'd files
$(objdir)/cartmenu.o: $(objdir)/select_tiles.chr.donut
$(objdir)/quadpcm.o: $(objdir)/selnow.qdp
$(objdir)/selnow.qdp: tools/quadanalyze.py audio/selnow.wav
$(PY) $^ $@
To me it looks like it got hung up on the part with the digitized speech ("Make your selection now"). Am I wrong?
obj/nes/selnow.qdp does not exist, but is it trying to make it?
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Trying to figure out Action53

Post by rainwarrior »

blahblahblah wrote: Mon May 02, 2022 12:42 am
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\quadanalyze.py", line 140, in quads_enc
bitstream.fromstring(enc)
AttributeError: 'array.array' object has no attribute 'fromstring'
This is where your error was. I believe the problem here is that quadanalyze.py was written for an earlier version of python and "fromstring" was removed in python 3.9. You might be able to fix it by changing "fromstring" to "frombytes"? After doing that just run make again.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

rainwarrior wrote: Mon May 02, 2022 1:26 am
blahblahblah wrote: Mon May 02, 2022 12:42 am
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\quadanalyze.py", line 140, in quads_enc
bitstream.fromstring(enc)
AttributeError: 'array.array' object has no attribute 'fromstring'
This is where your error was. I believe the problem here is that quadanalyze.py was written for an earlier version of python and "fromstring" was removed in python 3.9. You might be able to fix it by changing "fromstring" to "frombytes"? After doing that just run make again.
Ok, that got me this far:
py tools/quadanalyze.py audio/selnow.wav obj/nes/selnow.qdp
ca65 -DDPCM_UNSAFE=1 src/quadpcm.s -o obj/nes/quadpcm.o
ca65 -DDPCM_UNSAFE=1 src/bcd.s -o obj/nes/bcd.o
ca65 -DDPCM_UNSAFE=1 src/paldetect.s -o obj/nes/paldetect.o
ca65 -DDPCM_UNSAFE=1 src/zapkernels.s -o obj/nes/zapkernels.o
ca65 -DDPCM_UNSAFE=1 src/a53mapper.s -o obj/nes/a53mapper.o
ca65 -DDPCM_UNSAFE=1 src/main.s -o obj/nes/main.o
ca65 -DDPCM_UNSAFE=1 src/title.s -o obj/nes/title.o
gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/donut.exe tools/donut.c
make: gcc: No such file or directory
make: *** [makefile:63: tools/donut.exe] Error 127
Now it's looking for something called donut.exe that isn't in the folder. What is that and how do I get it?
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Trying to figure out Action53

Post by rainwarrior »

gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/donut.exe tools/donut.c
make: gcc: No such file or directory
make: *** [makefile:63: tools/donut.exe] Error 127
The error is that it could not build donut.exe. The "No such file or directory" is "gcc", meaning the GNU C Compiler, which is one of the prerequisites.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

rainwarrior wrote: Mon May 02, 2022 2:10 pm
gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/donut.exe tools/donut.c
make: gcc: No such file or directory
make: *** [makefile:63: tools/donut.exe] Error 127
The error is that it could not build donut.exe. The "No such file or directory" is "gcc", meaning the GNU C Compiler, which is one of the prerequisites.
That wasn't covered on the page. Looking into it, wow, they sure don't make this easy:
https://gcc.gnu.org/

What do I do? What specific thing do I download and how do I apply it?
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Trying to figure out Action53

Post by unregistered »

Hi blahblahblah.

Visit, read, and download using this page: https://www.gnu.org/prep/ftp.html

You want to obtain the latest version of GCC, that runs on whatever system you are using. :)
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Trying to figure out Action53

Post by Joe »

If you're on Windows 10 or later, I would suggest uninstalling the tools you've used so far and switching to WSL. (I use Debian, but Ubuntu may be a better choice if you're totally lost.) This will add an "open Linux shell here" menu item when you hold shift and right-click on a folder.

Inside the Linux shell, you can install all of the tools you need by typing "sudo apt install [name]". For example, installing GCC is done by running "sudo apt install gcc". Repeat this process for the other tools you need if they're not already installed: cc65, make, python...
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Trying to figure out Action53

Post by unregistered »

The latest version seems to be 11.3.0.

https://bigsearcher.com/mirrors/gcc/rel ... cc-11.3.0/

Download the tar.gz and unzip that… I used 7-Zip.


This was a long while ago, but I believe this is the way to go. :) I’m using Win10.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

unregistered wrote: Mon May 02, 2022 3:42 pm The latest version seems to be 11.3.0.

https://bigsearcher.com/mirrors/gcc/rel ... cc-11.3.0/

Download the tar.gz and unzip that… I used 7-Zip.


This was a long while ago, but I believe this is the way to go. :) I’m using Win10.
Geez, there are over 200,000 scripts in this. Not an exaggeration. Where do I put them all so that Make can use them?

Also, there's an extra folder that just has one file in it, called "PaxHeaders.23387," and in there is just one thing, called "gcc-11.3.0." What do I do with that?
Post Reply