I always get amazed how limited you was and what cool tricks you used to get around it. Your videos are always something like: "We had a spoon, box of matches, and bottle of water. And we had to go in space. Here's how we did it."
Easy actually, use the weld tool to make a rudimentary platform out of the hitboxes of the props, the matches can be arranged into a honeycomb pattern to create a large barrier with little mass. make sure that everything is welded to each other for a more stable platform. Afterwards use your phys gun on the platform while standing on top of it and scroll the mousewheel down, this will pull the platform towards your feet lifting you upwards until the desired altitude is achieved.
There's a scene in Sonic Riders where Tails attempts to explain the "simple" mechanics of a hoverboard, and Knuckles's eyes start rolling into the back of his skull. _...What a lovely way of describing my current state._
Impossible music, impossible logo fmv, impossible 3D chase, impossible intro sequence, impossible 148 color images. Everything this guy does is impossible, Paramount should hire you for Mission Impossible 7.
Altima NEO funnily enough that's where the term came up... the story goes that one of the guys from marketing was chatting with a young dev group, and one mentioned getting the system to "BLAST data"... supposedly the guy liked the word blast, and soon after it became their slogan
Better gotta have a faster CPU clock rate unlike the SNES which was 4.09 mhz less than the Genesis thats why they call it blast processing and it sounded cool
As someone interested in programming for consoles of this era, I really like hearing these "how we did it" videos, straight from the horses mouth. I am a developer myself and while some of these tricks aren't needed anymore, it helps to expand the way you think about solving a problem.
Couldn't agree more. Part of my focus as a developer and computer scientist is looking at Execution Time and Performance. Things like Big-O Notation are important to me. This is a little different since its about using the hardware in a peculiar yet efficient way that wasn't thought of before. Most people took system restrictions as Challenges rather than cut and dry facts. Unfortunately it seems like this has become a lost art as more and more libraries and engines are released that take the developer away from the "bare metal".
If it's built by humans, it can be improved by humans. I agree with everything you say. I think programmers nowadays just learn the little bit they need to compel their work, there is no curiosity nor "I can do this better" attitude.
His videos are inspiring even to developers who use high-level languages. I think that, for ex., the frameworks and libraries of today should only be a way to accomplish more things in a more efficient way so you don't need to create and implement everything from point zero again and again, but this doesn't mean they substitute creative and innovative approaches on dealing with hardware issues and shortcomings, or software development questions. I think it's worth to mention that many developers today are Web developers, or maybe Mobile developers (I myself am a Web developer), and development has been cross-platform in a lot of cases, so this "next to the bare metal" approach is not so frequent than in the 16-bit era. Maybe the challenge is to avoid the easy and limited ways for everything, do research, be curious and be willing to dare new approaches to solve the problems that arise, and surely see limitations as challenges, not as unbreakable walls. Or maybe try to achieve the expected results in an unique and smart way. I'm sorry if my english is bad, it is not my native language.
Vinícius, firstly, your English was excellent. And I totally agree with you as well. My day job is a web application developer, so primarily I do work in things like PHP/HTML/CSS/JS so I am taken away from the "bare metal" quite a bit. I guess the point I am trying to make (and you touched on it as well) is the efficiency piece. Its like the case of BogoSort versus QuickSort. Sure, most languages have a $list->justSortThis(); method so don't have to develop your own sorting algorithm, but I still think that these things need to be thought of and considered.
This is one of the most fascinating channels I've ever watched. Very rarely do you get this kind of information in video form, actually coming from a real developer. A lot of people sent me your video about Haven after I recently played through the game, but I'm glad I decided to subscribe and stick around!
While your games may vary in quality, your technical know-how and getting around something that sounds impossible to get through is really impressive! I'm surprised Traveller's Tales isn't praised by many gamers alike!
B0M Honestly, almost anything that has audio capabilities at all will have a DAC - it means "Digital to Analog Converter" and is needed to convert the digital representation of a sound into an analog (electronic) signal that the speaker can play.
B0M: You're closer to the truth than you may have thought: www.nintendolife.com/news/2015/11/the_man_responsible_for_segas_blast_processing_gimmick_is_sorry_for_creating_that_ghastly_phrase
Except he shouldn't be sorry, this slogan is one of the best ever and based on facts. segaretro.org/Blast_processing Behold the power of blast processing (... and also Nintendo not ashamed to lie in order to damage control)
That's kinda splitting hairs. The point is, the context and even the phrasing used in this video (which inspired this thread) is exactly how that phrase came to be. @Yohko I think the point he was making in that article (the "ghastly phrase" bit) is less about marketing and more about how it became a caricature of Sega. Consider how it's practically (if not literally) a meme now. Every review of anything Sega has at least ten "but does it have / that's because it has ..." posts. I can see how that would drive someone to regret having spawned the term. I have no comment on it, really. I only linked the article because it referenced how the phrase was coined. What somebody SHOULD apologize for is the whole "Sega does" campaign. Because of that, not one comment section can exist on the Internet without some melvin posting "yeah cuz Sega does what Nintendon't!!1 der hur hur" like it's still clever some 20 years later.
I didn't understand this entirely, but the complexity of what you and your team did to ensure a quality end product absolutely amazes me. It makes me wish that every game designer from the 90s was as dedicated as you. I can only imagine the incredible games that would have come from that, having come to understand how much work you put into the games you made
Spunk McKullins Me too! The most notable ones for me were the pronouns and a few of the verbs. The other parts may be Mandarin Chinese for me, but hey, I understood at least a few of the words! :D
Definitely, but during my years in a CS degree at University there was seldom much of this 'stuff' with the program solving aspect - a lot of it was mainly fundamental programming of different languages, and courses which geared towards software engineering planning and management. Very rarely did I engage with the theoretical aspect of CS and delved a lot into the practical aspects of it, essentially becoming a glorified code monkey. I like computer science AS a science itself, like how you learn Physics or Biology or Chemistry with both practical and theory in balance. However, the truth is that it sucked a lot. Reason being is because the course was geared to get you straight to finding a job. The reality, is that CS is a science and should be treated as such. I was doing this as a double degree with a computer and network Engineering degree and the honest truth was that the Engineering side of things is much more enjoyable for me, because the practical content is more 'hands on' and diverse rather than coding for hours on end. But for those who are considering or are pursuing computer science, please do! There is nothing wrong with computer science and it is absolutely fascinating. Be aware though that most CS degrees aren't directed as science degrees and do not focus on computational methodologies, concepts, philosophy etc.
I absolutely love hearing how hardware was specifically used in developing games, because we usually get stories like this, that involve ingenious workarounds to limited resources.
Once again, the things you guys at Traveller's Tales were able to do with the hardware is still absolutely amazing. I've always been impressed by the .MOD track in Toy Story, it's something you don't think the Genesis is able to handle! And it honestly sounds good as well.
This sounds quite similar to how Tim Follin managed to get the 48k Spectrum to play multiple tracks. But was t true the Mega Drive also had additional chips for running Master System games? (when it was being developed as the Mark IV) or something? could they be used?
The Mega Drive has the SMS's Z80 CPU, the 8K of ram and the PSG. The MD VDP (Video Display Processor) had a backward compatibility mode to display the SMS graphics modes, except the SG-1000 modes (which is the reason why F-16 Fighting Falcon was not compatible with the Power Base Converter)
When you brought up the Amiga, I thought you just cheated all the way through and sequenced it on the Amiga then streamed audio to the PCM channel, using comparisons and reusing of audio sections short and long to compress it. Not only was your real execution higher quality, but more clever than I even thought possible. My hat is off to you, and you didn't even fill in the cracks with FM!
Actually, that's pretty much *exactly* what they did. An amiga MOD track is already nothing more than a set of audio samples for instruments and patterns that specify which samples to play and at what speed (=pitch) and volume. Writing a MOD player for the 68000 is a bunch of work but is relatively straightforward. Streaming the resulting audio over to the Z80 is the unusual part.
James Churchill I know that. What I was implying was streaming one stream of data with the entire song (like an .mp3 sorta), not having each instrument having its own "channel". Remember, I thought that the PCM channel was only capable of one sample at a time.
The PCM channel is only capable of playing one sample at a time. In this case, the main 68000 processor combines four channels into one mathematically. To the Z80 processor, however, it is only one sample. You COULD calculate everything beforehand and store the result, but that would eat up way too much disk space. Even if you could compress it to a reasonable size, you still have to decompress it when playing the sound. You are then going to eat up the system's memory or have to decompress in real-time, which probably wouldn't be feasible.
It's possible to just stream the audio. The only real limitation is memory/space available. Sonic 1 uses the 68k chip instead of the Z80, so it doesn't have the same issues shown in this video. This also means that it can go over 10khz, I've heard examples/demos that go up to 37khz. Other examples include Tempo (the title screen at least) on the 32x, and the Overdrive demos by Titan on MegaDrive/Genesis. I could have sworn I saw another reply mentioning this, but I can't find it any more, so I thought I'd make a post, hope this helps shine some light on it.
Some of the tracks in that hack (like Gust Planet 1 and 3) are SMPS with DualPCM if I'm not mistaken, and other ones like the Boss theme are simply short PCM clips that have been chained together to save memory.
@@joshuakorynta3385 "Bugs scare the DIODES out of me!" ~ Cyborg, 2014 "Have a _nice day._" ~ Grid, 2018 Thank Traveller's Tales for those quotes. They don't know what the fuck a Sonic is!
Been watching through your backlog of Coding Secrets videos, this is one of my favorites so far! The technique to overcome the period of silence transferring between chips was really clever!
So you basically used the main processor as a stand-in audio chip, and wrote bespoke software that mixed samples, compiled music, and barely used the rest of the audio chips as anything more than an intermediary buffer (as one half of its memory plays you load newly generated audio computed by the main processor into the other half of the Z80's memory before swapping over repeatedly) and streamed audio data to the end source. You guys were nuts, and immensely ingenious. Great stuff.
That's amazing! You guys put so much work into these and pulled off SO MUCH cool things within! I'm glad you're taking the time to share these insightful views into how it was done.
Loved this one. Spent my day coding a VoIP system, with all the power we have now in modern systems, moving megabytes of data around, worrying about the odd kilobyte here and there, this video made me feel real awe for the out of the box solutions you guys implemented back in the day.
Toy Story from Genesis has one of my favorite chiptune Soundtracks ever made. I didnt know how complex was the story about the music and the sound capabilities. Your videos are great!!
Since Batman is your avatar, you know about LEGO DC Super-Villains, right? AND HOW SEXY GRID'S VOICE IS IN THAT GAME? Bitch, Grid's voice already left me with newfound appreciation for Traveller's Tales. As well as Cyborg fearing everything in LEGO Batman 3: Beyond Gotham.
Brilliant insight. I'm always amazed how back in the day, limitations gave rise to so many clever solutions. For better or worse, nowadays there's nowhere near the flexibility to attempt anything low-level or fancy on modern console SDKs. The hypervisor nannies (thankfully, I guess) everything.
On the topic of Toy Story, do you happen to know of anything regarding un-used stuff in the Toy Story 2: Buzz Lightyear to the Rescue? I've always been curious of that game's development.
You're right about the Amiga's sound, the low-end was lovely for bass-lines. There was multi-channel intro music of a sort in the Tandy CoCo/Dragon32 game "Donkey King" in 1984 by Ken Kalish, neither computer had a sound chip. He also wrote the first FPS I ever played "Phantom Slayer" in 1982.
This reminds me of a lot of various microcontroller wavetable synth projects I've seen. It's amazing that you managed to do all that while still running the game itself.
Amanda Flores interestingly enough me too. Especially because there is such an awesome, relaxing tune in the background, it complements and adds some unintentional meaning to every video.
Y'know, if modern developers were taught even half the ingenuity and skill you guys used on the Mega Drive, we probably wouldn't have games with 100+ GB mandatory installs
It's uncommon, but a few games do get as large as 100 GB, yes. Part of the fact that huge games exist is because storage space isn't exactly a premium anymore. Also, more and more assets get saved in very high quality, (for example, textures at 4K resolutions).
That's largely due to people not giving a shit, not them lacking skill; it's usually a bunch of uncompressed shit that could have easily been compressed.
You can blame the mandatory installs on BluRay as a format and specifically the BluRay drives in modern consoles simply not being fast enough to read games at a decent speed
To see 4 channel mods being played by a z80 is the best thing I've ever seen. I loved the early PC days when the sound tracker format was adopted and expanded upon. The programmers were all competing to create better sound mixing routines in their software, impulse tracker was my favourite as it had resonant filters and interpolation to get rid of the harmonic distortion.
I remembered a 6 years old me, pumping up the TV volume and listening to that intro music in a loop on my mega drive. Thanks for sharing these details and for your technical awesomeness.
You are a freaking wizard. Everything you managed to do with that console is nothing short of a miracle. Talk about squeezing every last drop of power out of that hardware!
Something similar was pulled off at EA. VGM composer Jeff Van Dyck said in an interview on the Legacy Music Hour podcast that a programmer named Kevin Pickell worked out a way to make the Genesis play simultaneous samples, which made the grunge-inspired "Skitchin'" soundtrack possible, as well as other compositions.
I’ve just spent the past few days working on OpenAL based Ogg streaming, and am incredibly thankful that modern technology makes that a painless task when compared to this!!
how is there 4 channel sound if the console only had stereo out? usually when talking about multichannel PCM there are only as many channels as there are physical connections to the speakers. im not sure how multichannel sound works in games, but on devices these days all multichannel sound is downmixed if you only have stereo out.
Blox117 Caiocc12 is right. In the 16-bit era we used to call a "channel" each audio portion a soundchip could send. The Sega Genesis / Megadrive could output a maximum of 10 sounds at once in total. All those audio portions were downmixed to 2-channel stereo or mono output, depending on the model.
I think homebrewer Stef came pretty close to that with his driver. He hacked it into the Sega Genesis Street Fighter 2 SCE, and now we have multiple samples playing at once, with great quality. Thats on top of the original game music.
I know the driver used for Skitchin' had 4 PCM support alongside FM and PSG, and all of that was used for in-game music no less! (iirc only two PCM are actually used for music tho, I think the others are for SFX..) That's probably the best example I know outside of maybe homebrew.
GameHut A few months ago, I finally got around to attempting my first Wavetable style synth. I'd never written any MOD players or other synths previously, and this was to be done in Verilog for an FPGA. I managed to get basic samples playing, then had to generate a small ROM table for the note pitch. The rest happened fairly quickly, and now it's pretty much a full MIDI Wavetable synth. ;) There's no CPU in this at all, all pure logic. The PC is streaming MIDI to the FPGA, though. Only used an 8-bit 11 KHz sample set at first (from Amiga DOOM), mainly due to the simple file format, and the limited 70ns Flash speed (and bus width). It does have it's own crusty charm to it, though. lol drive.google.com/open?id=0B1grqFdAErsrM19hZWNlU3hKNEE
As an indie game developer and NOT a music composer by any means, I find this fascinating. It's well outside my ability to fully comprehend creatively and technically, but I did generally understand the premise of what you did and I find it extremely informative and important to have a little understanding about. I'm sure I'm going to run into these kids of problems later on when I become a better game developer and try my hand at more complicated games that push the limits of whatever hardware I'm working with. It's all just good stuff to be aware of and I'm glad I found your video. This is very cool stuff.
My family got a Sega system for me very late in it's life. I was just a kid but thanks to your games in particular I didn't think there was nearly as much of a gap in sound quality/colourful pre-rendered 3D visuals as there actually was versus a Super Nintendo, or even the 32-bit machines.
Wow! These videos represent the main concept of a programmer: solving problems with very limited resources at their bests! I can't get enough of your videos! I've got amazed how many times you reinvented the wheel out of nowhere with your code. Thanks for sharing us!
The technical aspects of the process you went through to do this shows the creative out of the box thinking that inspires others to do the same. This was a great video and the only improvement I could see would to play a small portion of the samples that were displayed after going through each mathematical operation so that the visual = math = audio giving a full understanding of the process. Keep up these amazing videos!
Dude you're so awesome. I'm currently going to school as a Computer Science student and I want to code for a developer. It's been my dream since I was a kid and you only make it a lot more awesome. I hope to be as skilled and intelligent as you. Keep up the good work man!
I've watched this video approximately too many times. It's just so cool seeing you break down how you managed to basically ignore one of the biggest drawbacks of the system at the time, that being it's audio quality compared to competing systems. You're a friggin genius!
I think it would be really cool if you did a video not only about the actual coding secrets, but about your passion as a developer for squeezing the max out of the Genesis. Cause you obviously were and still are into this :D
These videos feel to me like sitting at a table on my lunch break with a programming guru of the old guard describing amazing techniques he came up with a long time ago. It's really fascinating
Kinda crazy how you have to buffer the sound like that in order to get the range of audio you needed - but it definitely came out with a pretty convincing rendition of the Toy Story music.
Even with an explanation, it still amazes me. It's easy to take for granted all the work that has to be done in order to make a functioning game. Keep it up!
Ooh, interesting work around. This is why I really need to brush up on how hardware works, because this is a problem I definitely wouldn't have been able to solve by myself.
Very cool - I'm not a gamer but as a software engineer it's really cool to see the sort of tricks and tweaks you can do to get impressive performance out of limited hardware.
This information goes above my head buts it's so fascinating to firstly be exposed to problems people were faced with during these era's , but the problem solving that went into creating solutions that wouldn't even be known to most, if not all us users at the time. Truly astonishing stuff
This is the true beauty of coding! It is the beauty of one's mind to come up with such technics and ideas to overcome what seems to be the hardware limit and push beyond. Amazing! I love your videos! Thank you so much.
@GameHut YOU made all my favorite sega 16-bit games. You're my God (sort of,, from the game's perspective, kinda) Thank you personally for making all these games and thank you for going the extra mile to make them awesome! I hope this message reaches you.
By the end of the month you'll have 100k subs and i'm backing all the way - you're incredible at what you do and this channel's inspiration keeps the fire in my heart on my own channel burning strong!
I absolutely love seeing this kind of content. Really getting to the nitty gritty of how this kind of technical marvel was accomplished on the Genesis's limited hardware! Keep it up mate.
I love finding out that the game pushed the technology as hard as the movie did at the time. Toy Story is so cool to me in that it pushed the absolute limits of technology but the story was every bit as compelling and magical as any run of the mill animation.
Quite impressive. It would be interesting to see what other types of compositions could be achieved. If there's one thing that the Genesis remained supreme in the 16-bit era, it was the bass in music. The raw power was masterfully utilized, making industrial sounding pieces possible.
SonicMaster Sword I'm sure that with a little fiddling, the technique described in the video can be combined with still playing back some of its other, meatier sound channels. That'll enable complex sample playback with the kind of instrumentation you're talking about. :)
A lot of things could be possible, but not really outside of a static screen since this method requires a lot of horsepower. Hence why it's only use on the title screen.
I had a PC rather than an Amiga, but PCs played four-channel sample based MOD music files in a similar way, by mixing the samples together into a single channel. (Or two, if it's a stereo card.) Interesting to see such a math-intensive system being developed for the Genesis! Thanks for the video.
Ive just written a MOD player for the ESP8266 microcontroller this week, used pretty much the same techniques. I just used fixed point maths to re-sample the audio. Just convert the note period into a step amount that is shifted left a few times and then add this value to a pointer for each output sample, just take the upper bits of the pointer to find memory address of sample to copy from.
noop9k of course I do! I've been programming assembler for 30 years! I never said my approach would work on the megadrive or it was better. Btw I have also written a mod player for pure z80 too the video is on my channel but I'm using DMA audio so no tricks needed although I am using quite a few look up tables as division is too slow on z80.
willyarma fixed point on more advanced CPUs with barrel shifters is quite dissimilar from what you do on more primitive ones, where anything but lookup tables and pre-generated code sequences are too slow :) anyway, I only wrote a mod player long time for 386, also quite straightforward. Wolf3d clone, for the same 386, used pre-generated code for all integral scaling factors. But this is slightly less clean-looking than fixed-point scaling.
The same basic principle of software-based mixing of samples was done on the Amiga to double its 4 channels to 8 in the Octalyzer sound tracker. The result was stuffy-sounding enough, as it lost almost all high frequency, but man: _eight_ independent channels! That meant _real_ triads, not just arpeggios. I was so psyched when I was finally able to upgrade to MIDI. 😎
This is actually really interesting to see what radical tricks developers used to get around limitations. Nowadays we don't even need to worry about this sort of thing. That said, is there a possible way people can get their hands on the original song used in Toy Story? Not the sample in the Genesis, I'm talkin' the actual music that was made from the Amiga with no modifications made to bypass the Genesis' limitations?
I always get amazed how limited you was and what cool tricks you used to get around it.
Your videos are always something like: "We had a spoon, box of matches, and bottle of water. And we had to go in space. Here's how we did it."
Holy shit that's the best description for GameHut's videos I've ever heard.
Lol yup
Easy actually, use the weld tool to make a rudimentary platform out of the hitboxes of the props, the matches can be arranged into a honeycomb pattern to create a large barrier with little mass. make sure that everything is welded to each other for a more stable platform. Afterwards use your phys gun on the platform while standing on top of it and scroll the mousewheel down, this will pull the platform towards your feet lifting you upwards until the desired altitude is achieved.
SMole yessssssssss lad!
Gmod
Yeah, OF COURSE an ex-Amiga dev would find a way to shove a MOD player onto the Genesis. ;-)
There's a scene in Sonic Riders where Tails attempts to explain the "simple" mechanics of a hoverboard, and Knuckles's eyes start rolling into the back of his skull.
_...What a lovely way of describing my current state._
Impossible music, impossible logo fmv, impossible 3D chase, impossible intro sequence, impossible 148 color images.
Everything this guy does is impossible, Paramount should hire you for Mission Impossible 7.
gotta *BLAST* that data.
Only possible on the Sega Genesis because it comes with B L A S T P R O C E S S I N G
Altima NEO funnily enough that's where the term came up...
the story goes that one of the guys from marketing was chatting with a young dev group, and one mentioned getting the system to "BLAST data"...
supposedly the guy liked the word blast, and soon after it became their slogan
Austin Gaming ...
you're trying, but not hard enough...
Better gotta have a faster CPU clock rate unlike the SNES which was 4.09 mhz less than the Genesis thats why they call it blast processing and it sounded cool
segaretro.org/Blast_processing
Behold the power of blast processing (... and also Nintendo not ashamed to lie in order to damage control)
As someone interested in programming for consoles of this era, I really like hearing these "how we did it" videos, straight from the horses mouth. I am a developer myself and while some of these tricks aren't needed anymore, it helps to expand the way you think about solving a problem.
They should be needed. People has to stop going the easy way.
Couldn't agree more. Part of my focus as a developer and computer scientist is looking at Execution Time and Performance. Things like Big-O Notation are important to me. This is a little different since its about using the hardware in a peculiar yet efficient way that wasn't thought of before. Most people took system restrictions as Challenges rather than cut and dry facts. Unfortunately it seems like this has become a lost art as more and more libraries and engines are released that take the developer away from the "bare metal".
If it's built by humans, it can be improved by humans. I agree with everything you say. I think programmers nowadays just learn the little bit they need to compel their work, there is no curiosity nor "I can do this better" attitude.
His videos are inspiring even to developers who use high-level languages. I think that, for ex., the frameworks and libraries of today should only be a way to accomplish more things in a more efficient way so you don't need to create and implement everything from point zero again and again, but this doesn't mean they substitute creative and innovative approaches on dealing with hardware issues and shortcomings, or software development questions. I think it's worth to mention that many developers today are Web developers, or maybe Mobile developers (I myself am a Web developer), and development has been cross-platform in a lot of cases, so this "next to the bare metal" approach is not so frequent than in the 16-bit era. Maybe the challenge is to avoid the easy and limited ways for everything, do research, be curious and be willing to dare new approaches to solve the problems that arise, and surely see limitations as challenges, not as unbreakable walls. Or maybe try to achieve the expected results in an unique and smart way. I'm sorry if my english is bad, it is not my native language.
Vinícius, firstly, your English was excellent. And I totally agree with you as well. My day job is a web application developer, so primarily I do work in things like PHP/HTML/CSS/JS so I am taken away from the "bare metal" quite a bit. I guess the point I am trying to make (and you touched on it as well) is the efficiency piece. Its like the case of BogoSort versus QuickSort. Sure, most languages have a $list->justSortThis(); method so don't have to develop your own sorting algorithm, but I still think that these things need to be thought of and considered.
This is one of the most fascinating channels I've ever watched. Very rarely do you get this kind of information in video form, actually coming from a real developer.
A lot of people sent me your video about Haven after I recently played through the game, but I'm glad I decided to subscribe and stick around!
While your games may vary in quality, your technical know-how and getting around something that sounds impossible to get through is really impressive! I'm surprised Traveller's Tales isn't praised by many gamers alike!
Lol those backhanded compliments
He is praised, his personal worth is over 100 million dollars, but still humble enough to teach us some neat tricks.
That's what you get with former Amiga programmers.Boy could they make the 68000 sing.
Quite literally it would seem.
Sling Blue-Eyes Praised by normal people but not "gamers".
True blast processing usage right there.
It's a typical double blaster
"Very quickly read its memory and blast data to a thing called a DAC"
So that explains why it has blast processing...
B0M Honestly, almost anything that has audio capabilities at all will have a DAC - it means "Digital to Analog Converter" and is needed to convert the digital representation of a sound into an analog (electronic) signal that the speaker can play.
B0M: You're closer to the truth than you may have thought:
www.nintendolife.com/news/2015/11/the_man_responsible_for_segas_blast_processing_gimmick_is_sorry_for_creating_that_ghastly_phrase
Except he shouldn't be sorry, this slogan is one of the best ever and based on facts.
segaretro.org/Blast_processing
Behold the power of blast processing (... and also Nintendo not ashamed to lie in order to damage control)
They "blasted" the video DACs. Not the one used for audio :)
That's kinda splitting hairs. The point is, the context and even the phrasing used in this video (which inspired this thread) is exactly how that phrase came to be.
@Yohko
I think the point he was making in that article (the "ghastly phrase" bit) is less about marketing and more about how it became a caricature of Sega. Consider how it's practically (if not literally) a meme now. Every review of anything Sega has at least ten "but does it have / that's because it has ..." posts. I can see how that would drive someone to regret having spawned the term.
I have no comment on it, really. I only linked the article because it referenced how the phrase was coined.
What somebody SHOULD apologize for is the whole "Sega does" campaign. Because of that, not one comment section can exist on the Internet without some melvin posting "yeah cuz Sega does what Nintendon't!!1 der hur hur" like it's still clever some 20 years later.
I think I've said this before, but you folks are Genesis Wizards.
I didn't understand this entirely, but the complexity of what you and your team did to ensure a quality end product absolutely amazes me. It makes me wish that every game designer from the 90s was as dedicated as you. I can only imagine the incredible games that would have come from that, having come to understand how much work you put into the games you made
*nods politely*
can't believe how little attention this is getting. such politeness should be rewarded
@@cannon9009 ikr
*nods gayly*
My only reaction to this is "Holy shit, dude".
Amazing!
Ah, I understood some of those words.
Spunk McKullins Me too! The most notable ones for me were the pronouns and a few of the verbs. The other parts may be Mandarin Chinese for me, but hey, I understood at least a few of the words! :D
SasDaGreat hahaha!
I know the words, but it's like they're lining up in a way that doesn't make sense to me.
Words are for losers. It's just clicks and whistles to me.
Your profile pic gives me hard nostalgia
geeze, you guys squeezed a lot of power out of the genesis hardware. impressive stuff.
I have a feeling this channel will get a lot of people interested in computer science
certainly helping me get the motivation to continue studying.
Agreed. His work and his will to share knowledge is inspiring.
Definitely, but during my years in a CS degree at University there was seldom much of this 'stuff' with the program solving aspect - a lot of it was mainly fundamental programming of different languages, and courses which geared towards software engineering planning and management. Very rarely did I engage with the theoretical aspect of CS and delved a lot into the practical aspects of it, essentially becoming a glorified code monkey. I like computer science AS a science itself, like how you learn Physics or Biology or Chemistry with both practical and theory in balance. However, the truth is that it sucked a lot. Reason being is because the course was geared to get you straight to finding a job. The reality, is that CS is a science and should be treated as such.
I was doing this as a double degree with a computer and network Engineering degree and the honest truth was that the Engineering side of things is much more enjoyable for me, because the practical content is more 'hands on' and diverse rather than coding for hours on end. But for those who are considering or are pursuing computer science, please do! There is nothing wrong with computer science and it is absolutely fascinating. Be aware though that most CS degrees aren't directed as science degrees and do not focus on computational methodologies, concepts, philosophy etc.
The electric wire went thru the sand chip yo. Fukn sweet. Computer chips are made of the beach bra
I absolutely love hearing how hardware was specifically used in developing games, because we usually get stories like this, that involve ingenious workarounds to limited resources.
Once again, the things you guys at Traveller's Tales were able to do with the hardware is still absolutely amazing. I've always been impressed by the .MOD track in Toy Story, it's something you don't think the Genesis is able to handle! And it honestly sounds good as well.
Flammie Hi! Fancy seeing you here. I had a conversation with you on a sonic CD soundtrack video.
Hai! I've seen you on many videos too.
I don't remember what I had a conversation with you about though, could you remind me?
This sounds quite similar to how Tim Follin managed to get the 48k Spectrum to play multiple tracks.
But was t true the Mega Drive also had additional chips for running Master System games? (when it was being developed as the Mark IV) or something? could they be used?
Larry Bundy Jr yeah, very similar to Tim’s. great guy, we employed his brother for a while...
Isn't the Master System just a Z80 with its own little sound chip?
The Genesis was half SMS. It had the new hardware but it also had the Z80 and the PSG. It didn't have the SMS sound upgrade chip though.
I find you in the comments section of everything.
The Mega Drive has the SMS's Z80 CPU, the 8K of ram and the PSG. The MD VDP (Video Display Processor) had a backward compatibility mode to display the SMS graphics modes, except the SG-1000 modes (which is the reason why F-16 Fighting Falcon was not compatible with the Power Base Converter)
When you brought up the Amiga, I thought you just cheated all the way through and sequenced it on the Amiga then streamed audio to the PCM channel, using comparisons and reusing of audio sections short and long to compress it.
Not only was your real execution higher quality, but more clever than I even thought possible. My hat is off to you, and you didn't even fill in the cracks with FM!
Actually, that's pretty much *exactly* what they did. An amiga MOD track is already nothing more than a set of audio samples for instruments and patterns that specify which samples to play and at what speed (=pitch) and volume. Writing a MOD player for the 68000 is a bunch of work but is relatively straightforward. Streaming the resulting audio over to the Z80 is the unusual part.
James Churchill I know that. What I was implying was streaming one stream of data with the entire song (like an .mp3 sorta), not having each instrument having its own "channel". Remember, I thought that the PCM channel was only capable of one sample at a time.
The PCM channel is only capable of playing one sample at a time. In this case, the main 68000 processor combines four channels into one mathematically. To the Z80 processor, however, it is only one sample.
You COULD calculate everything beforehand and store the result, but that would eat up way too much disk space. Even if you could compress it to a reasonable size, you still have to decompress it when playing the sound. You are then going to eat up the system's memory or have to decompress in real-time, which probably wouldn't be feasible.
What do you think of MarkeyJester's "Sonic Next Level" ROM hack, speaking of impossible sample sound?
72speedway, oh Yeah! I believe Sonic 1: The Next Level uses this exact trick to make the music sound so good.
It's possible to just stream the audio. The only real limitation is memory/space available.
Sonic 1 uses the 68k chip instead of the Z80, so it doesn't have the same issues shown in this video. This also means that it can go over 10khz, I've heard examples/demos that go up to 37khz.
Other examples include Tempo (the title screen at least) on the 32x, and the Overdrive demos by Titan on MegaDrive/Genesis.
I could have sworn I saw another reply mentioning this, but I can't find it any more, so I thought I'd make a post, hope this helps shine some light on it.
Skitchin' uses mixed samples in places as well, I'd love to know what EA's technique was
BAC0NB!TS I didn't know you did SEGA Genesis ROM hacking
Some of the tracks in that hack (like Gust Planet 1 and 3) are SMPS with DualPCM if I'm not mistaken, and other ones like the Boss theme are simply short PCM clips that have been chained together to save memory.
Me: "I bet they did some rudimentary PCM mixing with spare CPU time."
Video: *explains rudimentary PCM mixing*
What is non-rudimentary PCM- mixing?
Travelers Tales, developer of the impossible?
Altima NEO Lego Worlds is hilarious. It may be glitchy, but that makes it better.
@@joshuakorynta3385 "Bugs scare the DIODES out of me!" ~ Cyborg, 2014
"Have a _nice day._" ~ Grid, 2018
Thank Traveller's Tales for those quotes. They don't know what the fuck a Sonic is!
More bang for the buck?
These Coding Secrets videos are great.
Been watching through your backlog of Coding Secrets videos, this is one of my favorites so far! The technique to overcome the period of silence transferring between chips was really clever!
So you basically used the main processor as a stand-in audio chip, and wrote bespoke software that mixed samples, compiled music, and barely used the rest of the audio chips as anything more than an intermediary buffer (as one half of its memory plays you load newly generated audio computed by the main processor into the other half of the Z80's memory before swapping over repeatedly) and streamed audio data to the end source. You guys were nuts, and immensely ingenious. Great stuff.
That's amazing! You guys put so much work into these and pulled off SO MUCH cool things within! I'm glad you're taking the time to share these insightful views into how it was done.
Loved this one. Spent my day coding a VoIP system, with all the power we have now in modern systems, moving megabytes of data around, worrying about the odd kilobyte here and there, this video made me feel real awe for the out of the box solutions you guys implemented back in the day.
Toy Story from Genesis has one of my favorite chiptune Soundtracks ever made. I didnt know how complex was the story about the music and the sound capabilities. Your videos are great!!
These videos leave me with newfound appreciation for Traveller's Tales.
Since Batman is your avatar, you know about LEGO DC Super-Villains, right? AND HOW SEXY GRID'S VOICE IS IN THAT GAME?
Bitch, Grid's voice already left me with newfound appreciation for Traveller's Tales. As well as Cyborg fearing everything in LEGO Batman 3: Beyond Gotham.
Brilliant insight. I'm always amazed how back in the day, limitations gave rise to so many clever solutions. For better or worse, nowadays there's nowhere near the flexibility to attempt anything low-level or fancy on modern console SDKs. The hypervisor nannies (thankfully, I guess) everything.
On the topic of Toy Story, do you happen to know of anything regarding un-used stuff in the Toy Story 2: Buzz Lightyear to the Rescue? I've always been curious of that game's development.
You're right about the Amiga's sound, the low-end was lovely for bass-lines. There was multi-channel intro music of a sort in the Tandy CoCo/Dragon32 game "Donkey King" in 1984 by Ken Kalish, neither computer had a sound chip. He also wrote the first FPS I ever played "Phantom Slayer" in 1982.
This reminds me of a lot of various microcontroller wavetable synth projects I've seen. It's amazing that you managed to do all that while still running the game itself.
Although I didn't fully grasp it, you completely kept it interesting enough for me to keep watching. Small doses of technicality are much appreciated.
I DON'T UNDERSTAND but i love your videos
Amanda Flores Same
i've never had any interest in game development but i binge these videos! SO interesting and explained in a simple way
Amanda Flores LOL!
Amanda Flores Haha me too Game Programming is so hard to understand but their videos make Game Programming interesting...
Amanda Flores interestingly enough me too. Especially because there is such an awesome, relaxing tune in the background, it complements and adds some unintentional meaning to every video.
1:14 accidental face reveal?
Nah, I'm pretty sure that you'll find Jon by searching "Traveller's Tales' Founder" on Google ;)
Sorry, Real face reveal was six months ago!
Get em boys
Gosh darn I'm so happy to see this. You created my childhood, and now you're showing how it worked. I love it.
Y'know, if modern developers were taught even half the ingenuity and skill you guys used on the Mega Drive, we probably wouldn't have games with 100+ GB mandatory installs
Micaiah the Otaku Gamer [HybridAngelZero] Lol, is that a thing?
It's uncommon, but a few games do get as large as 100 GB, yes.
Part of the fact that huge games exist is because storage space isn't exactly a premium anymore. Also, more and more assets get saved in very high quality, (for example, textures at 4K resolutions).
That's largely due to people not giving a shit, not them lacking skill; it's usually a bunch of uncompressed shit that could have easily been compressed.
Hooded Man "Skill" isn't really the word I should have used, but you're totally correct
You can blame the mandatory installs on BluRay as a format and specifically the BluRay drives in modern consoles simply not being fast enough to read games at a decent speed
To see 4 channel mods being played by a z80 is the best thing I've ever seen. I loved the early PC days when the sound tracker format was adopted and expanded upon. The programmers were all competing to create better sound mixing routines in their software, impulse tracker was my favourite as it had resonant filters and interpolation to get rid of the harmonic distortion.
I remembered a 6 years old me, pumping up the TV volume and listening to that intro music in a loop on my mega drive. Thanks for sharing these details and for your technical awesomeness.
"Blast data directly to the chip"
Is that a blast processing joke?
You are a freaking wizard. Everything you managed to do with that console is nothing short of a miracle. Talk about squeezing every last drop of power out of that hardware!
This being a licensed game, it could have been half-assed and nobody would have batted an eye. The effort that went into it is astounding.
Something similar was pulled off at EA. VGM composer Jeff Van Dyck said in an interview on the Legacy Music Hour podcast that a programmer named Kevin Pickell worked out a way to make the Genesis play simultaneous samples, which made the grunge-inspired "Skitchin'" soundtrack possible, as well as other compositions.
I’ve just spent the past few days working on OpenAL based Ogg streaming, and am incredibly thankful that modern technology makes that a painless task when compared to this!!
We have a GameHut discord server now if you want to chat about this kinda stuff at discordapp.com/invite/YjWnxm9
how is there 4 channel sound if the console only had stereo out? usually when talking about multichannel PCM there are only as many channels as there are physical connections to the speakers.
im not sure how multichannel sound works in games, but on devices these days all multichannel sound is downmixed if you only have stereo out.
Blox117 when he says "channel" here he is talking about "tracks" - different instruments or "voices" playing simultaneously.
Blox117 Caiocc12 is right. In the 16-bit era we used to call a "channel" each audio portion a soundchip could send. The Sega Genesis / Megadrive could output a maximum of 10 sounds at once in total. All those audio portions were downmixed to 2-channel stereo or mono output, depending on the model.
What's discord?
Vinícius Sasso The model 2 only has mono?
"In the 16 bit era we used to". Lol.
The way you explain these coding secrets make me think that these games you made were the most revolutionary games ever for its time
I remember seeing the travelers tales logo in the beginning of my game as a kid and it would reassure me that its a good game lol
It's interesting knowing how much work was put into these games; it's honestly a shame that people call these games terrible
Just as I thought, I have no clue wtf is going on, but I still find myself fascinated. Must be the soothing voice of the narrator. 😏
The amount of thought that went into making this will _never_ cease to amaze me.
Surprise me, blue hedgehog- *SHOT HARD*
6 channel FM + 4 channel PSG + 4 channel PCM . Do-able?
I think homebrewer Stef came pretty close to that with his driver. He hacked it into the Sega Genesis Street Fighter 2 SCE, and now we have multiple samples playing at once, with great quality. Thats on top of the original game music.
I know the driver used for Skitchin' had 4 PCM support alongside FM and PSG, and all of that was used for in-game music no less! (iirc only two PCM are actually used for music tho, I think the others are for SFX..) That's probably the best example I know outside of maybe homebrew.
That actually you Matt?
GameHut
Fantasic vid. ;)
I mentioned this the other day, and always wondered which tricks you used.
And yes, it does look like the real Mr Furniss. ;)
GameHut
A few months ago, I finally got around to attempting my first Wavetable style synth.
I'd never written any MOD players or other synths previously, and this was to be done in Verilog for an FPGA.
I managed to get basic samples playing, then had to generate a small ROM table for the note pitch.
The rest happened fairly quickly, and now it's pretty much a full MIDI Wavetable synth. ;)
There's no CPU in this at all, all pure logic. The PC is streaming MIDI to the FPGA, though.
Only used an 8-bit 11 KHz sample set at first (from Amiga DOOM), mainly due to the simple file format, and the limited 70ns Flash speed (and bus width).
It does have it's own crusty charm to it, though. lol
drive.google.com/open?id=0B1grqFdAErsrM19hZWNlU3hKNEE
As an indie game developer and NOT a music composer by any means, I find this fascinating. It's well outside my ability to fully comprehend creatively and technically, but I did generally understand the premise of what you did and I find it extremely informative and important to have a little understanding about. I'm sure I'm going to run into these kids of problems later on when I become a better game developer and try my hand at more complicated games that push the limits of whatever hardware I'm working with. It's all just good stuff to be aware of and I'm glad I found your video. This is very cool stuff.
You mention your coding tricks in such a way I can totally enjoy it, that's just cool!
Please keep doing videos.
My family got a Sega system for me very late in it's life. I was just a kid but thanks to your games in particular I didn't think there was nearly as much of a gap in sound quality/colourful pre-rendered 3D visuals as there actually was versus a Super Nintendo, or even the 32-bit machines.
A lot of your content often goes over my head but you explain things very clearly, and I really enjoy watching and learning.
You're the Indiana Jones of Genesis cartridge technology!
Wow! These videos represent the main concept of a programmer: solving problems with very limited resources at their bests! I can't get enough of your videos! I've got amazed how many times you reinvented the wheel out of nowhere with your code. Thanks for sharing us!
The technical aspects of the process you went through to do this shows the creative out of the box thinking that inspires others to do the same. This was a great video and the only improvement I could see would to play a small portion of the samples that were displayed after going through each mathematical operation so that the visual = math = audio giving a full understanding of the process. Keep up these amazing videos!
This is extremely ingenious. Props to you in getting around the limitations.
This content is really great, there isn't a need for clickbait titles or thumbnails.
It is absolutely mind blowing the ideas that you guys came up with to work around the Saga's limiting hardware.
this is so illuminating for me.
please keep making these quality videos.
Holy. Fucking. Shit.
We did not appreciate what we had back in the day. You guys are geniuses.
Dude you're so awesome. I'm currently going to school as a Computer Science student and I want to code for a developer. It's been my dream since I was a kid and you only make it a lot more awesome. I hope to be as skilled and intelligent as you. Keep up the good work man!
I've watched this video approximately too many times. It's just so cool seeing you break down how you managed to basically ignore one of the biggest drawbacks of the system at the time, that being it's audio quality compared to competing systems. You're a friggin genius!
you guys were wizards with the Genesis hardware. I am immeasurably impressed
I think it would be really cool if you did a video not only about the actual coding secrets, but about your passion as a developer for squeezing the max out of the Genesis. Cause you obviously were and still are into this :D
1:40 BLAST PROCESSING CONFIRMED FOR MASTER SYSTEM
the_muteKi *Mega Drive
A Blob He means the Z80.
These videos feel to me like sitting at a table on my lunch break with a programming guru of the old guard describing amazing techniques he came up with a long time ago. It's really fascinating
Saw many of your videos - You = resourcefulness
Watching these videos really makes me appreciate how easy we have it with modern engines and tools.
ah, too easy! i wanna go back :D
*_LEGO Grid's voice_*
Kinda crazy how you have to buffer the sound like that in order to get the range of audio you needed - but it definitely came out with a pretty convincing rendition of the Toy Story music.
Even with an explanation, it still amazes me. It's easy to take for granted all the work that has to be done in order to make a functioning game. Keep it up!
Ooh, interesting work around. This is why I really need to brush up on how hardware works, because this is a problem I definitely wouldn't have been able to solve by myself.
One of the best music arrangements I've ever heard on a stock Sega Genesis game. Very cool!
Very cool - I'm not a gamer but as a software engineer it's really cool to see the sort of tricks and tweaks you can do to get impressive performance out of limited hardware.
Would you believe me if I told you to this day at work I still find myself humming Toy Story's music. Childhood memories don't die man.
That is absolute genius! I would not have thought of using the 68000 to combine samples and push them to the Z80!!
This information goes above my head buts it's so fascinating to firstly be exposed to problems people were faced with during these era's , but the problem solving that went into creating solutions that wouldn't even be known to most, if not all us users at the time. Truly astonishing stuff
This is the true beauty of coding! It is the beauty of one's mind to come up with such technics and ideas to overcome what seems to be the hardware limit and push beyond. Amazing! I love your videos! Thank you so much.
Imagine how amazing video games would look and sound if every developer worked this hard.
It's incredible what you have done with so little to work with
@GameHut
YOU made all my favorite sega 16-bit games. You're my God (sort of,, from the game's perspective, kinda)
Thank you personally for making all these games and thank you for going the extra mile to make them awesome!
I hope this message reaches you.
The stuff you took for granted when you were a kid playing these games. Amazing and impressive work,
By the end of the month you'll have 100k subs and i'm backing all the way - you're incredible at what you do and this channel's inspiration keeps the fire in my heart on my own channel burning strong!
Nope. Already up there.
I absolutely love seeing this kind of content. Really getting to the nitty gritty of how this kind of technical marvel was accomplished on the Genesis's limited hardware! Keep it up mate.
It's good to see TT still making really good games
I love finding out that the game pushed the technology as hard as the movie did at the time. Toy Story is so cool to me in that it pushed the absolute limits of technology but the story was every bit as compelling and magical as any run of the mill animation.
Quite impressive. It would be interesting to see what other types of compositions could be achieved. If there's one thing that the Genesis remained supreme in the 16-bit era, it was the bass in music. The raw power was masterfully utilized, making industrial sounding pieces possible.
SonicMaster Sword I'm sure that with a little fiddling, the technique described in the video can be combined with still playing back some of its other, meatier sound channels. That'll enable complex sample playback with the kind of instrumentation you're talking about. :)
A lot of things could be possible, but not really outside of a static screen since this method requires a lot of horsepower. Hence why it's only use on the title screen.
Foulaisedé Rédi
Check out Sonic the Next Level, it plays sampled music during actual gameplay and with sound fx too :)
I had a PC rather than an Amiga, but PCs played four-channel sample based MOD music files in a similar way, by mixing the samples together into a single channel. (Or two, if it's a stereo card.) Interesting to see such a math-intensive system being developed for the Genesis! Thanks for the video.
Ive just written a MOD player for the ESP8266 microcontroller this week, used pretty much the same techniques. I just used fixed point maths to re-sample the audio. Just convert the note period into a step amount that is shifted left a few times and then add this value to a pointer for each output sample, just take the upper bits of the pointer to find memory address of sample to copy from.
willyarma you seem to not understand your obvious approach wouldnt work on 68000k due to its much lower performance.
noop9k of course I do! I've been programming assembler for 30 years! I never said my approach would work on the megadrive or it was better. Btw I have also written a mod player for pure z80 too the video is on my channel but I'm using DMA audio so no tricks needed although I am using quite a few look up tables as division is too slow on z80.
willyarma well, I reacted to “pretty much the same”
noop9k AHH, guess I was a bit unclear.
willyarma fixed point on more advanced CPUs with barrel shifters is quite dissimilar from what you do on more primitive ones, where anything but lookup tables and pre-generated code sequences are too slow :) anyway, I only wrote a mod player long time for 386, also quite straightforward.
Wolf3d clone, for the same 386, used pre-generated code for all integral scaling factors. But this is slightly less clean-looking than fixed-point scaling.
The same basic principle of software-based mixing of samples was done on the Amiga to double its 4 channels to 8 in the Octalyzer sound tracker. The result was stuffy-sounding enough, as it lost almost all high frequency, but man: _eight_ independent channels! That meant _real_ triads, not just arpeggios. I was so psyched when I was finally able to upgrade to MIDI. 😎
I like how people have been able to recreate Star Fox-like 3D shooters, Mode 7, and sample-based music on the Genesis.
I get better a understanding programing every time I watch your videos
Developer: there’s no way you can do this on a genesis.
Gamehut: *cracks knuckles*
This is actually really interesting to see what radical tricks developers used to get around limitations. Nowadays we don't even need to worry about this sort of thing.
That said, is there a possible way people can get their hands on the original song used in Toy Story? Not the sample in the Genesis, I'm talkin' the actual music that was made from the Amiga with no modifications made to bypass the Genesis' limitations?
1:25 So many capacitors soldered on that circuit board. Like ticking time bombs. 😅
kaboom!!!!!