Offline
yoyz2k wrote:

Yes, I agree working without internet connection is really difficult.
Glad to know you have idea for managing the 64KB of ram efficiently.
I will need to read some doc to understand the memory, the IO subsystem, and how the two cpu communicate it will be the hard part for me because when I work with multiple processor and numa node, it is handled by linux for me.
So lot of thing to understand smile
Hope you will have your internet access soon.

Yes the z80 and 68k intercommunication is confusing. Last time I wrote this tracker, I never did any work on the z80. Just used bus requests as the 68k requires permission from the z80 to access the YM2612 sound chip, as the YM2612 resides in z80 memory space. This time however the sound driver should be done entirely and purely in z80. The 68k is a 16 bit cpu and YM2612 only accepts 8 bit writes with wait time in between writes, so using the 68k last time was wasteful. Have a look at the sega documentation, it's a must.

Now that I think about it, now would be a good time to start work on the new sound driver, since it's pure z80 I don't need sgdk for this one. By the way. You mentioned you've done x86 asm. 68k is easier and is a gorgeous architecture, it's very logical too. You should have no real trouble understanding it.

Offline

Updated main thread. Permission was obtained from Stef to use his z80 XGM sound driver for the new tracker. Added info on 32x/CD compatibility.

Offline
São Paulo, Brazil

Chaos tracker? Hope you stick with that name this time.

Offline
france

I've try to build gendev.
Now I need to understand how to make an hello world with it.
Do you use it, it seem to be the sgdk for unix.
Great to hear improvement on the sound driver.
But what kind of facility does it provide ?

Offline
Milwaukee, WI

Chaos tracker is a fantastic name.

Offline
yoyz2k wrote:

I've try to build gendev.
Now I need to understand how to make an hello world with it.
Do you use it, it seem to be the sgdk for unix.
Great to hear improvement on the sound driver.
But what kind of facility does it provide ?

Gendev is what I was attempting to build but without internet I'm unable to. For the time being I'm combing through stef's XGM source to understand what needs to be modified to make it work with the internal tracker format, it should be easy according to stef.

Today was productive having finished an exception screen that prints cpu register information to the screen, useful for debugging. I was able to do all this from scratch in assembly but it shouldn't hurt our ability to do things in C as well. The exception screen works fine on hardware so all the code so far is good.

Before I start going all frankenstein with stef's driver I'd like to run some benchmarks on the z80 and see what we're looking at in terms of performance during bus requests and memory transfers. Anyways, yes gendev is what we'll be using for C. As far as a hello world for SGDK is concerned, I'm not too familiar with SGDK's functions yet, but you'll need to use code that has a rom header defined and initializes the Sega, before you can do anything with it at all. I can help you with that but all my string printing routines I did in assembly.

To answer your question about what facilities the driver provides, the sound driver handles everything sound related. All the pcm, FM, PSG, and playback is taken care of for us. We only need to pass the music data to the driver which is relatively trivial for us. Stef's driver is amazing and handles genesis/megadrive music exceptionally well, it is perfect for the chiptune scene. Whew... long message for touchscreen typing. I'll keep you posted and try to set up a repository or something here soon.

@TSC and @PULSELOOPER - It's the best of the 3 names and the tracker seems really happy with the new name. That means it's going likely to be permanent. smile

Offline
france

It works !!!!
And yes, IIRC internet access is near mandatory to compile gendev.
It took four hours on my slow laptop to build it sucessfully.
This tutorial had help me to make the helloworld : http://www.bytesizeadventures.com/moder … g-started/
And I've a working helloworld which bring a rom which works with dgen, so real cool.
Basicaly, before reaching main, it does this :
- set default values for each VDP register
- clean Video RAM
- load 4 default palettes : grey, red, green and blue
- load a default font for your text print need
- init input handling
- reset sound and music
- load a default sound driver ("2 channels PCM sample" driver in SGDK 0.7)

#include <genesis.h>

int main()
{
    VDP_drawText("Hello World!", 10, 13);

    while(1)
    {
            VDP_waitVSync();
    }
    return (0);
}


Now, I'm ready to start things and I will begin with simple things.
Moving text, understand keypad input.

Here is where I put my hello world skeleton.
https://github.com/yoyz/genesis/tree/ma … helloworld

It's fun smile

Offline

That's good news. It's very fun isn't it?

