Jump to content

kevtris

+AtariAge Subscriber
  • Content Count

    859
  • Joined

  • Last visited

  • Days Won

    20

Everything posted by kevtris

  1. Yeah pretty much. All expansion sound is present, and there's over 200 mappers supported right now. I was going to add FDS (though FDS audio is in there already) now that raw FDS files exist. As for MMC5, it is a full complete implementation. Every MMC5 game runs flawless. I even support the rarely used vertical split mode which was used on a single game- SDF. Speaking of sound, I was thinking of making a video showing off the two FPGA based chiptune synthesizers I have created. The first model plays a laundry list of chiptune formats, and the second model's a bit more refined. Both of them are 'done' (is a project ever done?) and I have been using them quite a bit. Here's a few outside shots of the first one. The user interface is 100% capacitive touch including some buttons and a wheel that you can slide your finger around in a circle to move up and down through menus and select files and such. Output is via headphone jack and 1/4" jacks. There's a rechargeable battery (and charger), MIDI port (sadly not used at the moment), graphic LCD and SD card (full FAT16/32 support and SD-HC capable). And of course a shot of the guts. I don't have a picture of the main board itself without the power supply plugged into the top where the FPGA lives. Finally a picture of the capacitive PCB including the "fun" to make wedge shaped electrodes for the wheel. This one plays: .SID (quad SID supported, including true analog filters (dual filters), full compatibility, realsidplay, psid, etc.) .NSF (including all expansion chips. yes even VRC7) .SAP (atari 8 bit, I support quad POKEY) .SGC (format I came up with- SMS, colecovision, gamegear. Supports YM2413 FM too. There was no proper chiptune format for these, only register dumps so I made it and ripped around 200+ sets of music) .GBS (gameboy music) There's also full OPL3 support so it can play: .CMF (creative labs music format) .IMF (ID music format, i.e. commander keen, wolfenstein) .D00 (edlib) .RAW (register dumps) .KSM (ken silverman's music format - ken's labyrinth) I wanted to come up with a MIDI interface to play a virtual "symphony" of the chips this device simulates but haven't gotten to it. I need some musical input to make that part really awesome. The chips I support (all at once) are: * NES (dual squares, triangle, noise, digi) * MMC5 (dual squares + digi) * VRC6 (dual square + saw) * N163 (8 channels, 4 bit samples) * FDS (single wave/modulation channel) * Quad SID with dual "real" analog filters * Quad pokey * AY-3-8910 * SN76489 * Gameboy (2 square, 1 noise, 1 digi) and one of the following: * OPL3 * VRC7 * YM2413 These three use the same FM core so only one can be used at a time. If I added it up right, that's 39 channels not including the FM which adds up to another 18 or so. All of these channels individually feed into a giant mixer that can pan each one left/right or anywhere in between, and any channel can be passed through the filters too, so ANY chip can use the SID-like analog filters. There's a whole mess of "visualizers" on it which take the sound chip register writes and turns it into something interesting to look at. If you've seen the visualizer on the Hi Def NES adapter, it's in a similar vein but there's more doodads and geegaws going on. So after that one, a few years later at work we got a laser cutter, and I had developed the SNES SPC700 core. Figured it was time for another synthesizer! Using all the stuff I had done before, I created this second one in a month or two. I was still using an ancient PCB program called "Draftsman EE" for my PCB needs. It was old but it worked well enough. Glad I moved onto Altium 2 years ago. This second one is powered by a smaller FPGA (EP3C15), a PIC32, and a 16Mbyte SDRAM. It has a headphone jack, microSD (FAT16/32 and SD-HC support of course), MIDI port, rechargeable lithium ion battery, USB, and some other things. Like the first it's got a capacitive touch button, but this time I opted for a slider approach instead of the wheel. There's also four RGB LEDs on the sides that can flash and gyrate with the music, do fades/wipes, or other things. The LCD's a higher resolution graphics model with an RGB backlight as well. It can load FPGA cores off the SD card at will to change up the chip(s) it emulates. Unfortunately there's no SID filters on this one since it was more a test unit. Like the first it's "done" and I have been using it a bit. First some outside shots: And the guts: Enclosure pieces parts: And the outline of various layers. note the button on the side changed to a different form, but the other layers are similar. (might have to open it in the media viewer to see the lines, not sure if they will show up at all on a thumbnail) Like the other, this one shows various visualizers and things while it plays. It's playing SPCs here. So that's what I've done to date in the sound arena. I had the idea of selling some of my synthesizers too, but again I am not sure what kind of market there is. I was thinking a rack mounted unit might be the best for musicians that wish to use it. My "installed base" of FPGA "pieces" along with the code and hardware to do the care and feeding like SD card handling and such is pretty large at this point so I'm hoping soon will be the time to maybe capitalize on it. Thanks for reading my ramble, and for all the suggestions and discussion so far. It really helps!
  2. Because it doesn't have the hardware on it I want, and using someone else's premade board isn't any fun. Part of the fun is designing it, making it, then programming it. The DE1 is OK but just not really set up for what I want to do. It is cheap, but part of the cheapness is due to special pricing they get from FPGA vendor, and the other vendors like Analog Devices for i.e. power supply components. If I'm gonna do this, I'm gonna do it my way dammit :-)
  3. You sure can prototype it for a few thousand dollars. Of course, you have to have the skillz to do so. Any hardware person worth their salt shouldn't be afraid of doing a little home brew reflow soldering. To make a prototype of this magnitude on the cheap, the following things need to be done: * Buy your blank circuit boards from china. A 6 layer board of the size they need would cost them around $600-700 for 5-10 pieces. Yeah it's not US made but then again it didn't cost you $3K either. * Build your own reflow oven using a toaster oven, thermocouple and an industrial heat/soak controller. This cost me around $200 for everything. Omega sells the controller. * Buy your solder paste stencils from oshstencils.com. They are really really cheap. Figure 10-20 dollars each if you're doing double sided loadout (parts on both sides). * Get samples of expensive parts if possible. Otherwise, Digikey/Mouser/etc are OK for protos * Paste your board, place the parts and reflow the board Doing it the way they probably would like to do is simply sending your PCB files and a bill of materials to some dorks that will buy the parts, get the boards made, and solder it together for you. Of course this is going to be brutally expensive. Moreso for smaller runs like prototypes. And again more expensive yet if you have this done in the US. Outsourcing to china is the best way to save money on prototypes and even production. It's kinda sad but time moved on and 20 years later, china's the place where high tech is made. I tried getting my HDMI adapter circuit boards made (4 layers) here in the US and it was a joke. It was going to cost $900+ for 5 boards. They ended up not doing it because I had too many cutouts (they would only allow 4 and I had 6- two of the cutouts were unplated mounting holes) and the tolerances on the inner layers were laughably bad. My board would never work even if they made it. I would've had to move up to the $1500-2000 tier to get them made there. I sent the files to china and had boards in my hand within 5 days, and it only cost around $250!!! That tells me that getting stuff like this made in the US is a friggin' joke today. It sucks but I have faced reality. I had 500 HDMI NES adapter boards made in china, via a contract manufacturer (I sent over the PCB files and bill of materials) and they returned 500 boards. The quality and workmanship were top notch- easily as good as anything I could've gotten in the states and the cost was incredible. If they come back about how it's got lots of BGA parts and high density surface mount, it's absolutely no excuse. I have no less than three friends who reflow their own BGAs all the time for home/work/freelance projects. In fact, reflowing a BGA is actually fairly simple, it works better in most cases than even reflowing a QFP.
  4. Yeah I was thinking selling 1000 units is the number I have to hit to make it worthwhile, though 500 might be doable these days. I have run the numbers many times, and honestly I wouldn't be doing this to make enough money to retire (I'm NEVER retiring. That'd be boring as hell. My job's too much fun!) Not quite sure what kind of profit I'd make but again it's more about releasing something I really believe in vs. making "Retro VGS" levels of money. If I can cover costs of production and make some bucks at it, I'm all for it. There's no way I'm going to ever get paid back for the time I put into these cores, but again this is like the hardware version of a homebrew 2600 game. You do it because you love it and if a few bucks can be made to offset the costs, great! I had a couple ideas for reducing the costs while still trying to accommodate everyone I can reasonably. The first idea which seems to be good is to offload the video/audio hardware 100% onto a small add-on plug in board. This would allow swapping in and out the following boards: * HDMI * composite/S-vid and audio * RGB (or component) and audio * VGA and audio Maybe let the user choose which add on video board to buy, instead of trying to include everything on a single board like before, even if it's a massive plug in analog board. This cuts down the IO count massively which saves PCB area (routing), FPGA IOs, and all importantly cost. Using a PCIe connector is fairly cheap and edge mount ones are available. The only downer is you can't run HDMI + some analog output at the same time, but there's probably only a small percentage (< 5%) that would want such a feature. Having everyone pay so the 5% can have it is in effect subsidizing it, while driving up end user costs. I figure these boards would be fairly small, on the order of 2*2 inches. Basically wide enough to account for the connectors needed. It's possible that I can change the width of the board to suit, and use a laser cut plastic cover with thumb screws to hold the board in and cover up the gaping hole in the back panel. By putting it on the corner of the main board, this would allow for "adjustable" width up to a point as suggested. Figure the cost of the A/V boards would be in the $30-40ish range retail each, with a parts cost of $10-15 not including assembly. It'd require a plastic cut back panel cover and board. I got free access to a laser cutter so this is not a problem at all. The other cost saving measure would be to use partial reconfiguration on the FPGA. This is still kind of a pipe dream, but looking at the Cyclone V, it does seem to support it. I was reading through Altera's guide on partial reconfiguration. Basically what this means is I can have part of the FPGA that is running all the time, and swap out part of the FPGA for each system core. So things like video handling and DDR memory handling can be the same for every core, and then I can just update the core functionality at will during operation. If partial reconfig is a bust, I will pretty much need two FPGAs. Though, the video/IO FPGA can be a much cheaper model. Right now, the main FPGA is a Cyclone V 49K LE part with four DDR 16 bit wide DRAMs connected to it. This was selected to give me enough memory bandwidth to ideally run Neogeo. I designed for Neogeo, which is absolute brute force and contains no less than 5 different busses on the massive dual PCB carts. Obviously I could never offer a cartridge adapter for Neogeo due to the hugeness of it all, but I still am designing for this level of core support. Was thinking of stuffing the 49K LE on my current board though, and seeing what I can do with it in regards to partial reconfiguration so I have a better idea of what I'm up against. I don't want to rush into making another prototype only to find out it's a bust and I have to redo a bunch of stuff. Measure twice and cut once and all that. As for cartridge adapters, I am unsure what kind of footprint these would be. Would it be some doodad that slots onto the side? (my original idea) or would it be like the 2600 adapter for the 5200 that plugs into the top? I originally wanted to make a massive add-on with like 16 cartridge ports but this is ridiculous (and I knew this- I was going for ridiculous) and absolutely unsellable. It'd just be a fun thing to make. Making what amounts to pin converters to convert say, NES or 2600 or INTV to some "Standard" connector like a PCIe one would be a simple matter. The hard part is wrapping a plastic case around it. This might be possible with laser cut acrylic, but to make it pro really needs an injection mold in the $7-9K range per adapter. (and someone to design them. I'm the hardware guy and not so much on software). Speaking of packaging, I was originally going to house it in a laser cut acrylic case of my own design, something I have done before. If volume is there, obviously injection molding is definitely the way to go. As my boss says, "volume fixes all problems".
  5. I agree there's not enough bypassing. There's a cameo of the bottom of the PCB in some of the pictures and it's blank. No caps or anything. As for logic analyzer hookup, at the signal speeds on the board, this isn't possible. Fortunately at least on the FPGA side of things, most of the major vendors include a software logic analyzer. In Alteraland it's called "Signaltap" and is literally a logic analyzer that gets compiled into your FPGA design, and works through JTAG. So you can monitor from 1 to hundreds of signals. It uses the internal blockrams to store the captured data, and the limit to the number of signals and depth you can capture is limited by the blockram. Since these things have over 1Mbit of RAM you can do a lot of debugging without breaking out the .1" headers and logic analyzer. It's super duper awesome. Without Signaltap, progress would be extremely slow. In Xilinxland they call it "Bitscope". And for everyone else I dunno :-) I posted a picture earlier in one of the threads that shows off Signaltap. I'm watching like 50+ signals.
  6. I'm using altium as well and it doesn't look terribly finished to me. There seems to be a lot missing, like video DACs and the RGB to NTSC converter they were talking about. Where's the power supplies? I see a PMIC (power management IC) with what looks like 5 power inductors around it, but am not sure if that's enough. The heatsinks I think were designed to connect to the heat pipe (lol) they were going to use I guess. I am not sure what the two large chips are, but I suspect it's the TI SOC and the FPGA. Interestingly the FPGA doesn't need heatsinking at all and shouldn't get very warm in operation if all my protos are anything to go by unless you're doing something crazy like mandelbrots at max clock rate or something. Even then the chip just gets warm and not burning hot. As for a proto, what they should've done instead of using cardboard and paper is gotten a cheap-o 2 layer PCB made of just the top/bottom layers and the holes to check fit. This board would've cost under $100 and would've looked 10000x more professional. It wouldn't be functional (missing the inner layers and all) but it'd be a good first round to check fitment of the connectors, screw holes for mounting, and all that physical jazz which is brutally hard to test with anything but a proper job PCB. I have gotten several "mechanical' samples made in the past for just this purpose, since the PCBs are incredibly cheap, under a week to two week turn time at the most (from when you submit the files to when they are in your hands). If you're going to ask for nearly $2M you could at least splash out $100 to get a professional board to test fit. Moving along... contrary to popular belief, I'd still license my cores to them. Their money is just as green as anyone else's. They asked me if I would make the prototypes for them, but I politely declined because I didn't think I was going to get paid to do it (unless the crowdfunding went through). After that, their interest in me kinda waned and I didn't hear anything for a couple months until the blown-off meeting. I can't afford to work on someone else's project free with the possibility of getting paid. If I'm going to work on a project that doesn't pay it is going to be my own stuff. That, and I think me trying to talk down all the insanity was going over like a lead balloon. It was basically a three person hugbox echo-chamber about how cool it was going to be and how there were lots of games lined up and people waiting to develop games for it and nothing at all about making something sellable. The defining moment to me was when Mike was talking about using small *hard drives* in the cartridges instead of commodity flash on one of the podcasts. Hard drives? really? REALLY? REALLY? Even Nintendo's been known to use commodity flash on some of their DS games. If the big N is using it, then I think it's pretty much clear for use by any other game cartridge.
  7. There will be no charge for new ones. Drop them on and go to town :-)
  8. Thanks a ton to everyone for your replies so far! It's been extremely illustrative for me. I will now try to clear up some of the finer details. All controllers will use USB and there will be 4 USB ports ideally. This will allow for game controllers, keyboards, and mice. I had huge plans for doing all kinds of computers on here as well. C64 is pretty much done- I have made an FPGA SID player! This includes 90% of the C64, because it runs every single SID file (yeah I tested all of them) and you have to run the BASIC ROMs and such. For "realSIDplay" files, it actually boots the C64 OS and waits for the blinking cursor before faking typing in SYS nnnn or RUN depending on which type it is (ASM or BASIC). The FPGA SID I have done includes a real analog filter that closely models the real chip. The SID HDL code is 100% complete and fully debugged and even supports lots of the weird things people have come up with like high quality samples using the PWM, enveloper, and other weird crap. And it handled the "looped noise" effect as well. The only slight fly in the ointment is the filter is external analog hardware so I wouldn't be able to include this filter on my system. Atari 5200 is notably missing because it's really a rebadged Atari 8 bit computer. The mysterious lack of computers is due to my up until now lack of keyboard/mouse interfaces. I have great plans to add all sorts of computers. Emulating the floppy drives is also a big pain in the ass (especially the devil known as the 1541). Some people have wondered how the actual game loading works. It works like this: You dump a directory onto the SD card that I provide on my website, and then put ROMs and what not on it. The FPGA bitstream ("program") is automatically pulled off the SD card and loaded into the FPGA to reconfigure it for the system you're attempting to run. It's all 100% automatic to the user and everything "just works" . If I provide cartridge adapters, the adapter will automatically configure the system and pull the proper bitstream off the SD card to make it "just work". I was going to support saving your saved games to SD card, and I am on the fence about save states- because this is "real" hardware, it makes doing save states quite difficult. I might provide it on some things but I can't guarantee it. Re: do light guns work on 31KHz VGA scanline doubled video? In some cases it does! I modified my NES zapper gun to double its sense frequency from 15KHz to 31KHz, and duck hunt played OK though range seemed to be reduced some. I could probably increase this range but didn't try too hard. I wanted to see if it worked, and it did. When I release new cores (or update old ones) all you'll have to do is drop the new stuff onto your SD card and plug it in and you're good to go. Speaking of new cores, these are my goals for the project: SNES, Genesis, and Neogeo (and TG-16). I want to do other cores as well but I will feel like I accomplished something with those three. I also have a chubby to add super acan, believe it or not. I don't know why but it seems like an awesome challenge to me. I also own 3 of the damn things I paid 99 cents for :-) I also want a huge galaxy of computers too. This new hardware I came up with is the key to getting all of these cores going. tcdev: thanks a bunch for helping explain the wonders of FPGAs. I like your work :-)
  9. I will reply to the Retro VGS comments here, because 1) I don't have FB, and 2) they will just delete my replies. * This is only partially true. $10K was for the stuff like RCA Studio 2, and Channel F. I was looking for $50K or so for things like NES and 2600. * I got blown off 2 weeks ago on our meeting to discuss cores, because the system was most likely not going to have an FPGA in it any more. I can quote what you told me on 9/8/15 if that helps: Once the IGG thing basically proved the FPGA was going to be a pie-in-the-sky add-on, I knew I had been made redundant. I figured at this point it was just going to be like a Retron 5 and bundle emulators and cart dumpers at the best. * The $200-250 price I quoted is A COMPLETE SYSTEM and not the bare board. This is a board, case, and power supply. Pack-in games are not required (though I could throw in a homebrew NES title maybe). Controllers would probably be extra, but since I accept USB controllers, you can plug literally any HID and use it. This means controllers, keyboards, and mice. Obviously it'd be kinda hard to play a 2600 game with a mouse, but I'm more thinking for FPGA computer projects and not just games. * You and you jag mold are like a mule with a spinning wheel. Damned if anyone knows how he got it, and damned if he knows how to use it. (sorry Simpsons). Fortunately, today making a plastic injection mold isn't so brutally expensive. My friend got a brand new NES cartridge shell mold made a few months ago. The process was fast, the parts are awesome and the cost was insanely cheap. It was cheap enough that I could float the cost without resorting to Kickstarter/IGG. For a Jag sized mold, the costs are a lot higher, but since my system will be quite small I don't have all that extra cost housing air and unicorns. My friend already got a crapload of cart cases made with the mold and is starting to sell them over on the nesdev forum. If you need boards/cart shells for your homebrew that's the place to go. * So far, my board infinitely more than yours does. It's hard to divide by zero and come up with any other answer. * I have done my homework. I have over 100 products under my belt between my home stuff, freelance stuff, and work. Some of them involved a plastic injection molded enclosure. I have been through the entire certification process (for a medical device no less). I own a patent. I think I have a tiny tiny bit of knowledge when it comes down to how to design and see a product through to production and shipping. * I can add an ARM CPU to my design. At this time I just don't WANT to. The ARM CPU doesn't add anything that I wish to have in my "vision" for the system. The good news is if I wanted an ARM based videogame system I can just MAKE one on the friggin' FPGA directly! Granted it won't run as fast as a dedicated "hard" CPU core would, but we're talking about games here and not the Android OS. * You must've missed the part about my FPGA board and its plethora of outputs. I already have 100% finished working video in the following formats (today, right now. I can show them off) 1) HDMI at 1080p/60fps, 1080p/50fps, 720p/60fps, 720/,50fps, 480p/60fps, and 576p/50fps. 2) RGB at 31KHz (VGA rate) or any of the HDMI rates 3) RGB at 15KHz (NTSC or PAL rates) 4) Component at any of these rates 5) Composite in PAL and NTSC and "direct system output" which emulates the target system's video EXACTLY. both voltage levels and timing wise. 6) S-video in PAL and NTSC All of these outputs are 100% digitally generated inside the FPGA for absolute maximum quality. Audio's currently 16 bits, 48KHz. I can output anything else though like 192KHz/24 bit. Internally right now my audio is 18 bit stereo. * Interesting that you hated the word "emulate" when I was in discussions and you were using the term "simulate". The difference between my board and any other emulator is the time and effort I put in to achieve the maximum quality of the end result. Anyone can throw together a R Pi and make an emulator box. I'm selling higher quality outputs (video/audio), absolutely zero lag (even on HDMI), and higher accuracy. My FPGA 2600 has higher accuracy on a few things vs. Stella even. I also am going for breadth and width. I support the Supercharger Demo Unit. I don't see that elsewhere (granted, it's not that big of a deal but I am going for as much inclusiveness as possible). I support Atarivox- there's a friggin PIC18F core I wrote specifically to simulate this add-on. The supercharger demo unit took a new 6800 CPU core as well. So the 2600 has actually no less than three CPUs in it. * So far your system hasn't been documented at all. So comparing what you want to do with anything else is impossible. Yep. I will just drive down to the Core Store and... oh wait. I'm pretty much the only game in town if you want finished cores with any kind of standard interface between them and all the testing and development work I put in on this. I will give another ferinstance here for fun. If anyone is curious how much trouble I went to for Gameboy, here we go: Unlike most other videogame systems, a gameboy's video is not "continuous". A CRT won't wait for pixels, but the LCD on the Gameboy does. This little detail caused huge headaches because each scanline renders for a different amount of time based on what's present on the scanline. The X scroll, Y scroll, window position, even sprites (position AND count) all interact together to change how long it takes. And games rely on this too. Some games will fail or show glitchy graphics if this isn't exactly emulated. To crack this particularly tough nut, I had to resort to a brute-force approach. This involved taking a gameboy apart, and rebuilding it on perf board so that I could attach some equipment and monitor what exactly happens. The first step was to make the doctored Gameboy: Here's a close up of the wiring: Next, it was hooked into the mothership (my logic analyzer) with a billion probe wires to every point on the GB chip: Then I can use my logic analyzer (an HP 16700B) to trace out EXACTLY what the chip is doing in black and white when certain "interesting" things happen like the sprite DMA: After all this mess, I piped the perfboard gameboy's LCD signals into some FPGA pins and made a quick and dirty CRT interface so I could play the GB games on my PVM: Finally, after writing some test code that runs on both the GB and my FPGA and communicates through the link port, I had my FPGA GB video signals exactly matching the real GB's video signals: So after all this mess, I finished my GB core and got cycle accuracy. Now imagine doing this for all the systems I have added, and you get some small idea of the trouble I have gone through in my quest for accuracy. A few more ferinstances: * Because the Videobrain is so stupidly rare and expensive, I came across some of the custom ASICs at a surplus place, found the schematic for it and made my own damn Videobrain on perfboard! This was then hooked into the logic analyzer and extensively probed. * Arcadia 2001's were expensive and rare too, so I found a schematic, bought the weird CPU and video chips cheap and built a perf version of that as well, and hooked it into the LA (logic analyzer) * Atari 2600 and 7800 were a bit easier, I just had to solder .1" headers to the chips and plug the logic analyzer in. * Intv was similar- just soldered .1" headers on and plugged it in. * Supervision- had to make an extensive debug setup with a UART cart and lots of .1" headers for the logic analyzer and oscilloscope (during audio debug) * Complete cycle by cycle investigation of the Odyssey^2's video chip using custom hardware to single step it (Actually single HALF step it- it uses both clock edges) to get absolute accuracy There's more but this is a small sampling of the trouble I go through in my quest for accuracy. I doubt you will find anyone who has gone to these lengths to ensure accuracy and compatibility. Good luck in your search for cores of this caliber.
×
×
  • Create New...