Hacker News new | past | comments | ask | show | jobs | submit login

The guy that wrote "Hotel Mario" - not the cut scenes, but the game - was a real guru professional. Watching him code was the first time I ever saw anyone adding up the op-code and memory access times to design their algorithm. Everyone at Philips was quite impressed. At bit later a contractor at a game studio showed Philips an idea called Compiled Sprites that allowed 64+ independent animating entities on screen at once. But that innovation came too late, as the brain drain at Philips was already well underway. CD-I was dying just when a way to make the games they needed appeared, but everyone was already mid-job hop.



Apologies for my ignorance, but I'd like to ask if you (or anyone) could elaborate on that "adding up the op-code and memory access times to design their algorithm" bit. I understand what op-codes are, what memory access times are, and have an algorithm design knowledge expected out of "3.5 years of CS+Math undergraduate education, relevant interview prep, and a year and a half working in the field doing generic web work", but I'm not sure I'm wrapping my head around that part. Do you mean that he used those timings to derive an output value for the cost function for higher-level parts of the algorithms he was using? If you can recall any specifics that aren't a trade secret, I'd love to hear it for the sake of my own learning.


We knew the memory read/write times for the different types of RAM in the system, as well as the machine language op code times for all the operations necessary to copy memory from one type of memory to another, with/without color-keyed transparency. The CD-I system provided triggers for when a given scan line was displayed, so with careful timing one could write code with the knowledge that there is time to perform some ambitious calculation. For example, to just copy a block of memory is one thing, but between different types of memory and the timings are different. Now add in the real world necessity of copy with color-key transparency, meaning you need to look into the memory you want to overwrite to choose if the overwrite is going to happen. That has a whole separate set of timings. Combine that with hybrid logic that figures out where dumb block copies and smarter color-key transparency timings trade off, and you have a process segmentation.


That was a good explanation. Thank you!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: