2A03 Puritans compilation album

Discuss NSF files, FamiTracker, MML tools, or anything else related to NES music.

Moderator: Moderators

User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

2A03 Puritans compilation album

Post by rainwarrior »

The debut album from the new label Bit Puritans released today! This is a 17-track compilation album of NES music, and I'm proud to have been a part of it.

The NES cartridge version is now available, as of April 21, 2014. Video: https://www.youtube.com/watch?v=CYKenZOpTF0

http://bitpuritans.bandcamp.com/album/2a03-puritans
Image


1. jrlepage - Introduction
2. bradsmith - dry up and tumble on
3. ipi - Garten
4. TQ-Jam - Milky Fields
5. Doxic - Pollution
6. commandycan - Sky Bus For Hire
7. HertzDevil - Extends Levant
8. Jangler - Tide/Grotto
9. TristEndo - Be water my friend
10. kfaraday - The Bloop
11. stinkbug - Dreamgate
12. gyms - Magmo's Magical Ingot
13. Moot Booxlé - Ouroboros
14. Fearofdark - An Earth made of Molten Rock
15. chipchop - the robot emptiness
16. Zan-zan-zawa-veia - Dove Dome
17. KungFuFurby - Null and Void

No emulators, no expansions. All recordings were made from a real 2A03.

Compilation ROM/NSF/NSFe available: http://rainwarrior.ca/projects/nes/2a03puritans.html
Source code available in: this thread
Last edited by rainwarrior on Wed Apr 23, 2014 9:22 pm, edited 5 times in total.
User avatar
Jedi QuestMaster
Posts: 649
Joined: Thu Sep 07, 2006 1:08 pm
Location: United States
Contact:

Re: 2A03 Puritans compilation album

Post by Jedi QuestMaster »

rainwarrior wrote:The debut album from the new label Bit Puritans released today! This is a 17-track compilation album of All recordings were made from a real 2A03.
Awesome! I'm giving this a listen.

By the way, how do you record this?

I want to make my album(s) real 2a03 recordings, but I don't know the best way to go about doing it.

So far I have: PowerPak -> NES -> Audio of AV to Line-in on computer. Is that it? Would people not mind the hum? :?
tepples
Posts: 22426
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: 2A03 Puritans compilation album

Post by tepples »

To minimize hum, set the background color to $0D and disable rendering before you start the recording.
User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: 2A03 Puritans compilation album

Post by rainwarrior »

Interesting advice. If I'm someday in the mood to rebuild the PowerPak's NSF player I might try it.

I didn't record this one, jrlepage did, but it's probably a setup close to what you described.
User avatar
Jedi QuestMaster
Posts: 649
Joined: Thu Sep 07, 2006 1:08 pm
Location: United States
Contact:

Re: 2A03 Puritans compilation album

Post by Jedi QuestMaster »

tepples wrote:To minimize hum, set the background color to $0D and disable rendering before you start the recording.
Is that what Loopy did here? I'd wish I'd gotten the link when I could. :(

As for the album, HertzDevil devilers some great content as always! :)
jrlepage
Posts: 24
Joined: Wed Apr 04, 2012 2:15 am

Re: 2A03 Puritans compilation album

Post by jrlepage »

All tracks except for 3, 15 and 17 were recorded using my Famicom and my TNS-HFC3 cart's built-in 1/8" jack. Tracks 3, 15 and 17 were recorded using my Power Pak and my NES's AV out signal (because of incompatibility with the TNS-HFC3 hardware).
User avatar
infiniteneslives
Posts: 2103
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Re: 2A03 Puritans compilation album

Post by infiniteneslives »

I take it there is no plan for a cartridge release? Pretty good stuff, nice work guys!
If you're gonna play the Game Boy, you gotta learn to play it right. -Kenny Rogers
User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: 2A03 Puritans compilation album

Post by rainwarrior »

Do you want to help build one? It'd basically need a hardware version of the NSF mapper, and I think we'd need ~2MB ~1MB of ROM. I'd be willing to code a menu and whatnot to show some graphics, but the idea of building the mapper hardware is daunting to me.
Last edited by rainwarrior on Thu Aug 22, 2013 5:36 am, edited 2 times in total.
tepples
Posts: 22426
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: 2A03 Puritans compilation album

Post by tepples »

FamiTracker, for one, supported output to .nes last time I checked.
User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: 2A03 Puritans compilation album

Post by rainwarrior »

It does not export to NES if the track is bankswitched (which almost all of these are). If I didn't have to worry about bankswitching I could just do it with an oversized AxROM kinda mapper.
User avatar
infiniteneslives
Posts: 2103
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Re: 2A03 Puritans compilation album

Post by infiniteneslives »

rainwarrior wrote:Do you want to help build one? It'd basically need a hardware version of the NSF mapper, and I think we'd need ~2MB of ROM. I'd be willing to code a menu and whatnot to show some graphics, but the idea of building the mapper hardware is daunting to me.
I'd love to.

I'm not really sure how the whole NSF mapper/player thing is setup though... Is this the best documentation we have on it?

Loopy's source has some mention of counters and such.

I'm having a hard time wrapping my head around how this whole thing works. It's sounding like it all depends on the nsf player you create that will play .nsf files. From what I gather there is no specific 'nsf mapper'. To some degree we'd be creating a nsf player that was most easily played on low cost hardware.

Perhaps branching off to another topic is in order. I'd be interested, and I think should be possible with some of the stuff I have right now. Just need to better understand the 'mapper' and what options we do and don't have without making a ton of work.
If you're gonna play the Game Boy, you gotta learn to play it right. -Kenny Rogers
User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: 2A03 Puritans compilation album

