Heartcore Project WIP

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
psycopathicteen
Posts: 3001
Joined: Wed May 19, 2010 6:12 pm

Re: Heartcore Project WIP

Post by psycopathicteen »

For some reason Audacity doesn't let me record off of my computer for some reason.
Revenant
Posts: 455
Joined: Sat Apr 25, 2015 1:47 pm
Location: FL

Re: Heartcore Project WIP

Post by Revenant »

If you have Realtek or some other onboard audio, have you tried manually enabling the Stereo Mix option? For some reason a lot of current drivers include the functionality but disable it by default.
tepples
Posts: 22345
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Heartcore Project WIP

Post by tepples »

Revenant wrote:For some reason a lot of current drivers include the functionality but disable it by default.
They probably disable it altogether because it's easier to code than only disabling it when output protection management, part of the digital restrictions management (DRM) framework in Windows, is enabled.
psycopathicteen
Posts: 3001
Joined: Wed May 19, 2010 6:12 pm

Re: Heartcore Project WIP

Post by psycopathicteen »

I got everything to work, eventhough I find the VSTs confusing. Anybody recommend a good VST to work with?
User avatar
HihiDanni
Posts: 186
Joined: Tue Apr 05, 2016 5:25 pm

Re: Heartcore Project WIP

Post by HihiDanni »

Patched version of P2 that runs the InitSNES routine correctly:
heartcore_p2a.sfc
(256 KiB) Downloaded 108 times
On synths: You have a few different kinds of synths, including subtractive, FM, and additive. Subtractive synths are probably the easiest to learn. You have a simple waveform and you apply a filter to "subtract" from the frequencies of the resulting sound. My advice is to find a VST you're comfortable with, and play with the different knobs to see what they do to the sound. If you're not sure what a knob does, look up the term for that knob online.
SNES NTSC 2/1/3 1CHIP | serial number UN318588627
tepples
Posts: 22345
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Heartcore Project WIP

Post by tepples »

And if you're trying to emulate a classic 1980s synth, Roland's D-50 and TB303 are subtractive, and Yamaha is FM. The filter in the C64's SID is also subtractive, but a lot of the TB303-like bass sounds it can generate are actually pulse width (duty) sweeps.
User avatar
HihiDanni
Posts: 186
Joined: Tue Apr 05, 2016 5:25 pm

Re: Heartcore Project WIP

Post by HihiDanni »

Made a crash handler for the next time WLA will inevitably write a 16-bit immediate instruction where the register size is guaranteed to be 8-bit and thus cause execution to hit a BRK:
SH_CrashHandler.png
The text is kinda hard to read.

Edit: Doing this thing made me realize, since the direct page register is 16-bit, does that mean it can access a different bank than the DB register?

Edit 2: No, looks like it's an offset applied to the lower 16-bits.
SNES NTSC 2/1/3 1CHIP | serial number UN318588627
93143
Posts: 1371
Joined: Fri Jul 04, 2014 9:31 pm

Re: Heartcore Project WIP

Post by 93143 »

@psycopathicteen: A versatile sampler can be useful too. I've made sounds before by processing them through Emulator X, which has really nice filters (= subtractive synthesis with arbitrary waveforms) and flexible routing options. Unfortunately Emulator X is not free and has been discontinued for a while; I've been out of the loop so I don't know what the best free options are. Note also that you can combine VSTi instruments with VST effects to achieve sounds no single tool can produce.

@HihiDanni: You're sure moving fast. At this rate you'll have your game done before I manage a basic Super FX blitter test... okay, I've been distracted, but still...
Revenant
Posts: 455
Joined: Sat Apr 25, 2015 1:47 pm
Location: FL

Re: Heartcore Project WIP

Post by Revenant »

HihiDanni wrote:Edit: Doing this thing made me realize, since the direct page register is 16-bit, does that mean it can access a different bank than the DB register?
The direct page is always in bank 0, regardless of DB (just like the stack).
tepples
Posts: 22345
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Heartcore Project WIP

Post by tepples »

Back in the day, I wrote my own subtractive and Karplus-Strong synths in C and had them output samples in .wav format, and then I loaded the samples into ModPlug Tracker. (Nowadays I'm more likely to use Python.) That work flow would probably work just as well for SPC700 as it did for MPT.
User avatar
HihiDanni
Posts: 186
Joined: Tue Apr 05, 2016 5:25 pm

Re: Heartcore Project WIP

Post by HihiDanni »

Revenant wrote:The direct page is always in bank 0, regardless of DB (just like the stack).
Oh, interesting. So you can use the DP to access RAM even when in a bank like $c0. I assumed you'd have to use long addressing or switch banks. I think I'll still use LoROM-style $80 and friends for most (esp. performance-sensitive) code execution, since I do a lot of 16-bit addressing.
SNES NTSC 2/1/3 1CHIP | serial number UN318588627
tepples
Posts: 22345
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Heartcore Project WIP

Post by tepples »

You can also set the data bank register (DBR, aka B or DS) to differ from the program bank register (PBR, aka K or CS). Parking DBR in $7E will let you access copious RAM with 16-bit addresses. Only the first 8K is mirrored into banks $00-$3F and $80-$BF. But if you want to rapidly access data in low RAM and a single 32K bank of ROM, then yes, putting the data in the second half of a bank and setting DBR in $80-$BF is the way to go.
User avatar
HihiDanni
Posts: 186
Joined: Tue Apr 05, 2016 5:25 pm

Re: Heartcore Project WIP

Post by HihiDanni »

I considered doing program bank $c0 with data bank $80 for the sake of convenience (64kb of program, no need to switch banks) but I'm concerned that I might accidentally try to reference some ROM data in the first 32kb. Maybe I can give it a try if I ever run out of the upper 32kb of bank 0.
SNES NTSC 2/1/3 1CHIP | serial number UN318588627
Post Reply