I've finally restored my website to http://blargg.8bitalley.com/ (it used to be at http://www.slack.net/~ant ).

Note that the images aren't showing properly for the linked doc page there. They show the sawtooth visual waveforms in the pulsing/palette table. I'm working on getting my website back up.

If anything, my love of retro console hacking and development is a danger to my health, since I find it all so satisfying to work on! My worry is that I'll still be interested and working on this stuff even after everyone else has left the building.

I've been able to deal with more things recently, having some help from a friend dealing things in my life. I wish arfink had released what he had, but it's hard to lay blame on someone for being considerate smile

I feel awful for having had to suddenly and completely leave all the online forums I used to visit. I couldn't deal with all the stuff, not even programming. It was terrible to not be programming, but it was very overwhelming (and still is, to some extent). Even still, I can barely approach all my projects. I desire so much to continue madly improving everything, but fall short when it comes to energy/feeling good enough to do very much.

I'm still working at much diminished capacity, and am trying to avoid taking on too much again. I've gotten all the source code for Munchausen put together (including all the assembly stuff) so that I'm not sitting on the only copy. Just dusting Munchausen off and using it, I was reminded how cool it is and how sad that it's been delayed so much. I'm trying to contact arfink but not getting much response, which makes it hard to find enthusiasm to get things moving along again.

nickmaynard wrote:

damn, the white cart is so good looking.

I love the White Cart. It's so bad.

Only 2A03 sound can be supported by the NSF player, unless you can hotswap a VRC6 cartridge into the NES. arfink hasn't had luck with hotswapping on his NES, and I haven't either with my Munchausen prototype. Apparently it depends on some aspect of the cartridge PCB, because some of my others hotswap just fine.

One obvious way would be to convert the NSF into a ROM. Not sure what all tools there are that do this. Some NSFs might be able to be played. The main problem is that NSFs use a non-standard bankswitching method. I've never acrually run NSFs on my NES before, so I'll have to research this to know more. I will at some point be releasing an NSF player that does the emulation on the PC and sends the sound data to the NES in real-time to be played over the 2A03, though DMC samples won't be supported, due to technical limitations.

There's still quite a bit of work to do, and I don't want to attempt more than I can handle, so I'm trying to stick to a core functionality for the first release, with software updates adding more features.

Given how the menu is currently running, SRAM features would be hard to demo smile

The remote run feture is quite useful. You can load a new program in and have it start running immediately, without having to select it with the controller.

Also, the "hold A when power up to run last selected game" is mainly meant for if you're at a show or whatever and don't want the jarring menu to appear. For example if you've got litewall selected. I mayb expand this to allow direct access to any slot, for example hold A+Up to run slot 1, A+Down to run slot 2, etc. so you can avoid the menu appearing. I may also add a toggle so you can have it always run the last selected item if you're not pressing anything on the controller. Then you'd hold A to SHOW the menu. Anyway, that's down the line...

Finally making some progress on the software. First, I've got a decent looking menu now, with a nice highlighting effect. Second, there's the menu repair utility in case all the writable Flash gets erased or you accidentally reset while rewriting the menu program. The repair utility will be in a protected sector of the Flash chip, which will prevent it from ever getting erased. Why not put the whole menu into the protected sector? Then it can't be updated with improvements or fixes.

SurfaceDragon, it will very likely support either six 32K NROMs loaded at once, or two NROMs and one MMC1, with a menu to select which one to run. It might be possible at some point to fit ten NROMs or four NROMs and one MMC1, though that would require more Flash rewriting each time one was loaded/unloaded. There is a lot of flexibility in the software, so the first release will have plenty of room for upgrades without any changes to the cartridge.

I like the load status beeps. That was a great idea.

That was just for this development version where it's the only way to know it's working. The release will show a progress bar on the PC, so you don't need the NES even connected to a TV or anything while loading it.

Here's the current API I'm working on. It makes working with the cartridge extremely simple from C. It will be used to build the various tools for putting things on the cartridge and backing up SRAM. Initially I'm writing a simple command-line tool, but there should be some GUIs at some point.

// Bank parameter below selects 16K bank from Flash at $8000.
// It can be any value from 0 to $1F.

// Confirm that NES and Munchausen cartridge are ready
error_t ping();

// Read section of cartridge or NES memory, including SRAM
error_t read_mem( void* out, int size, int addr, int bank );

// Write any section of cartridge or NES memory, including SRAM
error_t write_mem( void const* in, int size, int addr, int bank );

// Find CRC 16 of any section of NES memory
error_t crc16_mem( unsigned* out, int size, int addr, int bank );

// Program any portion of cartridge Flash memory. Size and addr must be
// multiple of 256. Flash memory is 512K total ($80000 bytes).
error_t write_flash( void const* in, int size, int addr );

// Erase a 64K sector of Flash. There are 8 total.
error_t erase_sector( int sector );

Different errors are returned for the following situations:
* NES not responding
* Munchausen cartridge not working properly
* Data transfer error
* Flash programming failed
* Flash took too long to program
* Flash erase failed

All data transferred between the PC and NES is extensively checksummed, to avoid any undetected data errors. Given the clean API, it will be easy to write thorough tests of the cartridge and API. I plan on adding a cartridge test function which ensures all the Munchausen functions are working.

11

(147 replies, posted in Nintendo Consoles)

Nope, the space between rows of lights is a technical limitation. During those scanlines the palette is updated for the next row, so it has to be a solid color.

Great idea. Hold B and press Start to toggle animation of current bank on/off. While enabled, B+Up/Down adjusts animation rate:

blargg_litewall-10c.zip

*E, the end connector looks too small on that one. Measuring an adaptor that works in my US and PAL NES consoles, it's about 5.0 mm OD/2.9 mm ID. I believe a 5.0/2.5 would work as well. I'm not very experienced with these sizes though, so someone else might have a better idea of the allowable connector sizes. Voltage and current-wise, that one would have been fine.

14

(147 replies, posted in Nintendo Consoles)

Slight update to shape selection. The current bank isn't changed unless you hold B and press Select. It was resetting to the first one whenever you released B then held it again. Now if you hold B, you still select from the currently visible bank with U/D/L/R. You can still count Select presses since you started holding B to determine which bank you're on, allowing "blind" operation with a predictable outcome.

blargg_litewall_10.zip

Also, when making shapes, you probably want to make them as filled as possible, otherwise the image comes out darker. Some of the ones here are inverse, which is the best approach to keeping it bright.

If this is a US front-loading NES, you can use a variety of power supplies. 9V or 10V with either polarity (or even AC) is fine, and at least 800 mA or so.

16

(147 replies, posted in Nintendo Consoles)

And more importantly, you can easily edit shapes by using YY-CHR in 1bpp mode.

blargg_litewall_10.zip

Forgot to mention, this one supports 16 shapes.
Hold B and press U/D/L/R for 1-4.
Hold B, press Select, then press U/D/L/R for 5-8.
Hold B, press Select x2, then press U/D/L/R for 9-12.
Hold B, press Select x3, then press U/D/L/R for 13-16.

Until you release B, Select just internally cycles to the next four, but doesn't change the current shape until you hit U/D/L/R. But once you release B, and hold it again, it internally starts back at the first set. This way, you can always quickly go to a known set by holding B, pressing Select the 0-3 times, and knowing exactly what set you're on, regardless of any Select presses before you just started holding B.

And also, I just duplicated the first 8 shapes and added some junk on them to be sure it was working. Plug in your own shapes!