dietrichepp
https://bsky.app/profile/1bitdreams.bsky.social
I see maybe 10 or 15 new pieces of 1-bit art posted on those platforms each week. A couple recent ones:
https://bsky.app/profile/ncesium.bsky.social/post/3miwkrqev5...
https://bsky.app/profile/oddbones.bsky.social/post/3mi7pedpn...
I’ll add some context here—why don’t more games run their audio at 32768 Hz, if that’s such a natural rate to run audio? The answer lies in how you fill the buffers. In any modern, sensible audio system, you can check how much space is available in the audio buffer and simply fill it. The GBA lacks a mechanism to query this. Instead, what you do is calculate this yourself, and figure out when to trigger additional audio DMA from the VBlank interrupt. You know the VBlank runs every 280896 cycles, and you know that the processor runs at 16777216 Hz, so you can do some math to calculate how much data is remaining in the audio DMA stream.
A lot of games simplify the math—it’s easier to start a new audio DMA in your VBlank handler, but that means running at a lower sample rate, which will sound pretty crispy.
YMMV, some people like the crispy aliased audio. If the audio weren’t crispy, the sound designers probably would have adjusted the samples to compensate. Other factors being equal, I’d rather listen to what the original artists heard when they were testing on real hardware, because that is probably closer to what they intended, even though it has a lot of artifacts in it.
On-and-off again working on a Mystery Dungeon style game but I have a lot of obligations taking me away from it.
Planning on making demoscene entries this year.
Because it’s the one I remembered first, it worked, and I didn’t think that it needed any improvement. In fact, I still don’t think it needs any improvement.
//d
You can get a list of them with a single Awk line. awk -F'//d[[:space:]]*' 'NF > 1 {print FILENAME ":" FNR " " $2}' source/*.c
You can even create a GDB script, pretty easily.(IMO, easier still to configure your editor to support breakpoints, but I’m not the one who chose to do it this way.)
ls -l | awk '{print $3}'
That’s typical usage of Awk, where you use it in place of cut because you can’t be bothered to remember the right flags for cut.But… Awk, by itself, can often replace entire pipelines. Reduce your pipeline to a single Awk invocation! The only drawback is that very few people know Awk well enough to do this, and this means that if you write non-trivial Awk code, nobody on your team will be able to read it.
Every once in a while, I write some tool in Awk or figure out how to rewrite some pipeline as Awk. It’s an enrichment activity for me, like those toys they put in animal habitats at the zoo.
The N side has negative charge carriers. It has a positive charge in the depletion region because the charge carriers are missing. Likewise, the P side has positive charge carriers, and when they’re missing, you get a negative charge.
This is true whether we live in the current universe or live in an alternate universe where we say that electrons have positive charge. The depletion region is where the charge carriers are missing (depleted), so you get the opposite charge of whatever the charge carriers are.
1. Frequency mixer, used for heterodyning, important in radio, so I hear. https://en.wikipedia.org/wiki/Frequency_mixer
2. Log converter, where the output voltage is proportional to the logarithm of the input voltage. https://electronics.stackexchange.com/questions/374440/log-c...
3. Diode ring, which provides variable gain, used in analog compressors like the Neve 33609 (I have a clone of the 33609, and I’m very fond of it)
Think about this: if you have a nonlinear device like a diode, then the dynamic resistance changes depending on the operating point. If you modulate the operating point, you’re modulating the dynamic resistance.
The old Mac game Avara used this format for levels. It was funky… you could place blocks in a 3D world, and control elevation and height by changing the corner radius of rectangles. You needed a QuickDraw image editor to make levels, like ClarisDraw.
The Wikipedia article for the Motet has an interesting quote which echoes the sentiment here:
> [the motet is] not to be celebrated in the presence of common people, because they do not notice its subtlety, nor are they delighted in hearing it, but in the presence of the educated and of those who are seeking out subtleties in the arts.
This quote is attributed to Johannes de Grocheio in the 1200s! That means that people have been saying that choral music is hard to appreciate for more than seven hundred years.
I am not surprised to hear the protocol is an abomination.
There are separate soundtracks for each faction, I think.
1. SaaS CI/CD products, like GitHub Actions,
2. Run your own Jenkins cluster,
3. Figure out how to orchestrate cloud resources to do this for you.
Maybe there are easy options that I’m missing. I don’t really want to create docker containers just to build some program I’m working on.
At first I built a workflow out of steps published on GitHub. Use ilammy/mms-dev-cmd, lukka/get-cmake, lukka/run-vcpkg, all to build a project with CMake for Windows targets. Of course I referred to actions by SHA like you should
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756
But one comment stuck with me. Something like, “You should just run your own code on GitHub Actions, rather than piecing it together from publicly available actions.” That made a lot of sense. I ended up writing a driver program for my personal project’s CI builds. One job builds the driver program, and then the next job runs the driver program to do the entire build.I wouldn’t do this if I were getting paid for it… it’s more time-consuming. But it means that I am only minimally tied to GitHub actions. I can run the build driver from my own computer easily enough.
Maybe Quake II on DOS will run with less system memory than the Windows version.
That said, it’s not one of the strengths of Logic to use it this way.
I’m not using RhymeZone less and less because RhymeZone could be better at what it does. I’m using RhymeZone less and less because the problem that RhymeZone solves is becoming less and less relevant to my process.
Software I use for songwriting: mostly Logic, also Dorico. Voice memos. Rhymezone sometimes. Rhymezone seems less and less helpful as I go on. I hardly use text editors for lyrics, paper seems to work a lot better. I end up with a lot of scribbles all over the paper.
AI suggestions for songwriting seems a bit like turning on cheat codes in a game. Cheat codes will help me beat a game faster. The cost? The game is less fun, and the whole reason I play games is to have fun. Songwriting is an activity for me, like gardening or running or something like that. Or putting together a jigsaw puzzle. If you had an AI assistant that could help you put together a jigsaw puzzle, would you use it?
There are AI tools around and some work decently well:
- Logic has session players. I don’t think they’re AI, but they are decent at putting up the skeleton of a song.
- AI-powered stem-splitting tools help you pick apart songs you like and figure out how they work.
- AI-powered song mastering tools produce dubious output. I have gone through multiple iterations with AI-powered tools and ended up happier just mastering the song myself.
LLMs seem like the great failure here.
It’s a trip seeing this old code through new eyes. I can see why the old Macs crashed so much (beyond the basic “they had no memory protection” explanation). I’m also fond of the 1-bit art, like the author mentions, and I curate a list of accounts on Twitter which post 1-but artwork (if you know anybody who’s missing from the list, let me know): https://twitter.com/i/lists/1578111923324944397
The nice thing about programming for a limited system is that it limits your options. It’s a nice break from the more modern experience where you can do anything by pulling in the right library. I sometimes imagine a world where computational power is frozen, and we simple get better and better software for systems that are well-understood. The thing about these old systems like the Mac 68K machines is that the pace of hardware development was so fast it made you dizzy. If a new processor came out like the 68020 or 80386, then you had maybe a couple years at most to make something that really used it to its full potential. If you waited too long, you’d be competing against a new generation of software written for a new generation of hardware.
I think “random” assumes some kind of perfect conditions. There will be leakage current to ground, leakage current from Vcc, and the actual threshold between high and low for the input will be some particular value.
Just a quick look at the data sheets for the SN54LS670 from TI, and I see that the output pin leakage current is rated at no more than 20 µA. That’s worst-case, but if you apply Ohm’s law and plug in 3.3 V, you get something on the order of 160 kΩ output impedance. I have a limited understanding of electronics and I’m sure I’m missing something, but I’d expect a lot of the output pins to settle on a reasonably stable voltage when they are turned off. Maybe natural variations in geometry or chemistry will push some pins higher and other pins lower.
You can run an entire CPU core with less than 20 µA current these days, just to give it a sense of scale.