A SNES version is very likely possible, actually smile

But like arfink says, NES version + software first.

This thread is already way too long smile

And after looking at one of the shapes a few messages ago, I just have to say this:

BOOBIES!!!!!!!!!

Thank you.

Y'all, I need to just do an update where you can edit them like normal tiles in a game. Best to wait for that than do something convoluted...

Yeah, it was kind of funny for arfink to just put the cartridge in and connect the NES to his laptop, but then not do anything more with it, while I was remotely sending multiple programs to it and reporting the results to him. I guess I'll be doing this all week while I wait for the hardware in the main from him. smile

No, unfortunately it's not just a CHR change at the moment. The format is a little odd. I could at least put them in a more normal format so you can hack them with standard NES romhacking tools. I could also extend the shape selection to allow more banks of four shapes. I'll have to take a look at making this more customizable.

BTW, thanks for putting new shapes in. It shows that I need to be sure to release source for things because it does help. smile

Oh yeah, about the shapes, you should avoid having much go in the left two and right three columns. If you run on a NES, anything on those edge columns will have glitches due to the way it generates so many colors. It's OK if a shape has a little sharp corner that pokes in a bit, but try to keep within the box of the standard square shape.

My understanding is that Famicom carts just lack the extra I/O lines in the middle, and that you can even get some Famicom-to-NES adaptors that fit inside the cartridge (some early NES releases used these, I've read, since they had excess Famicom boards already made). Hopefully the Famicom doesn't have any other hardware differences that will cause a problem. The controller port for the PC cable might be an issue, as I think they work a little differently.

I finally put the full source code up for the NES and SNES versions of litewall (they share most of the same files, thankfully).

These are most likely the game boards we can use to build versions for these systems:

Most-likely eligible NES games

Most-likely eligible PAL games

Most-likely eligible Famicom games

If your NES has the CIC disabled internally, it will be able to use the NTSC or PAL versions interchangeably.

Regarding MMC1 support, I believe we can provide support for some MMC1 programs, especially if they are written with the limitations in mind. Mainly it'll be that it's 256K or smaller, uses CHR RAM, and doesn't try to change the CHR bank to anything other than 0 (which a CHR RAM program would have no reason to do anyway).

The main goal is to support NROM with 32K PRG and 8K CHR ROM (or RAM), with optional battery RAM. Given the 512K Flash and 64K internal segment size, there should be room for at least 6 NROMs at once, with a menu to select which one to run.

Yeah, the PC cable works fine on a PAL NES, and fortunately I have one for testing. I've been using it for years. As arfink said, it's just an adjustment to the timing loops, since the PAL CPU runs slightly slower than the NTSC one. Ideally the cart would have a Ciclone chip in it, so that it would work on NTSC or PAL NES, but we probably won't put that in the first version, which will be NTSC/PAL depending on the original cart we start with. The alternative is to use a NES with the CIC disabled by cutting a pin, or the redesigned one which I hear doesn't even have a CIC.

Yeah, your approach makes sense: leverage what many people have already. And note that the ~450 kbps rate I gave was the NES just reading $4017 constantly and ignoring the value. smile You can't do anything useful with the data, but it does give an upper bound to anything possible... errr, unless you did three-bit parallel data transfer that is, using D0, D3, and D4 on the controller port. Wow, that'd give you about 1.5 Mbps. We're talking broadband, man! Upper limit, of course. I'm not at all familiar with the Arduino, and I think it may only have a 57.6 kbps host rate anyway.

As I understand it, this is a device which connects to the NES controller port, and doesn't require anything special on the NES side; it's all in software. So anything can make full use of it, be it a program running on PowerPak, a cart with EPROM in it, etc. It's just a software protocol you use to communicate with it.

And being synchronous as I understand it, it doesn't require any cycle-timed code, and can run quite fast. If the hardware can keep up, the NES can read bits from the controller port at a maximum rate of 447 kilobits per second. More realistically, if it's actually saving the data somewhere, around 150 kilobits per second. And if I understand it right, the protocol makes it trivial software-wise, just a few instructions to read a bit.

The sector size on these Flash chips is in the 16-32K range, so you can't easily just rewrite a small portion of code, as you have to erase a whole sector. I'd think if you want to receive data from the PC while running, you'd put it in the 8K WRAM area. This allows working on other programmable cartridges as well, which I think is a good thing.

Well, 25 kbps is slower than the 57.6 kbps can easily do in software on the NES, but the big advantage is that you get buffering, critical for music players and such. Is this interface synchronous, where the Arduino is clocked by the controller strobe rather than requiring cycle-timed NES code when reading? You can PM me if my questions are cluttering up your thread, BTW.

What's the maximum transfer speed a NES program could receive at, assuming it just threw away every byte received? We'll definitely have to support this in the bootloader of our devcart.

I prefer taking things a step at a time, so right now the phase is "build a prototype and see how it works". I'm pretty optimistic, but I've never used these Flash chips before, so there might be some snags. I don't want to make any big promises. Heh, I'm in a US-Central time zone, I just have an odd sleep schedule right now.

The idea is for the code to go into the 128K/256K/perhaps larger Flash chip, and leave the battery RAM open for the code to use. The older design before these Flash chips was to use battery RAM (that's how all my current carts work).

And the PC-to-NES cable is as simple as it comes. It's basically just a USB-to-serial cable connected to the controller port, with the NES doing a software-based UART running at 5.7 KB/sec. And yes, the NES can send data back to the PC. One interesting program I've made using this link is an NSF player that runs on the PC, but sends the sound chip writes to the NES for more authentic sound (and even suppots DMC samples).