Pod wrote:
MrD wrote:
Yes, yes and yes. No.
COOL. How long did it take? Roughly how many LOC? Did you look-up everything yourself by pouring over datasheets or are you leveraging some opensource/free code to do help you out? What specific microcontroller are you using? From your pic: It looks like a 16bit pic, based on the package and the position the text is stamped on it? (I can't actually read the text, however). edit: Your videos say it's a PIC33F.
It's almost all in this thread, posted about as I made it.It's a dsPIC33FJ128GP802 'Digital Signal Controller'. I picked it because it had a built in dual channel DAC, but it has audio filters and cack built into it that you can't disable so it's useless for vector displays. It's still super fast, and has single cycle multiplication which is essential for this kind of thing. You could do this with any PIC really, but the faster (and more RAM) the better.
It took about two months to spec out, test and build I guess. The hardest part of the project was waiting for stuff to get here (and desoldering things when it turned out I bought the wrong thing.) The 'kernel' and the base abstractions were done in about a week. I already had Mattsteroids written in C++ for when I did the sound card XY version in Linux, and it only took two days to port it back to C and wire it up to the Ocelot's services. In terms of lines, the Zipstick/MD pad reading and abstracting is about 1k, Audio (music player and pseudo-DAC sample playback) is about 2k, Video basics is about 1k, the massive list of 36 built in symbols (A-Z 0-9) to draw text to the screen is about 2k, Ocelot system support and setup is about 1k, Mattsteroids is about 2k lines. Compiled, it's 26kbytes of the 128kbyte PROM. (That's on -O0. On -O2 it's half of that, because my code explicitly sets a lot of bitmasks in separate statements which the optimiser doesn't crush down unless you tell it to.)
I looked everything up by pouring over datasheets, yes. There's no software libraries used unless you count the PIC 'executive' that the system falls back on to communicate with the PC for uploading programs, and the compiler almost certainly has a couple of built-in software shims for things you can write in C but don't have an instruction for, like multiplying two 32-bit numbers together (it would do it in pieces with the instructions it has and then add up the result). I wouldn't rewrite the supplied libraries for stuff like SD-card or TCP/IP if I added an SD-card slot or ethernet jack unless there was some pressing reason to. The Mega Drive stuff is all manually communicated but the SPI communication between the dsPIC and the DAC is asynchronously hardware driven (It's a constantly blast of bytes from a ring buffer that I have to fill in myself. Yes, the Ocelot has Blast Processing.). Even stuff like converting numbers to text is rewritten.
When I get around to porting my software 3D engine to it (this is one I wrote to run on unaccelerated 386s in DOS), that will use a PD square root routine in C from snippets.org, because I'm not so good on the square root theory. The rest of the 3D stuff there is all me. (And yes I fixed the polygons-disappearing-close-to-the-camera ages ago, I just haven't made a new gif of it.)
The TBA820M amplifier is a separate detachable board that I could use in any other project, and it's just a veroboard version of the 'Typical Usage' schematic that's supplied with the datasheet. Nothing original. (Picked because it works at 3V to 12V so I don't need two regulators.)
Quote:
Quote:
My brother wrote the music as a MIDI and I wrote a convertor to a special tiny Ocelot-specific code that my system can interpret with a player routine. If you want to hear it play something I composed, it can also play back the slightly less efficient code I used for my Master System programming so the
Gravity Beam MG intro music sounds
like this and
the ingame music sounds
like this.
Cool stuff! If you write your own music then you're a TRIPLE THREAT or whatever the term is. The text intro screen music reminds me of someting I can't place...
Have a guess at what I used to compose the Gravity Beam MG soundtrack. If you'd have said
this, award yourself ten points!
I used it because I can export into easily parseable formats, which I can then read, analyse and turn into the really teeny tiny 50 bytes per second Master System music format I used (30 bytes per second for Ocelot because it doesn't have volume controls so I can cram more things into a byte). It's a little redundant now that I've got some better MIDI editors available to me, but the convertor code lives on. Also, you're never without something similar to that (I could do it on Google Docs for example).
Quote:
Quote:
I'm unemployed. My previous employment was a one year internship at a company that no longer operates, being their software guy and pressing buttons to make discs happen.
Pressing buttons to make discs happens sounds dull. Would you have liked to have done more/less programming? How much carpentry do you think you would have liked to have done instead?
More programming, though the actual programming team I was attached to pretty much exploderised immediately after my internship had finished. The previous intern had actually been
laid off before his year had finished I was told. They were only a small outfit,
you probably hadn't heard of them.
More carpentry would have been awesome! I could have made and painted wooden models of the ships from the game and taken pictures of them for the cover, like it was some 80s pulp sci-fi compendium.
Quote:
Quote:
Professional person-talker-to wouldn't be my first choice; it would get old fast. A 9-5 Mon-Fri routine would probably be very difficult for me right now (and I don't know how long that 'right now' would be). Commuting would be the worst part of it. Even a one-day break in the week would be a great relief, but you've got to earn telecommuting, don't you? And it's always at the whim of The Boss, and Their Boss.
I get email spam from recruiters all the time and some of them are heavily work-at-home based. So there's positions out there.
Any in the north-west? Maybe forward them to me?
Quote:
Quote:
I've thought about working from home doing software, but I don't know if I have the experience for that. I also don't know how the legalities of it would work out (can I just 'do a little bit' before I register as self-employed? I do not know.). Building contacts and networking sounds like the ultimate anti-fun.
LIVE THE DREAM: Make a game from home, kickstarter it near the end, sell it, get it on steam, sell even more, then Scroog McDuck into the piles of gold you'll end up with.
That would be nice, but I have the exact opposite set of circumstances for Kickstarter success, I fear. To be good at Kickstarter, you need to have an angle, and I am entirely un-angular. You could have a reputation to wring for all it's worth, but I don't. You could be extremely persuasive and charismatic and all the rest, but that involves being omnipresent on every forum and winning everybody over one at a time (or doing underhanded manipulative crap that never works). Or, you could have a phenomenally talented artist on your payroll to paint some pretty pictures of the game you would
totally make had you had the money.
I've got a whole bunch of Android prototypes knocking about, but Android is such an utter utter utter utter pile of unforgiveable shit I stopped. I got to the point where I felt I could start hiring illustrators to draw the scenes and characters to polish the game I'd broadly implemented, but when I started testing my code on others' phones, it crashed them all without exception. I only had one phone at my disposal, a HTC Dream/T-Mobile G1, and I thought that having the worst phone would make it so that code that ran on that would work on anything. It didn't turn out anything like that at all. :(
I think I would have the problem that I wouldn't feel comfortable Kickstarting until I had most of the game done, and if I had most of the game done why would I need to Kickstart it? The final 10% of the work takes 90% of the time and all that, but that's a difficult thing to express in a way that would sell.
Quote:
"Here's a game I think you would enjoy. This Kickstarter would help me hire and artist and a musician and make it super shiny for you."
- "Why would I help Kickstart that? It has bad art and lousy music."
"Here's the one single level we have to publishable quality so far! It has great music and art and models and all the rest."
- "You look like you have everything in hand so I might buy it for fifty cents on Steam when you have finished it okay seeya."
I do have a few aces up my sleeves though, but I don't think anybody would be willing to put money up for it. I've had success making
custom circuit boards for consoles before.
Front,
back. That's my 64kbyte rewritable Mega Drive cart board I had manufactured before I worked on the Ocelot. If I put together an Awesome Crew and made a decent 16-bit gen console game, maybe folks would like to own a physical version of it? (It worked pretty well for Blast Arena Advance and holy CRAP was that ten years ago? I still remember signing up for The WoS That Was specifically just to spam about selling it.)