Jump to content


Popular Content

Showing content with the highest reputation since 04/07/21 in all areas

  1. 10 points

    Version 1.0.1


    This is a simple voxel demo written in 65c02 assembly. It has been tested in the r38 emulator. Press W A S D to move around. Press SPACE to quit.
  2. 8 points

    Version 1.0.0


    This weekend, I decided to play with X16 BASIC using the emulator and wound up making an X16 adaptation/extension of a short program for the Plus/4 that appeared in 'The Transactor' journal decades ago. The program uses three parameters: "S" (squiggles/spokes/segments), "W" (wave factor), and "A" (amplitude). Using X16 BASIC's extensions in terms of bitmap drawing commands, it outputs a neat design with lots of color and a surprising amount of visual variety. The original Plus/4 program just plotted in black and white and had some built in limitations (and at least two bugs), but I decided to extend the program, add a menu, and upload it after I added color and decided these were fairly cool looking results from such a short simple BASIC routine. It strikes me as a cool demo because with just three core parameters, you can get an astonishing range of outputs. Of course, like many graphics demos based on stacking transcendental functions, there are combos of inputs where the functions will sort of fall apart and produce something akin to a kiddo scribbling with crayons , but there are also weird "islands" in the domain of possible parameter combinations where order re-asserts itself, both in terms of what gets drawn and how the colors play out. There are 4 'modes' of operation you can pick from the menu. You can specify inputs for S, W and A manually; the program can run a sequence with fixed S and A while incrementing W; there is a mode that tries to picks random parameters within several domains where the program produces nice outputs; and there's one that just reads the inputs from some "presets" in DATA statements. (You can of course add your own 'best of' examples by adding data statements between lines 432 and 499). I always considered myself a passable BASIC programmer, but this weekend showed me I'm really sort of rusty so please go easy on me if I did something inefficiently or especially 'dumb' in my implementation. The main output routine is extremely crunched (sorry, not sorry) and I did some further things to optimize from the original program for purposes of getting a bit more performance out of the main routine. Although it absolutely crawled on the Plus4, I think its fairly impressive on the X16 especially if you look at the sheer amount of sines, cosines, multiplications, and variable fetches /updates that occur during an entire cycle through the primary output drawing loops. The X16's 40 column mode (SCREEN $00) was used to key this in and format it, so its probably best if listed/ displayed/reviewed in that mode, Tested on emulator r.38, and I don't see anything in the pending updates for the next emulator release that would break anything here. If there are questions about why/how I did something I'll be happy to answer. In fact, if there's any interest in a more detailed write-up of this short and fairly simple program (e.g., section by section, and line-by-line), I would be happy to give it a shot, especially if there are folks new to Commodore BASIC that might find it useful. It seems to me there are many highly advanced programmers for the X16 posting on this site who are using assembly, C, and even languages they are developing themselves. Its amazing! However, its surely the case that part of the mission of the X16 is to get some newbies involved, and from where I sit, that really does mean getting some more content up here written in BASIC. Keeping that in mind, I'll probably be diving back into more old issues of The Transactor to do more conversions for the X16 and will continue to upload as long as I'm still having fun with BASIC. Cheers.
  3. 5 points
    Voxel demo screen View File This is a simple voxel demo written in 65c02 assembly. It has been tested in the r38 emulator. Press W A S D to move around. Press SPACE to quit. Submitter DrTypo Submitted 04/11/21 Category Demos  
  4. 5 points
    Another quick update. I really wanted to get the demotune working so spent some time working on that after I sorted out keeping track of the last instrument used and squishing a few bugs. It now uses 5 channels! (albeit only for a short bit). The first part is just showing the pattern changes, since you can no longer see those while the song is playing.
  5. 4 points
    I've had this version of Flappy Bird done to this point for well over a year now. Due to life reasons, I had to drop out of the X16 scene for quite a while, but I've got the bug again, and decided to dust off this old code and finish this game for the X16. It was written for R31 so a _LOT_ changed since then, and it's been quite a headache refactoring all of the various bit shifts into the various VERA registers, but it's back to the point where it compiles and runs correctly, so I should be able to start making forward progress again, and if I stick to my guns and stick to writing sloppy non-project-worthy code, I should be able to have a playable version soon. However, if my TYPE-A self wins, I'm going to spend the next 2 weeks refactoring the code into modules and different C files, etc, and have lots of work done with no visible progress in the game. LOL. Anyway, I wanted to go ahead and put this back out into the community that I'm working on this, and I may even do a YT video going through the code, or at least a dev vlog or something.
  6. 4 points
    Yes, the X16 is a very stimulating machine! And I'm not a 65c02 guru. I've written voxel engines on the Atari Falcon and Jaguar, and also in x86-64 assembly. But I'm new to this 8bit business. I started a couple of weeks ago with the excellent Youtube tutorials from Matt. So there may well be a few clever optimizations that could be done.
  7. 4 points
    OK. Thank you. I got it working now ...
  8. 4 points
    No, I've just started making it a few days ago. Here's a little preview of what I've got so far: edit: ripped out the keyboard control and replaced it with joystick control. But having a bit of a problem getting the buttons state in a reliable fashion atm.
  9. 4 points
    That looks great! But can you call it Flappy Chickenlips. Kthxbai. Perifractic, X16 Visual Designer http://youtube.com/perifractic
  10. 4 points
    They’ll be in touch hen-yway. Perifractic, X16 Visual Designer http://youtube.com/perifractic
  11. 3 points
    Those are fair questions and I’ll answer as clearly as I can. I’ll start with why IO devices of the normal type like the VERA are impractical to put there. So to begin its good to clarify that it’s important that most of ZP be reserved for the intended ZP usage using a couple registers is fine because it leaves the bulk of the space free. Two registers which were also reserved on the 6510 is not a big deal. But tying up lots of registers is. I won’t disagree that having the VERA there wouldn’t be very useful, the main reason is you need to create a logic exclusion case where a 32 byte range are read or written from the VERA instead of RAM. This requires a fair amount of logic and that introduces timing delays which can cause lots of problems especially on reads. And creating an exclusion case for VERA (a 32 byte range) is more costly from a component/complexity than turning the entire ZP into IO. But turning the whole range into IO is too costly from a software/overall functionality standpoint to be considered either. So how then do we do an exclusion for two registers in ZP? The simple answer? We don’t. The bank registers are in fact RAM and latches. We don’t disable the RAM on reads or writes. The RAM at those locations is always active. However what we do implement is a shadow technique where on a write event to those locations a pair of latches (one for each address) will capture the contents of the data bus on the falling edge of the clock. This does not disable the RAM from also latching those same values, and in fact when you read those locations what you are reading back is the RAM, not the latches themselves, since they can’t actually be read. This isn’t a problem since the RAM will always (with one small exception) contain the last written value. The exception is on a hard reset. On a reset the latches always return to zero whereas RAM does not. So in theory after a reset the value stored in RAM and the value in the latch will mismatch. In practice this isn’t a problem since the reset routine will write to those locations which corrects the mismatch. So the trick we are doing while it does add a few parts, has no impact on the timing of the system. It’s very simple and it’s inexpensive. The parts used cost much less than devoting a relatively costly 65c22 to do the same task. And we aren’t eliminating the 65c22 gets freed up to do more important things. End result is the X16 has more free IO for the user than the Commodore machines did. Sent from my iPhone using Tapatalk
  12. 3 points
    I used my school art/math lab's Apple ImageWriter with a color ribbon to print out a report cover sheet for my English class. I made it using a paint program on a IIGS - the height of technology circa 1991. My English teacher was Blown. Away.
  13. 3 points
    I bought a color dot matrix printer (so awesome at the time) to go with my C128D, and I had one of those cassette port adapters. I'm very fortunate that it was either keyed or that I happened to insert it right side up!
  14. 3 points
    It is possible I had some hardware defect with the cassette interface. I suspect the problem was either the cassette player I had at my disposal at the time, or my inability to fine tune the volume to successfully play it back. Never underestimate the incompetence of a 15 year old who knows very little about how computers work using a fire sale priced discontinued bit of hardware (I think my father paid $35 for it in 1983). Really, the more incredible thing in my mind is the price. $35 in late 1983 is about $90 today according to https://www.bls.gov/data/inflation_calculator.htm, which pales in comparison to modern tech such as a RPi.
  15. 3 points
    So stop using 640x480. Drop down to 320x240 and all of your problems will go away. Sent from my iPhone using Tapatalk
  16. 3 points
    @AndyMt I got VolksForth to work uniformly with R38 and R39 yesterday. While looking at my code, I realized that I have the simple and robust opportunity to just operate both bank switching addresses $0000/1 and $9f60/1 in tandem; this seems to work nicely and seems good enough to me for the transition period. See https://github.com/pzembrod/VolksForth/commit/fb100de9edc92dfb8db25ed97e6b7f0a4b3085fa for details. @Michael Steil One question about this approach: It seems clear to me that writing to $0000/1 has no adverse effects in R38 as there's just 2 unused RAM bytes there. How about $9f60/1 in R39? That would write to as yet unimplemented/uninstalled I/O devices in the expansion slots, right? Also, follow-up question: It seems that the release of R39 is imminent? If so, then I can hold back releasing the next VolksForth version (and, subsequently the next cc64 version) until R39 is out, and include the cleanup https://github.com/forth-ev/VolksForth/issues/33 of the temporary double switching in my next releases already.
  17. 3 points
    Hello everybody, I'm a new guy here, very interested in the CX16. I grew up with Atari machines: 800XL, ST, Falcon and Jaguar. I still have a working Falcon and Jaguar. The Jaguar is my favorite retromachine and I wrote a few small homebrew games for it. Now that makes me more of a 32 (64?) bit guy. However I came to appreciate the cleverness that went into the design of 8-bit machines. The CX16 really piqued my curiosity and I started learning 65c02 assembly with the help of Matt Heffernan tutorials. The CX16 is a cool machine to play around with and people are already done impressive stuff on it, let's see what the future will bring!
  18. 3 points
    I started on a TI-99/4A, then moved to Commodore, and of course Commodore won me over pretty quick. :) My TI was a gift from my uncle in 1981, and I was thrilled beyond belief to get it. My parents were not gonna drop that kinda money for something they had no idea if I would keep using... boy were they surprised. I spent every free moment behind that keyboard. From that point forward, they fully supported my interest in computers. Good times!
  19. 3 points
    Another quick update showing off the PHAT sound that one can make with the Concerto engine! Also showing off the play-pattern feature: I didn't update the whole song because I really need to add in a few additional GUI elements. Namely tracking the current instrument so that I can add notes without having to constantly change the instrument number. And there's still some UI bugs where it sometimes doesn't update the instrument number and I have to end up doing that multiple times (that's a weird bug). But geeeeez that phat sound!
  20. 3 points
    I'm seriously considering planning this! Right now both my games use slightly different variants of a lib for sprite handling and music - due to "historical reasons" and lessons learned. I want to migrate both to the same code base. Then I think it would be time to release it to the public.
  21. 3 points
    Some notes on my progress supporting END, PagUp and PagDn. From the emulator source code, it's apparent that those keys are discarded. See file keyboard.c, function ps2_scancode_from_SDL_Scancode. I made the following minimal change to that function, and recompiled the emulator: case SDL_SCANCODE_END: return 0x69 | EXTENDED_FLAG; That emulates PS/2 scan code E069 when the END key is pressed. The good news is that I could successfully detect the END key in X16 Edit. Most probably, this will work on the real hardware out of the box.
  22. 3 points
    Well, the thing to remember is that there are things done in HW that help out a lot. Working in tiles is much faster than working in a bitmap (frame buffer) because you only have 40x30 / 80x60 memory addresses to update if you decide to make "all tiles use the same color palette" as a constraint. Scrolling is faster in VERA than on, say the C64 because while the C64 supports smooth scrolling, it can only smooth scroll up to 8px, so you have to cascade your entire screen's tilemap down each time you scroll 8px, but VERA can scroll up to 1024px w/o having to touch the tiles at all - so you only have to update one column of tiles at a time if you want to keep scrolling wider than 1024/tilesize. I'm doodling around to see if I can get a working version of Space Invaders using BASIC - leveraging this kind of "HW acceleration" So the X16 BASIC is faster because the CPU itself is faster, but the GFX and sound HW also help speed things up too. (FM music may be tricky to make good-sounding patches, but once set, you can play a sound with just two pokes, potentially) The X16 hits a nice sweet spot where it's definitely a lot more powerful than the classic 8-bit systems were, but it still imposes some serious limitations so it's not just like having infinite resources. For instance it can show 640x480 bitmaps, and it can display 8bit color, but an 8bit 640x480 bitmap is $4b000 bytes, but VERA only has $1fa00 bytes of VRAM, so you can either do 640x480 @ 2bpp color depth, and even then you're using $12c00 bytes of VRAM.
  23. 3 points
    I am a bit late, and I should have posted this on april the 1st, but..... What is this "Desktop" that you are speaking of ;)???
  24. 2 points
    I ran across a few memes I liked that made me think ... What reminds me of the 80's? There is a LOT, especially when you include TV and music into the mix , but I narrowed it down to just a few items that popup the most in my memories, the things I used and loved to play with. Things we had that stuck in the minds of many people I am sure. The NES, console TV's, VCR's, the Sony Walkman, and of course, the Commodore 64. These are the original memes I found that got me thinking about this in the first place! So, what about you, what "things" take your mind back to the 80's? Besides the totally radical TV and music of the era.
  25. 2 points
    You can never go wrong with wood grain! LGR would love it! lol Yeah, OpenWRT is nice, as is Pi-Hole. Currently, most of mine are being used for emulation purposes though. Two of those are Pi 3B+ units running RetroPie (in Sega Genesis and NES inspired cases), and a single Pi Zero W sitting in a GPi Handheld Case also running RetroPie (Yeah, I really like RetroPie... lol). I have a Pi 4 8GB sitting in an Argon M.2 Case running off an M.2 128GB SSD, that's my "just for fun" and learning unit. Seeing what I can get it to do, mainly running Pi OS. My old Pi 1B+ is being used to assist with some Arduino projects. So they are getting used in one form or another. For me, "tinkering" is what I do to relax and have fun when at home. One of the reasons I started this thread was I got to thinking about that old ADAM computer and kinda wished I still had it to mess with, even with it's laundry list of issues.
  26. 2 points
    Can we add a more modern hybrid into the competition? I have had to fix this computer twice, since I bought it for my son to work on. 1. I guess when they developed the idea of the sliding keyboard they did not take into account the number of times someone would open and close it. The mini 8 pin ribbon cable which connects the keyboard to the driver board, over time fractures from the stress, and becomes an intermittent fault. 2. I also had to add a fan, which circulates air when the keyboard is closed, since their giant heat sink is starting to effect the plastic of the keyboard. Again, I guess they assumed someone would not keep it running for days at a time. 3. And finally, the holes which are suppose to secure and align the raspberry pi for its connection to the power/driver board are not spaced properly. Thanks to everyone for sharing their stories! I was beginning to think I would not find a group of people who had some of the same experiences as myself growing up. Nice to see so many enthusiasts out there. Have a great day!
  27. 2 points
    My dad bought mine for me when it was it's "full price" of $100 ... I went ahead and got the RAM expansion pack. My experience with that plug in RAM expansion pack made "64K RAM built in" an even bigger selling point for the C64. My biggest "never underestimate the incompetence of a 15 year old" moment happened in my mid-20s, when I got back from the Peace Corps and bought a C128D, and when I went to plug in my printer interface, I plugged the power tap from the datasette port in upside down. Now, there WAS a notch, so a datassette power tap COULD be keyed to make it impossible to plug in the wrong way, but the parallel port interface I had didn't bother to do that and relied on user competence instead. Needless to say, I fried the 8510 processor in the unit, which is tied directly to the datasette port. That is, indeed, "why" I brought a C64 to grad school rather than a C128D ... the C128D had been turned into a large and expensive monitor stand.
  28. 2 points
    Although the try it now button is still visible on mobile, it really isn’t designed to be used that way. If you think about it, you are emulating a computer that doesn’t yet exist, within an emulator built for desktop computers, running on a web browser, running in a cell phone window. We have to draw the line somewhere and how far we can support emulation and the try it now button. We could remove the button altogether but this would be an unnecessary crippling of a feature that can at least give you a little taster of a program or its start screen. Long story short, please keep expectations realistic and wait till you’re in front of a computer, to emulate the computer [emoji6] Perifractic, X16 Visual Designer http://youtube.com/perifractic
  29. 2 points
  30. 2 points
  31. 2 points
    I think it was my uncle that got my parents to see that computers were not just expensive toys, but actual learning tools that they could also use. Sadly, my parents never really used any of the computers we owned over the years. My dad played a few games on my C64 from time to time, but that was about it. Still, they saw how much I liked them, and I think they were just happy there was something I had at home that I preferred doing other than wandering around town with my friends, something I still did a lot of. haha I agree on the "never underestimate the incompetence of the 15 year old", I came close to, and successfully fried, my fair share of stuff back then. I look back on it now as mistakes I learned from. My dad was really good with electronics, but has very little computer knowledge, so he helped me learn the components he knew, and what they were for, and I tried to teach him how it all worked as a computer. Good times.
  32. 2 points
    Mine had working cassette storage, so maybe you just had one with a flaky chip somewhere. But between the constant crashing when the 16K RAM was connected, the membrane keyboard and the speed of operating which was AFAIU due to using the CPU as the display chip so it only executed programs during the vertical blank, it was more than anything an explanation for why I opted for a C64 system when I had the chance.
  33. 2 points
    Lovely ... Got collision detection working now with VERA hardware detection ... VERA implements collision detection very nice. Thanks to those who have been explaining how collision works on various sites and also here commenting. Especially @AndyMt, @Geehaf and the explanation of flyinglow at this site helped a million times! Sprites in Assembly III - Collision detection (8bitcoding.com). And thanks @Johan Kårlin for showing me the way to hide those sprites... The CX16 default VERA documentation lacks essential details in terms of collision detection. Now I have all the ingredients to continue with my game ... It's exciting. I'll need to do some explosions etc.
  34. 2 points
    My parents saw the computer as a toy, and to a degree it was. Restricting my use of it prevented me from discovering the art of programming well into my adulthood. I really wish learning basic couldve happened during my formative years. A friend had a c64 in his room and the only memory I have of us using it was a flight sim. We had computers at my elementary school but a course in it was offered only to the GATE program students. By junior high we had apple 2s but their use was limited to typing class. In high school we had a mac plus lab but by then I had developed a hatred for apple computers. Sent from my SM-T720 using Tapatalk
  35. 2 points
    Woo-hoo someone got Perifractic on my thread.
  36. 2 points
    Shortish update: Disabled pattern scrolling when playing entire song (no more stalls) and added ugly placeholder for better graphics (like channel trigger indicators) Added play pattern which DOES scroll since we don't have to reload the pattern (key F6 in edit pattern module) Added start song playing at row (key F6 in edit pattern module) This is buggy because doing things like pulling up the order list while playing crashes everything. Very rough around the edges. Took a while to sort of slide back into the codebase since it's been a bit of a hiatus. The above is good enough to be able to start working on better integration with Concerto so that's what I will start working on next.
  37. 2 points
    Check out MatsukeN's channel on YouTube - he built MIDI cartridges to go into a real NES and one for the SNES. He and several others put on live performances playing the real tunes manually on MIDI keyboards. Their performance of Final Fantasy IV was pretty amazing - it sounded exactly like the original, but since it's being played by humans, there're micro-mistakes that you can hear it's really them playing it and not just faking while the system plays the music. Basically, there're 9 people in the SNES team - one player for each voice, and one person responsible for switching the patches on the various voices at the correct times. (each keyboard is monophonic, it would seem)
  38. 2 points
    Yeah, the membrane keyboard wasn't the nicest thing in the world to use. My only other computer experience up to that point had been several PET 4032 (I think) at my school, which I thought felt great. Then the TS 1000 which wasn't all bad, and it was a gift, so I hate to sound ungrateful. Then I bought my C=64.
  39. 2 points
    I put out a new vlog today taking a look at the most-downloaded complete games available right on this site. I'm looking to feature more X16 games and stuff on future episodes, so please give me some suggestions here on YouTube:
  40. 2 points
    I was going to call it the Chickenlips 32, but I'm afraid that @Perifractic would sick his lawyers on me.
  41. 2 points
    Sounds like the big brother to Commander X16 ?
  42. 2 points
    I liked the vlog and will def check out your others. Because you've been in/out of coding for the virtual platform (and maybe you even have hardware?) can you tell me... Is the BASIC that much quicker/optimized, is it the clock speed that makes Crazy Boulders doable in BASIC, or is it that the virtual environment runs full speed that makes it possible. Granted (and I'm guessing), it's obviously that redefined characters or tile manipulation is much faster than raw bit map moves, but I was curious. For AndyMt: any thoughts around putting a .lib together containing higher level functions for reuse? As a hobbiest, I dropped 'C' about 20 years ago and have just done NodeJS and Python professionally, but if a combination of plenty of RAM and cc65 being feasible for dev on this platform is workable, many more people might want to jump onboard. (also, don't be shy; the important part is that it works and people enjoy and/or learn from what you've done)
  43. 2 points
    And since OP wants FPS anyway, all he has to do is use the jiffies directly, since they inc++ once per frame anyway. starttime = RDTIM <render a few dozen frames (nFrames)> fps = RDTIM-starttime / nFrames I'd suggest 64 frames, so you can just do RDTIM-starttime >> 6 to compute FPS
  44. 2 points
    Okay - once this comes out, someone needs to make a demo doing the Death Star trench run briefing animation, and streaming the audio from disk to accompany the animation.
  45. 2 points
    Hi Guys, I am living in mostly in Czechia (a couple of month in Spain) and recently I have just found this amazing project, I found myself missing a lot 8bits machines, so I removed the dust from my Amstrad CPC, and reading forums somebody mentioned this project and I felt in love at first sight ! Amazing Idea guys!!!! Looking forward!!!
  46. 2 points
    What @Elektron72 said is correct. Here's a short tutorial for using SYS in BASIC 2.0: The BASIC interpreter will first push the existing contents of the registers onto the stack, then load the A register with the value stored in location 780 ($030C), X with the value stored in location 781 ($030D), Y with the value stored in location 782 ($030E), and the status register with the value stored in location 783 ($030F). Then it will JSR to the address provided as the argument to the SYS command itself. When (or if) the routine executes an RTS to return to BASIC, the reverse happens. The contents of A are stored in 780, etc. Finally, it will pull the previous register contents from before the SYS call back into the registers, and resume BASIC execution at the next instruction.
  47. 2 points
    Don't bother with a PR. We won't update until R39 is released officially.
  48. 2 points
    Hello From Boca Raton, Florida. Appreciate all the hard work you all have put in to make this a reality. Have a great day everyone!
  49. 2 points
    It takes the saying "comparing apples and oranges" to a whole new meaning, haha!
  50. 2 points
    My family's first computer was a TI 99/4A, followed by a Coleco ADAM and then a Zenith Data Systems PC clone. The first computer I personally owned was a machine by a company known as Orange Logic. it used a PIC microcontroller as a CPU, and the sound system consisted of an RCA 1802 and an 8-bit DAC, and the built in language was Chip-8.
  • Create New...

Important Information

Please review our Terms of Use