Aaron Giles
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine.
Author of #DREAMM emulator and the #ymfm audio library.
Posts
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Literally spent 15 minutes trying to restart the wife's tablet. Never did find a way to do it. Instead found the option to disassociate AI from the power button so we could get access to the traditional power options it used to bring up. This shouldn't be so hard.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
The game has an all-digital soundtrack and supports digital playback on SoundBlaster, AdLib(!), and PC Speaker(!) I was curious to see how it manages to do digital sound across all these devices and came away pretty impressed.
For SoundBlaster it's straightforward, since the SB supports digital audio directly. However, the way the game runs the audio is unusual: it configures the PIT to generate 10,000 interrupts/second, and manually feeds a single 8-bit sample to the SB on each interrupt, rather than using PC's DMA controller to send data like almost every other game.
For PC Speaker, it uses a similar technique. But since the PC speaker is essentially a 1-bit DAC, it can't just feed an 8-bit sample to it. Instead, it changes the timer connected to the speaker, which is normally in "square wave" mode, to run instead in "one shot" mode. This means whenever a new timer count is written, the timer drives the speaker low until the count is expired, then the timer goes high again and remains there. By programming different values, the game essentially does pulse-width modulation at 10kHz to produce surprisingly reasonable digital sound.
For the AdLib, which is an FM-only chip, it uses a clever hack. It programs one channel for playback with instant attack and forever sustain, and starts a note playing. Then, almost immediately afterwards, it changes the note's frequency to 0, which causes the phase counter to stop counting and essentially locks the channel's output to whatever position within the sine wave it was when the frequency was nullified. With proper timing, it will be near its peak. At this point, the game can alter the channel's "total level" (aka volume) and change the magnitude of the locked output, basically making it into a DAC. The total level is only 6 bits, so it's lower fidelity than the SoundBlaster, but still sounds pretty decent.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Updated my "Where to buy these games" page, which is looking sadder and sadder. dreamm.aarongiles.com/buy/
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
https://www.youtube.com/watch?v=qZuR-772cks
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Second thought: OK, but it will fall apart once they get to the chorus.
Final thought: Holy shit, the chorus works even better.
https://www.youtube.com/watch?v=V1E4Qdrjxi0
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
https://www.youtube.com/watch?v=y-H895vrIU8
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Contrast to my son, who has seen a few hundred episodes of the original animated series. It's been amusing to watch him reverberate with suppressed desire to spoil things, but also it's been fun to see him get excited about seeing things spool out in a different medium.
Looking forward to actually getting to season 2 and seeing what's new!
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
In the PC version of DoTT you can just use Weird Ed's computer and it dumps you into Maniac, and I had thought (after all these years) I made it work the same way on the Mac. But it turns out my memory had some faulty bits and, while it did work, it only works after you try it five times.
This was a concession to our Mac QA department, which was small, and a bit overwhelmed with the unanticipated ports of DoTT and Sam & Max. They didn't really have the bandwidth to stress test the Maniac Mansion port, so I made it a bit more of an Easter egg than it was on the PC.
https://www.youtube.com/watch?v=N5AZY3tNFW4&t=1s
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
https://dreamm.aarongiles.com/
Now with support for all Lucas-family games released prior to 2000 on DOS, Windows, and FM-Towns, including all 8 Lucas Learning games. Network play is also now supported (experimentally).
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
https://www.ubisoft.com/en-us/games/rayman/editions/30th-anniversary
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Fortunately, there's a lot of good information out there. Mostly worked from Schulman's 1992 "Undocumented Windows" book, which describes most of the Win16 heap data structures. Also some good information in Raymond Chen's Old New Thing blogs to provide some perspective.
Previously I was using my own generic heap library, which I like because it keeps metadata outside of the heap memory block, so there's no risk of corruption. However, I was definitely seeing suspicious activity from some early programs making assumptions about the structure of the heap data, so figured that replicating the original behavior with more fidelity would be a good thing.
Unfortunately, it's moderately complex. They maintain a doubly-linked list of blocks, and a separate doubly-linked list of free blocks. On top of that it supports optionally-moveable memory blocks with MacOS-like handles (which was actually what tripped me up in the first place).
Now at least it's working enough for the 4 officially supported Win16 games (Pipe Dream, Indy Desktop, Star Wars Chess, Star Wars Screen Entertainment), so time to make it official.
Protip: when writing a heap manager, always write an extensive heap validation function and in your debug builds call it before and after any heap manipulation to ensure that you haven't messed things up. I've written probably a dozen or so heap implementations in my time and this has always saved my bacon.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
Rogue emulation programmer & demon hunter. Formerly of #Microsoft, #MAME, #Connectix, and #LucasArts. Still active in the Seattle choral scene #SeattleSings via Summer Fling Singers and Sine Nomine. Author of #DREAMM emulator and the #ymfm audio library.
If you do actually test out network play, let me know good/bad how it goes. I have only tested it locally, so I'm kind of nervous to see real-world results!