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

unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Trying to figure out Action53

Post by unregistered »

Hmm… there should be an exe file for installation.

Try the unzipping the tar.xz file.


Maybe tar.xz is for Windows, and so it’ll contain an exe to install? Sry, it’s been a while, but I checked and tar.xz seems like Windows to me.
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Trying to figure out Action53

Post by Joe »

unregistered wrote: Mon May 02, 2022 3:55 pmHmm… there should be an exe file for installation.
It's just the source code. There are no Windows .exe files in there.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

Joe wrote: Mon May 02, 2022 4:02 pm
unregistered wrote: Mon May 02, 2022 3:55 pmHmm… there should be an exe file for installation.
It's just the source code. There are no Windows .exe files in there.
Where do I put it then? Where does it go so that make can use it?
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Trying to figure out Action53

Post by Joe »

You can't use the source code. You need a Windows .exe file. (Unless you're using WSL.)
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

Joe wrote: Mon May 02, 2022 4:10 pm You can't use the source code. You need a Windows .exe file. (Unless you're using WSL.)
So there's no way to have GCC work on Windows? That can't be right...
Joe
Posts: 650
Joined: Mon Apr 01, 2013 11:17 pm

Re: Trying to figure out Action53

Post by Joe »

There are lots of ways to have GCC on Windows - I just don't know how to make it work with the tools you've already installed, because I use WSL and MSYS2, and you're not using either of those.
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Trying to figure out Action53

Post by unregistered »

Ahh, thanks Joe. Sry, I installed MingW.

https://youtu.be/2jpLG_XBVWI

Followed that video instruction.


EDIT: I didn’t follow all of that video’s instruction… I just installed MingW’s gcc, bc that’s all I needed. :) At least, I know I read through the list of options and chose whatever option gave me gcc… don’t think I installed anything else.


Ahh, ok so I installed cpp.exe and some other exes too. I’m not going to use C++, so cpp.exe was probably a waste of space, for me at least.
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 4:20 pm Ahh, thanks Joe. Sry, I installed MingW.

https://youtu.be/2jpLG_XBVWI

Followed that video instruction.
Thanks -- looks like I'm over that hurdle. Here's the error it's giving me now...
gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/donut.exe tools/donut.c
py tools/pilbmp2nes.py tilesets/select_tiles.png obj/nes/select_tiles.chr
tools/donut.exe -fq obj/nes/select_tiles.chr obj/nes/select_tiles.chr.donut
ca65 -DDPCM_UNSAFE=1 src/cartmenu.s -o obj/nes/cartmenu.o
ca65 -DDPCM_UNSAFE=1 src/coredump.s -o obj/nes/coredump.o
ca65 -DDPCM_UNSAFE=1 src/donut.s -o obj/nes/donut.o
ca65 -DDPCM_UNSAFE=1 src/interbank_fetch.s -o obj/nes/interbank_fetch.o
ca65 -DDPCM_UNSAFE=1 src/pads.s -o obj/nes/pads.o
ca65 -DDPCM_UNSAFE=1 src/mouse.s -o obj/nes/mouse.o
ca65 -DDPCM_UNSAFE=1 src/ppuclear.s -o obj/nes/ppuclear.o
ca65 -DDPCM_UNSAFE=1 src/identify.s -o obj/nes/identify.o
ca65 -DDPCM_UNSAFE=1 src/undte.s -o obj/nes/undte.o
py tools/pentlybss.py src/pentlyconfig.inc pentlymusicbase -o obj/nes/pentlybss.inc
ca65 -DDPCM_UNSAFE=1 src/pentlysound.s -o obj/nes/pentlysound.o
ca65 -DDPCM_UNSAFE=1 src/pentlymusic.s -o obj/nes/pentlymusic.o
ca65 -DDPCM_UNSAFE=1 src/checksums.s -o obj/nes/checksums.o
py tools/pentlyas.py src/musicseq.pently -o obj/nes/musicseq.s --periods 76
ca65 -DDPCM_UNSAFE=1 obj/nes/musicseq.s -o obj/nes/musicseq.o
ld65 -o a53menu.prg -m map.txt -C lastbank.x obj/nes/vwf7.o obj/nes/wait_loops.o obj/nes/vwf_draw.o obj/nes/quadpcm.o obj/nes/bcd.o obj/nes/paldetect.o obj/nes/zapkernels.o obj/nes/a53mapper.o obj/nes/main.o obj/nes/title.o obj/nes/cartmenu.o obj/nes/coredump.o obj/nes/donut.o obj/nes/interbank_fetch.o obj/nes/pads.o obj/nes/mouse.o obj/nes/ppuclear.o obj/nes/identify.o obj/nes/undte.o obj/nes/pentlysound.o obj/nes/pentlymusic.o obj/nes/checksums.o obj/nes/musicseq.o
gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/dte.exe tools/dte.c
py tools/a53build.py collections/demo/a53.cfg demo.nes
Using compiled Donut executable
Traceback (most recent call last):
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1499, in <module>
main()
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1256, in main
parsed = RomsetParser(filenames=[cfgfilename])
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 119, in __init__
ok = self.read([firstfilename])
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 152, in read
self.readfp(lines)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 124, in readfp
self.addline(line)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 106, in addline
raise ValueError("unrecognized pair: " + repr(s))
ValueError: unrecognized pair: '.'
make: *** [makefile:73: demo.nes] Error 1
rm obj/nes/select_tiles.chr obj/nes/musicseq.s
What do I need to do next?
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Trying to figure out Action53

