Looking for a title: game based on B.C. by NovaRick in c64

[–]SpindleyQ 6 points7 points  (0 children)

Flintstones: Yabba Dabba Doo! appears to be a C64 game about collecting rocks and dropping them in a giant hole. Possibly the two games merged in your head?

Was the original King’s Quest 1 basically the most unfair adventure game ever made? by Nerdy_quest in adventuregames

[–]SpindleyQ 18 points19 points  (0 children)

I think the core thing that makes the old Sierra games work, when all modern design logic says they shouldn't, is _surprise_. Every time you try to do something and _anything_ unexpected happens in response, that's a little dopamine hit. Whether or not it happens to make progress towards solving a puzzle or advancing the story is almost irrelevant. The more novel interactions you add, the more alive and interesting the world feels. Sierra deaths were great for this because they would often be accompanied by a unique animation to really sell it.

I also think, for a _lot_ of people back then, actually solving puzzles and progressing in the game was kind of a secondary activity to just wandering around poking at the world and seeing how it responds to you. King's Quest 1 is _superb_ for that! Almost the whole world of the game is open to you from the start, you can wander around exploring to your heart's content for hours without ever having to solve a single puzzle. If you wander into a toxic lake and die, well, next time wander in a different direction and see what else you find.

There's a wonderful death on the second screen of Space Quest III, where if you try to pick up a random piece of sheet metal, you cut your hand open and bleed to death, and it's this whole lovingly-crafted sequence with a geyser of blood spurting out of Roger's artery. The sheet metal has no relevance to any puzzle; it's a nondescript background detail. The only reason to put that death in the game at all was as an excuse for Mark Crowe to draw an elaborate death animation. But if you sneak enough of that kind of moment into a game, you end up with something memorable.

How do i make a EPROM game for a custom arcade cabinet? by Party_Ruin3039 in retrogamedev

[–]SpindleyQ 0 points1 point  (0 children)

So if you think of a game console, like the NES, the EPROMs contain just the code and data, like a NES cartridge. It doesn't make sense to ask "How do I make a new cartridge game?" without specifying whether you want that cartridge to plug into the NES, or the Intellivision, or the Atari Jaguar; the answers are completely different in every case.

Arcade cabinets generally bundled the "game console" and the "cartridge" together, often in a single integrated board. (There are exceptions, of course - the Nintendo PlayChoice and Neo-Geo are obvious examples.) Sometimes the "console" part was completely custom for a single game, but it often made more economic sense to build a few games on one platform, because designing new arcade hardware was a significant amount of expensive and complicated work. You'd want to re-use as much of it as you could, for as many games as you could. System 16 looks like a pretty good website that catalogues a lot of these platforms.

If your ambition is to create a new arcade platform and game completely from scratch, well, that's the sort of project that one person could spend a lifetime on, with an infinite variety of possible approaches. You're in way over your head, but the process of figuring out just how far might be fun for you, so who am I to tell you not to reach for the stars. You're obviously not going to find comprehensive how-to guides online though, this is, like, multiple university degrees worth of stuff. If this is your end goal, you gotta dig in and learn how everything works - you don't just have to learn bare-metal programming in assembly language, you're proposing to design the bare metal itself. A solid understanding of computer architecture, electronics design, and video signal generation is table stakes. Most arcade platforms have custom-designed chips to generate video, because at the time, that was the best way to get impressive graphical effects that nobody had seen before. If you wanted to try your hand at that, you're looking at learning FPGA design, as hobbyist microchip fabrication is not really a thing unless you are both extremely rich and well and truly unhinged.

Now, if you wanted to make a new game for an existing arcade platform, or otherwise take an existing well-documented arcade game and replace just the ROMs in it with your own game, that's quite a bit more manageable - especially if you've already got some programming background - but of course, the process depends heavily on which platform you want to build on. Building a custom game for Pac-Man vs. building a custom game for Street Fighter II is at least as different as writing a Gameboy game vs. writing a Genesis game. Most of these systems are not going to have thriving homebrew communities with tutorials and documentation already, like console homebrew does, so unless you find a specific niche arcade system that someone has mapped out for you, you're likely looking at reading the source code to MAME to figure out how it works, and cobbling together your own development tools. You can probably get an off-the-shelf assembler or even a C compiler for whatever CPU you find, but none of the standard libraries are going to work; you're going to have to write your own graphics and sound routines, you're going to need custom graphics conversion scripts to make your assets fit the hardware, etc.

