Page 3 of 3

Re: Heartcore Project WIP

Posted: Sat May 14, 2016 4:13 pm
by psycopathicteen
For some reason Audacity doesn't let me record off of my computer for some reason.

Re: Heartcore Project WIP

Posted: Sat May 14, 2016 4:40 pm
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.

Re: Heartcore Project WIP

Posted: Sat May 14, 2016 5:23 pm
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.

Re: Heartcore Project WIP

Posted: Sat May 14, 2016 11:46 pm
by psycopathicteen
I got everything to work, eventhough I find the VSTs confusing. Anybody recommend a good VST to work with?

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:53 am
by HihiDanni
Patched version of P2 that runs the InitSNES routine correctly:
heartcore_p2a.sfc
(256 KiB) Downloaded 109 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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 9:45 am
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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 5:59 pm
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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 6:39 pm
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...

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:23 pm
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).

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:26 pm
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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:36 pm
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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:42 pm
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.

Re: Heartcore Project WIP

Posted: Sun May 15, 2016 7:50 pm
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.