Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

29 Excellent

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi @m00dawg and others, just as a heads up, I am preparing to publish an early version of my PSG sound engine in the next week or two. I know we are maybe going for slightly different routes because you are really into the tracker format, whereas I am more into the modern style DAW. So there may be a couple of things that probably won't fit into your concept, but if you take my code it may be more a matter of rearranging stuff rather than rewriting everything from scratch. I have made things like multitimbrality, envelopes, volume rescaling and pitch slides (for portamento in my case). I know it may be more fun to make all this by yourself (it's why I did it in the first place) but if you want some starting point you can take what I made. I will be willing to explain my code and discuss how things would need to be rearranged to suit your needs. As a clarification: I am currently talking only about the sound engine, NOT the playback mechanism. You can provide the playback mechanism. There an API for using the sound engine. Triggering and stopping notes. It still needs to be extended to support things like volume slides or pitch slides which I would definitely want to be possible with it.
  2. Thanks. Yes, that is giving me what I want. I need to apologize because yesterday, I haven't properly looked at your documentation. Now I understand that the two ADSR bytes give four durations, and the sustain level parameter is the extra one. That is useful to know, and I will try again with that knowledge. But the "looping" I was observing yesterday seems to be a bug.
  3. Hi Dusan, I've come around to trying out the possibility to create custom instruments. I am having a couple of issues. The Volume setting seems to be at the position of what's called "sustain", and the "Volume" setting doesn't seem to change anything For the ADSR, are the parameters doing what they should? What is the additional sustain parameter supposed to do? How long continuous notes are held? I'm utterly perplexed by the result the attached test file is giving me. Also, in your blog you say there's 5 predefined instruments, but actually there are 6, so I guess it's only 2 free slots (but it doesn't matter since we can poke into existing ones). Thanks in advance Edit: To clarify what I was trying to do with that file. Basically I wanted a short, percussive envelope (an Attack-Decay envelope so-to-say). Because that wasn't turning out how I expected, I began messing around, setting the volume to 0 and making the sound "continuous" which both didn't happen. TEST_2.TXT
  4. Ah silly me Here's a short song made for the Music Player Library. Again simply Ctrl+C Ctrl+V it into the emulator. Feel free to modify and use it everyone if you see fit. DANDELION.TXT
  5. I have noticed that there seems to be a bug that the end of the song data is not used during playback. See as an example the attached song, where I have the same four notes played twice in a row. However, only the first time, all four notes are played, whereas the second time only the first three notes are played. Or am I doing something wrong? (Simply Ctrl+C, Ctrl+V the source into the emulator). MYSONG.TXT
  6. Pretty cool! Very easy to use, once one read the documentation on your page. And the example songs are a good starting point to experiment and make our own I hope someone will use this for their games written in BASIC
  7. Thanks @StephenHorn for the clear explanation. Now I can indeed very well imagine why that's happening. Also thanks (also @JimmyDansbo) for the explanations on how to use the debugger, might become useful to me. Yes, I am using ca65, so the link symbol table is nice to know. For the problem I am currently chasing down, however, the "normal" use of a debugger won't help. I think meanwhile I got closer to my problem. I can kinda reproduce it by smashing certain keys in order to eventually trigger a very unfortunate timing inside my program. I guess it's got something to do with the interplay between interrupts and the main program. Most of the time, the code gets executed correctly, but in rare cases it does not. But for the 97 % of the cases where it's bugs in the straight execution of code, the techniques you mentioned may indeed become useful to me.
  8. Hi, in my current project, I could cope with bugs mostly with the help of the "poor man's debugger", namely lda #65 jsr CHROUT which prints a character on the screen if it gets to the piece of code where I put it. However, as I have come across bugs that are difficult to reproduce and appear randomly to me, I started looking into how to use the built-in debugger. I thought it might be useful to cope with such bugs that are difficult to reproduce. When such a bug occurs and my program hangs, I could simply start the debugger (by pressing F12) and see where my code gets stuck. However, when I tried this technique, I noticed that the emulator halts preferably at always the same set of addresses. In my case, it halts most frequently at $038B and $E023, which I suspect to be X16 native code, and apart from that, some other places in memory (including my own code). However, I would expect the debugger to halt anywhere in the program's execution path equally likely, simply randomly distributed over the whole code. Because I know that my main loop gets executed many times a second. Why would the debugger behave in such a way and often stop at the exact same address? Any thoughts? Edit: to clarify: this behavior even occurs during normal execution of my program.
  9. Dumfries! Yay, I've been in the area (Kirkcudbright/Castle Dougla) for a year
  10. Belated Hi from Germany, I'm Carl, and I have actually been around for some months, but never did this introduction. But I thought it might be neat to do so anyway. There's two things that brought me here. 1. My search for the "roots" of home computing. Because I am from the east part of Germany, my ancestors missed out on most of the first decade or so of home computing. Many things like the C64 are mostly unknown where I come from. But I really wanted to know about the roots of home computing, and thus on my journey found channels like The 8-Bit Guy. 2. One of my passions is to make music using synthesizers. However, I find much of the modern VST gear quite overwhelming. So many possibilites, I simply do not know where to start. On the other hand, I quite like the situation where the creativity is pushed by limitations. Simple and limited synthesizers are what I enjoy using. And at most so, if they are able to produce stunning results nonetheless. Those two things are what brought me here. I want to create some nice music software for the X16 and eventually use it if time permits. Also, allow me some words on my programming background. I initially started programming with Turbo Pascal. However, it was hopelessly outdated when I first got an old Win95 laptop with an IDE installed on it from someone. But I pretty much enjoyed life with it, because I kept discovering and trying new stuff, and was really impressed how much you could do with a 75 MHz processor. I can't remember hitting the ceiling of its processing power. At some point I found out about inline assembly, and first used it to access the mouse and do various other things. I even tried a small project entirely in X86 assembly, but I got frustrated with it, so I never went very far. Meanwhile, I have come to enjoy programming in 65C02 assembly over the past couple of months. The good documentation of the X16 and a helpful and active community are a big part of what makes it worthwhile. I wish you the best blessings for 2021! Take care!
  11. I agree that ROM space could be scarce and therefore an advanced loader might not make it. But I find it still interesting, because if it is made available as a third-party tool it might still be useful (but less so than if it is already in ROM, admittedly) That's what I am worried about, too. If I understand correctly, in ELF you would have to make it possible to save information from an unknown number of block headers, whereas in TomXP's suggestion you just need to know about the block you are currently reading. I also like the idea to use an illegal address as the format identifier. To me, his suggestion seems well suited for the X16. I think, if the goal is to get the feature into ROM, we better hurry up
  12. Yes they can. But there may be issues with the naming of files. @Johan Kårlin had issues sorting this out for his game, but eventually succeeded. So he will know more about it. You can read this thread, there will be some hints about that question. You're using CC65, right? So you might try naming all files in capital letters, but if you mention them in the source code in all lowercase.
  13. Yes One more sign that I didn't know what I was doing ... I saw that command somewhere, likely in some source code by Matt Heffernan, and thus used it myself, wondering why it didn't appear in the 6502 instruction set
  • Create New...

Important Information

Please review our Terms of Use