Post by unregistered »

blahblahblah wrote: Mon May 02, 2022 4:48 pm
gcc -static -std=gnu99 -Wall -Wextra -DNDEBUG -Os -o tools/dte.exe tools/dte.c
py tools/a53build.py collections/demo/a53.cfg demo.nes
Using compiled Donut executable
Traceback (most recent call last):
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1499, in <module>
main()
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1256, in main
parsed = RomsetParser(filenames=[cfgfilename])
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 119, in __init__
ok = self.read([firstfilename])
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 152, in read
self.readfp(lines)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 124, in readfp
self.addline(line)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\innie.py", line 106, in addline
raise ValueError("unrecognized pair: " + repr(s))
ValueError: unrecognized pair: '.'
make: *** [makefile:73: demo.nes] Error 1
rm obj/nes/select_tiles.chr obj/nes/musicseq.s
What do I need to do next?
Glad MingW helped. :)


Ummm, I’ve never built an nes game with c code…
but, it seems like in your innie.py file, on line 106, there is a weird period (‘.’) in the self.addline(line) function call.

However, that’s just a guess. Notice it says
Traceback (most recent call last):
so, the last line is the last call before it crashed with ValueError: unrecognized pair: '.'.


EDIT: often it was helpful to search the error message with duckduckgo.com and try to find an explanation listed from a helpful site like stackoverflow.com.



FINAL-EDIT: Sry for my probably unhelpful reply; hope rainwarroir replies again; he knows what he’s talking about.
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 8:32 pm Ummm, I’ve never built an nes game with c code…
but, it seems like in your innie.py file, on line 106, there is a weird period (‘.’) in the self.addline(line) function call.

However, that’s just a guess. Notice it says
Traceback (most recent call last):
so, the last line is the last call before it crashed with ValueError: unrecognized pair: '.'.

EDIT: often it was helpful to search the error message with duckduckgo.com and try to find an explanation listed from a helpful site like stackoverflow.com.
I tried searching for that specific error message and nothing turned up. Then I tried looking at the code for where the error was coming from:
# at this point we're not in a multiline
s = s.lstrip()
if not s:
return
m = self._firstlineRE.match(s) or self._secttitleRE.match(s)
if m is None:
raise ValueError("unrecognized pair: " + repr(s))
It seems to me like if it doesn't see any more entries, it just automatically says that error even if everything went smoothly.
And my theory was boosted by the fact that there was already an a53menu.prg in the main folder. Was it complete?

I decided to try, and the test ROM compiled successfully! Yay, first step over!