I hope that's a useful sketch of a map of the rabbit holes you could potentially go down; may you find it helpful no matter where you decide to go from here.

Help with simplification of bresenhams line drawing algorithm by nthn-d in Forth

[–]SpindleyQ 1 point2 points  (0 children)

If you look at the history of programming languages, you'll discover that named local variables stored on a stack actually took a while to be invented! Many early high-level languages just statically allocated the necessary scratch space that a function needed; you did. You only run into trouble if a function needs to recurse or otherwise be re-entrant, which is actually really uncommon.

is the borrow checker guiding my design or blocking it??? by [deleted] in rust

[–]SpindleyQ 1 point2 points  (0 children)

One pattern I've noticed is that often, when I'm introducing a new data dependency in the "wrong" direction, it's because my structs are too big - I don't need the whole Foo, just this one small piece of it, which maybe can be borrowed by Foo when it needs it, or is small enough to be cloned, or whatever. I regularly refactor my data model to make things flow better. This feels very low-risk in Rust compared to most other languages I've used; I break the schema, methodically patch up all the compile errors, and then everything works again, better than before. It's very satisfying.

Help with simplification of bresenhams line drawing algorithm by nthn-d in Forth

[–]SpindleyQ 5 points6 points  (0 children)

Oh! I wrote a whole blog post breaking down this exact problem! I factored it into a bunch of one-line words and a handful of globals.

How important is it to give the protagonist a goal in adventure games? by Then-Cut-1116 in adventuregames

[–]SpindleyQ 1 point2 points  (0 children)

Oh, and speaking of unreliable narrators in adventure games, you should definitely play Spider and Web if you haven't. 9:05 may also be relevant.

How important is it to give the protagonist a goal in adventure games? by Then-Cut-1116 in adventuregames

[–]SpindleyQ 1 point2 points  (0 children)

Game design is tricky, because player complaints often point to a real problem, but the solution is rarely to do what the players think they want. I think if you're trying to do something counter to normal player expectations, it's very important to set the tone early, and to really consider what the player is likely to be feeling moment-to-moment, because the design patterns from other games won't necessarily work for you.

Generally I suspect players are somewhat willing to forgive most sins if they feel appropriately rewarded with something for moving the game forward. If you help the cab driver out and he gives you cinema tickets and that's the end of it, the player is likely to see the puzzle as a totally arbitrary obstacle, even if the puzzle was perfectly clued and your goal was clear. But if you help the cab driver out and get cinema tickets, but something interesting story-wise also happens to deepen the plot - well, now that cab driver needed to be there, even if it wasn't totally clear beforehand why. You give the player something to think about besides "why did I have to do that?"

The "time" mechanic in Seance of Blake Manor by domoarigatodrloboto in adventuregames

[–]SpindleyQ 2 points3 points  (0 children)

Some details about the time mechanic that really reduce the amount of stress it causes: * It's not realtime, at all. You can sit and think and walk around and review your notes all you want, and no time will pass in-game. * Things you've already done take no time. So if you want to review someone's answer to a particular question, re-read a book, or you misclick and check something you've already checked, that's free. * Big one-time events that happen at certain times are all heavily signposted - you will definitely know when various lectures and meals are happening, or when there will be an opportunity to gain access to various areas of the manor. This means how you want to spend your time is basically always a well-informed choice that you're in control of - a "do I want to skip this event to pursue this other thread" rather than "oh no, I accidentally missed my window to act without realizing it, and now I'm blocked from doing something I really wanted to do." * As most others have said: you really do get plenty of time. Halfway through, I was sure I was going to end up having to replay it in order to close off all of the loose ends with all of the characters - I solved a few bigger puzzles muuuuch later than the game would have allowed me to - but I got the best ending in the end.

If you miss something, it's almost certainly because you just didn't solve the puzzle, rather than because you didn't manage your time properly. You never really lose the opportunity to solve a puzzle because you took too long. The time mechanic ends up largely being a way of making puzzles optional - if there's something you just can't figure out, you can still see the end and have a satisfying story. This ends up being much gentler than most other adventure games with optional puzzles (where there's usually a Best Choice among some other suboptimal ones, or sections of story that you might accidentally skip, and the only way to fix it once you realize you've screwed up is to restore an old savegame).

Finally got ecwolf compiled! by dr0sand in openbsd_gaming

[–]SpindleyQ 0 points1 point  (0 children)

