Exactly what I've been trying to work on myself. I'm new to FPGA's so I've been scouring for sources like this for reference. Thank you so much!
@rj45Creates3 жыл бұрын
Me too... specific technical documentation on the inner workings are hard to come by... hopefully I can help change that :-)
@jasonbaumgarte64653 жыл бұрын
@@rj45Creates Very curious to see how you implement your solutions, I was shooting for 640x480 using an upduino, not enough ram for full bitmap mode tho. So far I just have solid colors displaying on the screen which can be updated via writing to a register. Been looking at the Mercury 2 which would allow me the benefit of also dropping my SPLD's for my somewhat complex addressing scheme on my 6502 (X16 compatible). I was looking at the ICE40 hx8k for this same purpose, but the options with enough IO pretty much come down to the Alchitry Cu, but alas those are not in stock anywhere. I started designing my own board around the HX8K, but all the dc decoupling, power timing and BGA form factor all add up to a bit of a turn off.
@rj45Creates3 жыл бұрын
@@jasonbaumgarte6465 check out the icezero by trenz electronic.... 512 KB of SRAM and 4 pmods, plus the IO that goes to the raspberry pi. If you build a custom carrier board instead of a raspberry pi, that could be very interesting... that's my current leaning on a custom board
@javiergaliani86533 жыл бұрын
You: I'm going to do a VDP Me, an electronic engineering student: Yeah, this is pure gold, this will be awesome
@rj45Creates3 жыл бұрын
I'm glad, yeah it will be fun :-)
@user-kh4kh2wl9p3 жыл бұрын
I am very look forward to fellow this series. Thanks a lot!
@rj45Creates3 жыл бұрын
You're very welcome!
@cbmeeks3 жыл бұрын
I'm very interested in this series! I've been working on building a custom VDP using a micro-controller (Propeller) but I still am curious about the FPGA world. Personally, I'd like to see you build it as well.
@rj45Creates3 жыл бұрын
Awesome! I will take your input into consideration. I will try something new in the third episode and see if it works better.
@TheSulross3 жыл бұрын
should come on over to FPGA world - have done software for 3 decades but very excited to now be dipping my toe into FPGAs
@jecelassumpcaojr8903 жыл бұрын
Great project! I imagine you will use two line buffers so you don't have to draw the sprites during the horizontal blanking. That also makes it easy to show the same line twice or more. It would really help the software if you implement collision detection. The original Gameduino, for example, allowed you to assign a two bit "class" to each sprite and then a register can have a bit for each pair of classes which get set when writing a pixel to the line buffer. Another thing that helps the software is an interrupt at the start of the vertical blanking. Some systems allow interrupts when drawing a selected line and use that to reconfigure the VDP for neat effects, but your "everything is a sprite" scheme can do most of these tricks in a more direct way.
@rj45Creates3 жыл бұрын
Thanks :-) Collision detection would be very handy for a slower CPU for sure. I am not sure I can figure out an easy way to add it that wouldn't complicate the circuit a lot but we will see. And yes, IRQ generation is a must for sure.
@TroySchrapel3 жыл бұрын
Looks great. I was wanting to do something like this to replace my TMS9918 and try my hand at FPGA dev at some point.
@rj45Creates3 жыл бұрын
Yeah, I feel like the VIC was a single IC, so then why not use an FPGA in a hobby computer build.... and well, they don't make brand new VDPs anymore that I am aware of.... eventually TMS9918s will be quite rare.
@cbmeeks3 жыл бұрын
@@rj45Creates This is exactly why I want to learn more about FPGA's. The F18A is a good replacement for the TMS9918 but they are impossible to find these days (I have one). There needs to be replacement (and DROP IN replacements) for these chips. Including the VIC, VIC-II, etc.
@rj45Creates3 жыл бұрын
@@cbmeeks Indeed. We do need drop in replacements for all of these chips. I don't really have the time to do that, but I do want to teach people how, so that hopefully we can have a bunch of projects to build replacements for these chips.
@CharlesHepburn28 ай бұрын
So you went with a Alpha 68k/NEO-GEO approach for all sprites. This will limit the ability to perform parallax/line scroll effects, just as it did with the NEO GEO. However, you could simulate it using animated tiles. Is there a limit to the number of "background layers" you can display? I suppose the answer to that would be in your 800 sprite pixels per line rough estimate. Seems kind weak compared to the NEO GEO's 1,536 sprite pixels per line... although it was limited to 96 sprites per line. 256 sprites is probably fine, especially if they all can be of arbitrary size. I would have liked to see at least 1 tilemap/bitmap layer for parallax/line-scrolling. Hardware non-integer scaling, rotation and some translucency/alpha-channel abilities would have also been nice. Honestly, all of this has made me appreciate how powerful the NEO GEO was; it being designed by ADK in the 1988/1989 time period.
@stupid4President3 жыл бұрын
Very nice! Love to see where this is going, hopefully into something working :)
@rj45Creates3 жыл бұрын
Well it works in the emulator, and the code looks like it will be easy to convert to circuits... but well.... It'll be fun, hopefully not too ambitious :-)
@TheDesignDevil3 жыл бұрын
Can‘t wait to see this working. Very interesting project! But for a 8-Bit Computer like in the 1980‘s i think the Specs are to high. But let‘s wait.
@rj45Creates3 жыл бұрын
The specs come from the fact that block ram in the fpga is a specific fixed size. So if we store sprite attributes in block ram, they are 256 words in size, so we might as well have 256 sprites. That doesn't mean we need to have 256 or 512 sprites, those are just reasonable maximum specs given the capabilities of the hardware. There is indeed something to be said for limits breeding creativity, and perhaps these specs are not limiting enough. I will try to make it configurable wherever that is easy to do and doesn't make the circuit more complex.
@naikrovek3 жыл бұрын
story mode vs. "watch me build it mode": I don't care, as long as I understand what you did at the end of the video.
@rj45Creates3 жыл бұрын
Cool, yeah, I want to work on building my skill in documenting things. Having the freedom to build it first, clean it up and figure out how to explain it thoroughly I think will be good.
@genxtech55843 жыл бұрын
Ok I give up... I've been racking my brain all day and I can't figure out how you're going to get 512 variable size sprites rendered in a single frame! Leak some tidbits :)
@rj45Creates3 жыл бұрын
You'd have to get pretty creative to make all 512 sprites appear on the screen in a single frame. But it should be possible. There is a limit of how many can be on a single scan line, so you would have to arrange them such that you make maximum use of that. That limit comes from the number of cycles in each scan line. There are ways to make maximum use of those cycles...