Now to the second and much harder step. I was expecting something to go wrong when I tried one of my homemade ROMs and I was right: the compiler spit it out because it has a limit of 256kb and my ROM is 512kb.
Traceback (most recent call last):
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1500, in <module>
main()
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 1296, in main
exit_patches = get_exit_patches(titles, roms, skip_full)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\a53build.py", line 709, in get_exit_patches
patcher = ExitPatcher(len(romdata['prg']), romdata['mapper'], u)
File "C:\Users\HP ProDesk\Desktop\action53-master\tools\exitpatch.py", line 191, in __init__
raise ValueError("prg size is %d bytes, not 32, 64, 128, or 256 KiB"
ValueError: prg size is 524288 bytes, not 32, 64, 128, or 256 KiB
How do I adjust this so that it takes 512kb ROMs? No, I can't make my own ROM smaller; it's NESMaker brand.

Here's the offending part in exitpatch.py:
def __init__(self, prgsize, mapper, prgunused):
"""prgsize: len(prg); mapper sets default patch type; prgunused: slice lists"""
if prgsize not in (0x8000, 0x10000, 0x20000, 0x40000):
raise ValueError("prg size is %d bytes, not 32, 64, 128, or 256 KiB"
% prgsize)
self.prgsize = prgsize
try:
self.default_method = self.mapper_patchtypes[mapper]
except KeyError:
raise ValueError("no patch method for mapper %s" % (mapper,))
self.prgunused = prgunused
self.patched = [False for i in range(0, self.prgsize, 0x8000)]
self.patches = []
Then there's another part in a53build.py that enforces the limit:
# The outer bank size
prgSizeToA53 = {
16384: 0x00,
32768: 0x00,
65536: 0x10,
131072: 0x20,
262144: 0x30
}
So I edited them both:
# The outer bank size
prgSizeToA53 = {
16384: 0x00,
32768: 0x00,
65536: 0x10,
131072: 0x20,
262144: 0x30,
524288: 0x40
}
if prgsize not in (0x8000, 0x10000, 0x20000, 0x40000, 0x50000, 0x60000):
Weirdly I still get the error message from exitpatch.py even though it should be tolerating way more than 256kb. What am I missing?

I don't care if the solution is simple or will take weeks, I need to make this multicart happen. How do I fix this?
Last edited by blahblahblah on Tue May 03, 2022 12:06 am, edited 1 time in total.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Trying to figure out Action53

Post by calima »

You can't. It's a hardware limit of the action53 mapper.

Heavy surgery on the ROMs themselves, essentially converting them to a53, could do it, but you won't be able to do so in weeks. Reducing your ROMs to 256kb or smaller is the simpler way.

There is no existing multicart mapper capable of having many 512kb UNROMs. If you absolutely do need one, there are some folks able to design such custom boards (retrostage, etc), but it won't be cheap. If you don't need a menu, but pressing a switch on the cart is enough, that may be a bit cheaper. The latter could also be done by Chinese folks, but then you'd have the language barrier and possible quality issues.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

calima wrote: Tue May 03, 2022 12:02 am You can't. It's a hardware limit of the action53 mapper.

Heavy surgery on the ROMs themselves, essentially converting them to a53, could do it, but you won't be able to do so in weeks. Reducing your ROMs to 256kb or smaller is the simpler way.

There is no existing multicart mapper capable of having many 512kb UNROMs. If you absolutely do need one, there are some folks able to design such custom boards (retrostage, etc), but it won't be cheap. If you don't need a menu, but pressing a switch on the cart is enough, that may be a bit cheaper. The latter could also be done by Chinese folks, but then you'd have the language barrier and possible quality issues.
How not cheap are we talking?

The problem with a custom board is having them manufactured. InfiniteNESLives doesn't take custom boards, do they?

And isn't a53 Mapper 28? Someone told me there's a way to convert Mapper 30 to 28 that isn't too painful. Dunno if he was lying but it's my best hope right now.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Trying to figure out Action53

Post by calima »

I can't speak for retrostage, but a handwavey estimate for an UNROM-512 multicart board with menu support could be several thousand (design + making a few hundred of such boards, as a minimum order). A simpler multicart, without menu support but switched with some button or switch on the cart, could be designed for maybe few hundred, then manufactured for maybe 10-20$ a piece.

The manufacturing question does depend on how many of these do you need. Is it a "for friends" thing with 10 pieces or for sale with hundreds. Not sure of INL's policies.

Action53 is mapper 28 yes.
blahblahblah
Posts: 37
Joined: Sun May 01, 2022 6:02 pm

Re: Trying to figure out Action53

Post by blahblahblah »

calima wrote: Tue May 03, 2022 12:55 am Action53 is mapper 28 yes.
So I'm curious...why would having the ROMs be the same mapper bypass the 256k limit? I want to make sure this isn't a dead end before I put serious effort into it.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Trying to figure out Action53

Post by calima »

Manually editing each ROM means they can access the mapper's full abilities (up to 8mb total PRG size, etc). The 256kb limit is when it's pretending to be UNROM.

But to be clear, you can't feed such edited ROMs to the a53 menu maker scripts, they're not designed for that. You'd have to edit them as the complete whole, and make a menu manually too.
Post Reply