Post by rainwarrior »

Oh, well there's really only a few things we actually require. The wiki page for NSF outlines the complete NSF mapper, but what we'd need for this project specifically:

1. 8 x 4k switchable banks from $8000-FFFF. The banks are addressed by 8 registers accessed at $5FF8-5FFF. It looks like we need to address 1MB worth of ROM (our combined NSF data is ~760k), so they'll need be 8-bit bank select registers. These registers could be moved if necessary, but it'd be easiest if they were at the standard address.

2. The NSF spec expects RAM at $6000-7FFF, though I'm not sure if it's needed for this project. I don't believe that Famitracker NSFs depend on that RAM, but there are tracks from PPMCK and IT2NSF that I need to investigate a little. I think it's likely this RAM isn't needed (will report back later).

2. CHR-RAM would probably be the easiest way to do the visual stuff for this, so we wouldn't need any additional hardware logic to swap tiles. You could take your pick w.r.t. mirroring (vertical, horizontal, whatever), it doesn't need to be dynamic.

Edit: none of the NSFs require the RAM at $6000-7FFF so that part of the spec can be dropped.

Also, is it possible to initialize the top bank register to $FF on reset? I'm not sure if it's feasible to stick a reset stub into every bank of the NSFs.
User avatar
infiniteneslives
Posts: 2103
Joined: Mon Apr 04, 2011 11:49 am
Location: WhereverIparkIt, USA
Contact:

Re: 2A03 Puritans compilation album

Post by infiniteneslives »

Not sure how I missed the dedicated wiki... I was looking over kevtris' doc on the format after my post. While I'd probably need to make a few modifications to my current setup now is ideal timing to lay this out since I'm making other changes to my v1 board right now as well.
rainwarrior wrote: 1. 8 x 4k switchable banks from $8000-FFFF. The banks are addressed by 8 registers accessed at $5FF8-5FFF. It looks like we need to address 1MB worth of ROM (our combined NSF data is ~760k), so they'll need be 8-bit bank select registers. These registers could be moved if necessary, but it'd be easiest if they were at the standard address.
Not much issue allowing for this. Only adaptation needed is splitting PRG A12 for 4KB banks. However moving the banks would be helpful.

Code: Select all

NSF    Address      Register
====   ==========   ========
$070   $8000-8FFF   $5FF8
$071   $9000-9FFF   $5FF9
$072   $A000-AFFF   $5FFA
$073   $B000-BFFF   $5FFB
$074   $C000-CFFF   $5FFC
$075   $D000-DFFF   $5FFD
$076   $E000-EFFF   $5FFE
$077   $F000-FFFF   $5FFF
I understand these register locations were chosen to not conflict with WRAM and existing sound chip's registers. But this sucks up too much i/o to stay low cost since it'd require PRG A0-3 as inputs. PRG A0 might be okay, but A1, A2, and A3 are too costly. since we already require A12-A14 for decoding I'd suggest something like registers $8000, $9000, $A000 etc. Basically just line up the reg with the bank it controls. Could use $5000, $6000, $7000 as well possibly for other functions, or leave as options to de-conflict for other sound extension registers if desired in the future.
2. CHR-RAM would probably be the easiest way to do the visual stuff for this, so we wouldn't need any additional hardware logic to swap tiles. You could take your pick w.r.t. mirroring (vertical, horizontal, whatever), it doesn't need to be dynamic.
Agreed. Nice and easy, no changes needed. 8KB CHR-RAM and fix H/V/one-screen mirroring all requires no I/O from the mapper, so that sounds like the best route for this.
Edit: none of the NSFs require the RAM at $6000-7FFF so that part of the spec can be dropped.

Also, is it possible to initialize the top bank register to $FF on reset? I'm not sure if it's feasible to stick a reset stub into every bank of the NSFs.
It's no problem to initialize any/all of the banks to the last bank at power on. Reset is a little more tricky/costly since you'd need another i/o to sense reset and possibly some discrete components. If it helps, since there isn't WRAM, fixing the last 4-8KB of ROM to $6000-7FFF would be pretty easy. So you'd only need a JMP $6000-7FFF stub in each bank that was ever placed at $F000-FFFF. You wouldn't need the stub in every bank, just the banks that might be there if the user hit reset.
If you're gonna play the Game Boy, you gotta learn to play it right. -Kenny Rogers
User avatar
rainwarrior
Posts: 8578
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: 2A03 Puritans compilation album

Post by rainwarrior »

Yeah, a bank register addressed at each 4k page would be fine.

Yeah, if the high bank is initialized at powerup that should be enough. I'm sure I could manage a stub in every bank that's mapped there. The problem I was concerned about was having to put a stub in all the banks.

There's probably no need to map anything to $6000. It might be a convenient place for some player code, but since $8000-BFFF is available to swap some code in anyway, it's not necessary.
KungFuFurby
Posts: 268
Joined: Wed Jul 09, 2008 8:46 pm

Re: 2A03 Puritans compilation album

Post by KungFuFurby »

Hello. I am one of the composers from the soundtrack. :wink:

With a couple of exceptions, the majority of the tracks were made in Famitracker. The exceptions are TQ-Jam's (which is done with MML) and my song, which was made with Schism Tracker and then converted to .nsf file via mukunda's it2nsf.

The documentation for it2nsf states that the memory mapping to $E000-FFFF must not be changed outside of its music routine. That's the DPCM data access. $A000-CFFF is not used in it2nsf.

I don't know what the other ones use for memory mapping, but as long as you don't accidentally switch the banks used for DPCM (I'd think that would be the only place not to touch the bank switches), I think you should be good.
Post Reply