Yes now's a great time to get familiarized with SGDK. I think most if not all of the sound related stuff will have to be handled in assembly. All the graphical VDP handling could be done in C and probably should, as it can be cumbersome in assembly while C can make short work of it. The data arrays can be done in either C or asm. There's more but we can discuss that later. I'll get the headers and startup code organized in a project folder when I can.

Offline
New York, New York

I am happy you are back on the development. Cool name!

Offline
france

Yes it's really fun.

What I have think so far is how should we create the structure of the song, chain, pattern, note, instrument with "c struct" in a smart way.
I don't know how the right way this should be handled.
But here is my thought so far.

There is  :
- a song structure : 6 channel YM2612 and 4 channel SN76489, and each channel should have 0x7f "short" value for the song, so 1,280 byte of memory used ;
- a chain structure : 16 entry for each chain, and each is a short of 0x7f, so 16 byte ;
- a pattern : 16 entry of note from 0 to 88, so short value, 16 byte ;
- an instrument is maybe, naively, don't know exactly 80 byte of memory and there could be 0x7f of instrument available.

So this way, it took : 10*128*16*16*80*128 => 3GB of memory, not much smile
Mhhhh don't think the 64KB of ram will be enough it's just enough for my laptop smile
What seem to be reasonable, is to use 32KB of memory not much for the whole structure, so there is a need to create a well made structure which will hold just the needed things.

What kind of structure have you used to store all of this in your tracker ?
Linked list ?

Offline

I'll send you a pm to discuss this.

Offline

excited to see this rolling again! Will be cool to think in the future I could be tracking on my nomad.

Offline

Hi CountSymphony,

You got my fanboy support big_smile !

Genesis chiptunes are my favorite kind to make. It'll be nice to be able to design them on actual hardware. Although VGM Music Maker is probably my favorite tracker to use, it's a bit limited on some things.

I hope you are planning on implementing Special Mode and CSM for channel 3. Also 14 bit DAC wave table editing. Lastly, it would be really cool if you could allow H Blank modulation for the PSG. That way you can get some C64 sounds from that thing. Although it may effect video and processing speed. But see if you can experiment with that. It is very possible, and sounds really cool. Especially mixed with 4 bit PCM being fed through a PSG square channel.

Whatever the case, lookin' forward to it!

Offline

Special+CSM is a maybe. Depending on the future use of YM timers as a source of BPM measurement.
DAC wavetable editing is possible, but using samples for melodic content would be iffy, Amiga like at best. PWM is something I'm interested in but it depends on the processing overhead, it'd be nice to have at any rate.

We only have so much to work with in hardware so sacrifices will have to be made to make things happen.

Offline

Yay! for the Special+CSM :DDD  I am probably the only one who likes to use Special Mode in VGM Music Maker. Really thickens up the song when you have chords of 4 coming out of a single channel like in the latter half of this song: https://soundcloud.com/marcb0t/seaside- … ed/s-EQdmL

Yeah, they are sine wave chords, but it can also be used for glowing luminescent background stuff, and other really interesting sound effects and drums. I've been doing a lot of experimenting. VGMM doesn't allow for as much flexibility as there probably should be, but the little it does is spectacular. I've made talking voices with CSM mode before. It's tricky, but fun. Using that A-Timer and modulating the 4 operator pitches separately.

Yeah, the H Blank PSG interlacing would be cool. But it looks like you'll be doing everything you can to get things to work nicely. If anything, it would be an interesting experiment, once you already have a good solid program.

Amiga sounding for the DAC wavetable is just fine for me, doesn't even have to be that good, because I mainly use it to thicken up bass sounds, and extra things, so I don't mind if it sounds a little distorted or lower quality. It's all apart of the fun, I think.

I really like where things are headed, and I realize the most important thing is to just get all the  basic stuff working solid and efficiently before any other special things.

Thanks again, and take care!

(I've also been using Aly James's FM drive for experimentation with the above mentioned. Excellent VSTi!)

Offline

In a strange and unpredictable twist of fate today, I've found all of the lost Prodigy Tracker source code... it was pleasing to see that everything is intact and the way it was before. This caused a complete rethink in the development strategy. I will continue to develop this tracker and make it open source, but it might stay an ASM only project. At any rate a there's some things that must change. Enharmonic spelling must be made consistent, changes to the internal tracker format must be made, routines need to be renamed for readability and better documentation + source comments must be done.

Oh, expect this tracker to branch into two separate projects at some point. Prodigy Tracker will remain as you know it, but once it's open source I intend to branch off in a new direction officially with Chaos Tracker. You'll see why soon enough wink