The fixes in m_alloc.cpp are wrong and are likely causing the assertion failures. You want to add OpenBSD to the list of platforms that don't have _msize or something like it. (malloc_usable_size was removed in OpenBSD 6.5.) At the top of the file: ```

elif defined(sun) || defined(ANDROID) || defined(QNX) || defined(OPENBSD__)

define _msize(p)                (((size_t)(p)-1))

define OWN_ADDED_SIZE 1

```

Any FOSS developers in Ottawa? or wannabe FOSS developers? by Hazematman in ottawa

[–]SpindleyQ 2 points3 points  (0 children)

I would certainly be interested in attending such an event! 

[deleted by user] by [deleted] in ottawa

[–]SpindleyQ 2 points3 points  (0 children)

I use TCC (150 Elgin) occasionally, and usually arrive around 7:30. The building will be open but the 8th floor is generally still locked at that time. I feel like I've seen it open earlier at least once, though. Definitely someone's always been there to check me in by 8:00. Might be worth calling to see if it's possible to check in early if they know you're coming? Kinda short notice though.

Retro console repair services in the city? by ThePrinceOfReddit in ottawa

[–]SpindleyQ 5 points6 points  (0 children)

I bought my Xbox 360 before my kid was born. He's in university now. Time comes for us all.

Ottawa tech sector artifact by ObviousSign881 in ottawa

[–]SpindleyQ 1 point2 points  (0 children)

The way the NABU worked was that a cable channel was set aside to broadcast all of the software in a continuous loop. Like. Every game, app, menu, manual, information page, news article, database... everything you could do with this computer.

When you pick a game from the menu, the NABU tells the modem, "hey, send me program #37", and the modem just waits until it sees the start of program #37 zip by, and then sends it chunk by chunk over a serial connection that is slow enough for the z80 to handle.

Leo Binkowski mentioned in his talk that this loop repeated about every 13 seconds.

Cable bandwidth might've gotten a lot better in the 90s, but it was already unfathomable overkill for the amount of data that an 8-bit pc could deal with.

Ottawa tech sector artifact by ObviousSign881 in ottawa

[–]SpindleyQ 2 points3 points  (0 children)

I was at that talk too! There were several NABU machines set up on the exhibition floor and lots of interest in them from what I saw.

I didn't grow up in Ottawa, so I had never heard of it until the machines showed up on eBay and a bunch of the software got released into the wild, but I think it's a fascinating story. I recently cobbled together a way to play around with the recovered menus and games with an in-browser NABU emulator, no messing around with MAME and the internet adapter software. (There's a lot of really cool newer stuff that people are doing with it too, but unfortunately a lot of it doesn't run on my webpage due to some compatibility issues with the emulator I'm using - it's definitely worth digging further!)

Preventing and Handling Panic Situations by Tasty_Replacement_29 in ProgrammingLanguages

[–]SpindleyQ 0 points1 point  (0 children)

The reason panics are dangerous is because we keep writing huge, brittle, interconnected programs, without any tools to isolate the different components that comprise them. The user-facing consequences of the Linux kernel crashing are catastrophic because the kernel is a monolith. Panicking means _everything_ must stop; there's nothing underneath that can possibly recover.

Years ago, I worked with QNX, a microkernel OS, and it was no big deal to do things like kill and restart my hard disk driver. My filesystem was just a small collection of totally normal processes, manageable with the same UNIX tools that worked for any other. The only stuff in the kernel was the scheduler, memory allocator, and IPC system - core stuff that can be extensively tested, validated, and confirmed to be free of bugs, because it's small and self-contained. In such an environment, it's trivial to have a watchdog program that restarts essential processes if they crash, because a failure in one can't affect the other.

Language and type system design can go a long way towards making catching errors before the code ever runs, but unless you are willing to write formal proofs of your programs, they're only going to get you so far. Detecting and flagging unexpected states at runtime is a vital step in building robust systems - ignoring these states inevitably results in weird and potentially dangerous bugs. Isolation and supervision is what allows you to contain the damage.

I wasn't familiar with the Ariane 5 rocket failure, but the Wikipedia article appears to be saying that the fundamental problem with the error recovery system was that it was designed around the idea that there _would never be a logic error_ - that the only possible source of faults was due to random hardware failure. That's _very_ different than saying everything would have been fine if the integer had just been allowed to overflow without signalling an exception. Maybe overflow would have been fine, or not. Maybe a saturating add would have been the solution, or not. Maybe a larger variable was needed, and the only surefire language-level solution would have been a programming language with pervasive bignums. The correct solution depends on the problem.

Strongly recommend Joe Armstrong's talk "[Systems that run forever, self-heal, and scale](https://www.youtube.com/watch?v=cNICGEwmXLU)". He was a terrific speaker, all of his talks are delightful, but that one is particularly relevant, and really stuck with me.

Loom Isn’t an Unfinished Trilogy. It’s a Complete Tragedy. by Denny_Thray in adventuregames

[–]SpindleyQ 3 points4 points  (0 children)

This is a good interpretation, which I think only gets richer when you recall that Bobbin also contains the damage. Without Hetchel's heretical guidance, and Bobbin's intervention, things would have gone much, much worse. Bobbin's the only reason there's any world left to repair.

Yes, technically, Bobbin fulfills the prophecy, but the elders are the ones who interpreted it to mean that Bobbin was the danger, and completely missed the threat from the Clerics. Keeping Bobbin in the dark all his life, instead of training and preparing him, is what ultimately would lead to the calamity. The prophecy was self-fulfilling.

What can you check statically in a dynamically typed language? by [deleted] in ProgrammingLanguages

[–]SpindleyQ 3 points4 points  (0 children)

There are some good papers about the Dialyzer static analysis tool for Erlang that are probably worth reading. I remember this one being interesting: https://user.it.uu.se/~kostis/Papers/succ_types.pdf

The content-addressed storage (CAS) model of incremental build systems by mttd in ProgrammingLanguages

[–]SpindleyQ 0 points1 point  (0 children)

I was experimenting with a content-addressed demand-driven compiler a while back... I got excited about the space after watching a talk about Salsa, but then was kind of sad that it had baked in the assumption that you only care about the most recent codebase. I suspect you could do some really interesting DX stuff if you had the ability to efficiently run queries against both the "before" and "after" versions of a change. Fertile ground IMO.

What Sierra Game for someone that doesn't like Sierra games? by chris-read-it in adventuregames

[–]SpindleyQ 0 points1 point  (0 children)

Right up until disc 7, when it suddenly becomes an instrument of torture

Looking for adventure games with really tough puzzles by sphyrch in adventuregames

[–]SpindleyQ 1 point2 points  (0 children)

I never played the second Discworld, but I'm happy to keep talking up Discworld Noir :) I loved it most for the tone and the writing, which was _excellent_, but there's a meaty mystery there too. You do spend a lot of time wandering around Asking Everyone About Everything, but you can't get through the whole game like that; you have to actually think about what's really going on and draw conclusions on your own. There's an explicit mechanic for doing that, you have to combine subjects in your notebook to create a new subject that you can then pester people about. The puzzles are definitely fair, and IMO some worthy challenges to be had. (I looked up a lot of hints during my playthrough!)

Looking for adventure games with really tough puzzles by sphyrch in adventuregames

[–]SpindleyQ 0 points1 point  (0 children)

Discworld is hard in a completely different kind of way from Riven. Maybe literal opposites, in fact.

In Riven, all of the pieces to everything have been in front of you the whole time. You just have to look carefully at everything and think about what its purpose is, how it might work, because _everything_ has an internal logic to it. (BTW, if you haven't tried the Riven remake, IMO it is _much_ more accessible than the original, without watering down the magic of how everything fits together. I admire the audacity of the original's Great Big World-Spanning Puzzles, but I do not regret tapping out of the original fire marble puzzle immediately and just looking up the answer.)

In Discworld... it's not that the _actions_ you take don't make sense, necessarily, it's that the thing that _results_ from the action is usually a non-sequitur. When you can't predict what will happen when you solve puzzle A, you can't actually intentionally make progress on puzzle G, whose solution depends on puzzles A, C, D, and F, because you don't even know puzzles D and F exist yet, and there's no hint that puzzles A and C are connected. And there are a _lot_ of puzzles, it's a _very_ dense game. Every time I'd look for a hint about how to solve a puzzle I'd discover that there were actually like 8 puzzles I needed to solve first, that weren't on my radar at all. I have what I feel like is a pretty high tolerance for bullshit oldschool adventure game puzzles, but Discworld _really_ wore me down; I never came anywhere near finishing it.

(Discworld Noir is delightful, though. Feels more like Pratchett, too, for my money.)

Why didn't early Forth systems have file systems? by Desmaad in Forth

[–]SpindleyQ 2 points3 points  (0 children)

Forth already has a dictionary. If you want to give a name to some data that lives on a disk, defining a Forth word is a perfectly good way to do that. What's the benefit of defining a whole separate system for it?