Wasted Effort
Gather 'round, childrens. All you boyzes and girlsies. Let me tell you a tale.
Back in the day, you know, the days when the mighty Griffon flew freely, we accessed hardware directly in code. That's the way it was done to get any kind of speed out of it. And it was FINE, nevermind what all the naysayers said, which, coincidentally, was "NAY." The reason we were supposed to use BIOS for graphics and things was so that we could keep compatibility with a wide variety of platforms.
Ultimately, things became unified and we didn't really need it. Anyone with a VGA video adaptor plugged into their system means that THAT card will use selected ports and memory addresses: END OF STORY. If it didn't obey, it wasn't VGA. $A0000 was the start of video memory when you set it to 320x200x256. Select a color to define by sending one of those 256 colors to some port (I think it was 0x3c8?), then start feeding three byte sequences coinciding with Red Green Blue into some other port (0x3c9) and keep going for as many colors starting from that first value that you want. Drawing offscreen meant allocating memory from the heap and putting some data there and literally memcpy() from that memory space into $A000:0000, depeding on where you wanted it.
It was great. Then VESA came along to make a specification so that people can just program that and video cards were free to implement things any which way they want. It didn't insulate the coder from the implementation details: they just made hard code values and intuitive things to teach into variables. A resolution of 640x480x256 was around 300k... the maximum size a segment could address is 64k. So you had to call a writing function. Kind of like how those mapping chips (MMC for the rest of us) inside NES cartridges allowed games have more than 16K of addressable ROM memory. Some video cards chunked it at 64k, some at 16k. You see how things get complicated.
From humble beginnings. DirectX today tries to unify very complicated and different hardwares under one control. The thing is, there has been 8 different interface designs for it. Yeah, it's backwards compatible, but, it's HARD to find details on ONE specific implementation. All the information of DirectX I could get ranged from DirectX 6 to DirectX 9. And some DirectX 9 stuff doesn't work with DirectX 9.0c (unless I specificly ASK for the vintage interfaces... *rolleyes*). And they rarely say what version they're using.
Anyway, I coded for the last week to make a pretty comprehensive sprite library for DirectX. It wasn't clever, but it was supposed to get everything. Rotation. Per pixel representations. Everything so far was perfect.
...
And then I tried some animation. BZZ. WRONG. I wanted perspective, but at the edges of the screen the pixels weren't matching up. I changed resolutions and the display wasn't even the same. GAH.
While stumbling through the documentation, I found that the sprite library I was developing WAS ALREADY MADE. GAH x 2! And it supported translucency (I only supported 1bit alpha channels) AND tinting (something I didn't even know I wanted, but, now that I think of the practicality, HELL YEAH!). That made me feel teh-stupid.
I don't mind working hard, but I hate WASTING my time on bullshit. Now I can't adapt my library to do those tricks because I'm not sure I would know how to do it. So I turn everything around and use the Direct X sprite thing. NOW I discover it doesn't support rotating along X and Y. I gotta use negative scaling to flip. Pain in the buttocks, mang.
I'm just bitchy lately. My favorite chores lately? Driving out of my way to COSTCO to pick up something off the shelf that NOBODY ELSE CAN LIFT. Um, I'm not really that strong, you know. You don't want to hurt your back? My back isn't expendible... you should have thought about YOUR back BEFORE you got breast implants. Yes, but money's too short to have me stop paying my Manx Tax.
I need work NOW.
...
At least I found this absolutely hilarious:
> Link <


0 Comments:
Post a Comment
<< Home