Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


StephenHorn last won the day on July 19

StephenHorn had the most liked content!

Community Reputation

352 Excellent


Recent Profile Visitors

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

  1. In addition to the NES, SNES, and Sega Genesis sound coprocessors, and the 1541 disk drive's 6502, the Sega Saturn had something like 6 "stream" processors which each ran their own op in parallel to the others. This wasn't true "multithreading", this was more like being able to run 6 operations simultaneously, and the assembly code files were literally 6 operations per line. I'm not sure how such a design might be possible with 6502s (I thought I'd read somewhere about using a pair of 6502s to mimic 16-bit-like processing, but I can't find the sources and don't even see how that's possible from the pins on a 6502); but even if it were, it's worth noting that the Saturn was famously difficult to program for, which kinda shows this was only marginally practical. I could see a use for having a second 6502 for spinning heavier math processing off to another domain, but I would agree with others that it would probably be more practical to look into a more bespoke math coprocessor, or at least a different CPU for certain math operations, the way some folks used Z80 expansion cards for C64s and Apple IIs, or the way some SNES cartridges had the 3Dfx chip.
  2. Alas, the best I could come up on my own with were 1990s games or later. To supplement your list: Dragon Quest V (1992), the game protagonist marries one of three different women (the player chooses which). Super Mario RPG (1996), an antagonist named Booster attempts to marry Princess Toadstool. The ceremony is broken up at the last second. Final Fantasy X (2001), Summoner Yuna agrees to marry Seymour Guado, but it turns out to be a ruse that goes wrong and she is forced to flee from the ceremony at the last second. And the closest a quick internet search could get me was Phantasy Star III (1990), where the main character can marry one of two women in the game.
  3. Well, there's no rewrite planned that I'm aware of, just modification of the C64 kernal to match the hardware of the X16 and extend the API. Having contributed a bunch to the official emulator, forking my own, and poking with the CPU and memory mappings, my guess is that it's not so much a problem with VERA initialization as that the '816 either has a conflicting opcode with the 65C02 that the kernel is using, or is expecting some new piece of memory to be mapped in a way that conflicts with what the kernel is doing, and the kernal is crashing or entering an infinite loop before it gets to VERA initialization. (I would have guessed a conflicting opcode, but added memory wonkiness because someone on the unofficial Discord server suggested the 65816 has a hardwired memory requirement -- similar to the 65c02's CPU stack from $100-$1FF -- that the kernal isn't taking into account.)
  4. For the time being, that's my assumption, and I assume there are no plans to change that. After all, the project is supposedly close to being finished, the team had even hoped to have something available last year, so I very much doubt there are any plans for a major redesign at this point. If the KB/M interfaces moves to the microcontroller, I expect that means it'll be bit-banged through I2C. I don't know what will become of the VIA bits currently used there, if they'd be left empty or if they'd go to the user port or expansion slots, or what. But I'm guessing that whatever else changes, it'll be small moves.
  5. For my money, this is the most interesting point. Kevin added that there was debate whether going through the microcontroller would be faster or not. I had previously commented on Facebook, but this sounds like the team is experimenting with the difference between having the CPU communicate with PS/2 devices directly, versus communicating with PS/2 devices through I2C. The PS/2 interface requires a fair fewer bits, but the CPU spends a lot of time idling, and queries can take a significant fraction of a screen's scantime. I2C, though a much faster interface, requires a lot more bits. Since both interfaces are bit-banged, the difference may be a wash. Personally, I'm hoping we learn what the results ended up being.
  6. Well, with DDR5 promising 4.8GHz and up to 8.4GHz clock speeds, I guess I could start to believe in the possibility of a high-quality manufactured ASIC hitting the GHz range while running the 6502 set of opcodes, without having to be throttled by memory fetches. Would it run circles around modern Intel and AMD processors, though? Lulz no, we're talking about an 8-bit CPU that can't even do its own integer multiplication, much less floating point, and let's not even start on division. Even if you could clock it up to modern CPU speeds, your programs to compare against would be spending thousands of cycles performing operations that a modern Intel, AMD, or ARM cpu can do in as few as 30 cycles. And the memory efficiency of the program code would suffer greatly, as well, as the 6502 has no opcodes for floating point math, or different type sizes, or vector operations. Sorry, we're all fans of the 6502 here, but there's just no reality where a 6502-circa-2022 is going to remotely compete on performance.
  7. Just bringing over some related fun from a Discord channel:
  8. I guess I could only add my agreement that this seems a little doubtful without more documentation of the history of this setup. If nothing else, I agree that this seems inelegant, particularly with a vanilla ribbon cable connecting the keyboard to the mainboard - surely an official kit would have chosen a more professional-looking cable? Perhaps something a bit more rugged, if the idea is that it can be moved around relatively frequently? I certainly don't have the expertise to say either way. Sans that, I could only see myself valuing it as much as any other homebrew mod.
  9. I remember my first encounter with spinner tiles in a labyrinth/CRPG game. I was initially delighted with the game because it was hosted on a BBS and basically using RIPterm graphics, and that was novel. But the draw distance was only 2 tiles ahead, and spinner tile was on a 4-way intersection, and the level made sure all paths onto the spinner tile looked identical, and since we're talking about RIPTerm the game did no animation and so didn't gave any clue that the tile had reoriented the player until they had turned the next corner (or the next after that). My word choice for that kind of design these days is much saltier than when I was a child, but the sentiment remains the same: "F@#$. That. Noise." As a direct result of that experience, it would be the best part of a couple of decades before I would actually learn to enjoy the genre, in a much more contemporary and polished franchise.
  10. By the way, does LLVM-MOS include a way to implement interrupt routines in C++?
  11. My understanding is that the folks who have been volunteering their time into it have been holding off committing r39 updates to the cc65 source tree until there's an official r39 build, in part because the most current official release is r38 and they don't want to force folks to build their own emulator from source in order to test and run their C programs.
  12. "Two's complement signed" means it's a signed integer. If the "two's complement" part is what's confusing, it's the same way that C and C++ represent their signed numbers. To negate a value in two's complement, invert all the bits and then add 1 to the result. So, for instance, 0x0001 is "1", to create "-1" you would invert all the bits (getting 0xFFFE) and then add 1 (getting 0xFFFF, which is "-1" in two's complement). Similarly, negating -1 starts by negating all the bits (getting 0x0000) and then adding 1 (getting 0x0001, which is "1" in two's complement).
  13. It's at the tail end of the official documentation: Audio data formats Audio data is two's complement signed. Depending on the selected mode the data needs to be written to the FIFO in the following order: Mode Order in which to write data to FIFO 8-bit mono <mono sample> 8-bit stereo <left sample> <right sample> 16-bit mono <mono sample (7:0)> <mono sample (15:8)> 16-bit stereo <left sample (7:0)> <left sample (15:8)> <right sample (7:0)> <right sample (15:8)>
  • Create New...

Important Information

Please review our Terms of Use