When it comes to PC Engine CD-ROM² System Card compatibility, the answer is usually "The Super System Card 3.0 will play every game... except for one". That exception is 1989's PC Engine CD-ROM² release of Altered Beast (Juuouki), which will hang once you transform into the beast and the game tries to load a new chunk of the level. The game is not frozen - music still plays and controls are still…
If you look at the layout of a PC Engine CD-ROM² game, you will probably find a disc that has two data tracks: I thought this was pretty unusual - as someone mostly familiar with home computers and later CD-based consoles, I usually expect a single data track as Track 1 and optional Audio tracks afterwards. Why does the CD start with an audio track? Seeing the data track be Track 2 does make sense…
The PC Engine CD-ROM² consists of a HuCard containing a BIOS, which interfaces with the actual CD-ROM drive and serves as a bare-bones operating system of sorts for CD-ROM games. Like all HuCards, the System Card is mapped to the $E000-$FFFF memory range on startup (MPR#7 = $00), and developers should not change this when calling BIOS functions since the code assume that base address. The BIOS…
When it comes to playing fighting games or certain arcade/MAME games, an Arcade Stick can be nicer than a gamepad. You can really mash the buttons and yank the lever (that’s the technical name for the actual stick). There are many that you can just buy, and that’s probably the preferred choice. Hori has long been a trusted brand, I actually own a Victrix Pro FS, the Hitbox is getting a lot of buzz…
Most ATX Mainboards have somewhere between 3 and 5 PCI Express slots. Generally, an x16, x8 and some x1's, but if you have e.g., a Threadripper X399 board you might have several x8 and x16 slots. But what if you want more devices than you have slots? Let's say you want a whole bunch of M.2 NVMe drives, which are only x4 each. Ignoring any motherboard M.2 slots, you can use adapter cards that just…
One of the nice things about .net is that you can automatically generate an .xml file for the xmldoc comments. But the default compiler warning can entice developers to put in superflous or otherwise unhelpful comments.
Nonograms - also known as Griddlers, Picture Crosswords, or Picross - are pretty cool puzzles, kind of like a more visual Crossword puzzle or Sudoku. Of all the games on my New 2DS XL, Mario's Picross and the Picross e series are near the top of my Activity Log (beaten only by Smash Bros). I got curious about algorithmic solutions to those Nonograms, which seems deceptively easy, but is actually…
It's been a few months since I released Simplexcel 2.0.0 , which was a major change in that it added .net Standard support, and can be used on .net Core, incl. ASP.net Core. Since then, there have been a few further feature updates: Add Worksheet.Populate<T> method to fill a sheet with data. Caveats: Does not loot at inherited members, doesn't look at complex types. Also add static…
A while ago I put up a post showcasing adventure game GUIs , without really going into much details about them. But if you want to make your own adventure game, one of the first questions is how you want to control it. And that means, deciding how many Verbs there should be. If you ask "old-school" gamers, you will hear a lot of complaints that modern games are "dumbed down", while game designers…
A while ago, I wanted to set up a backup strategy. Now, my first attempt was to use a ASUS Tinkerboard or Raspberry Pi 3. This attempt failed, and I'd like to go over why, so that future readers don't make the same mistake. The Theory: Desired Setup Here's my desired backup strategy: As you see, the Tinker Board was supposed to be the local backup server, that is, the server that holds backups of…
Tresor is a .net library (.net 4/netstandard 1.3 or newer) to generate passwords in a deterministic way, that is, the same inputs will yield the same outputs, but from simple inputs (Like the service name twitter and the passphrase I'm the best 17-year old ever.) you will get a strong password like c<q_!^~,'.KTbPV=9^mU. This helps with the behavior of using the same passphrase for multiple sites,…
A couple of years ago, I created a simple .net Library to create Excel .xlsx sheets without the need to do any COM Interop or similar nonsense, so that it can be used on a web server. I just pushed a major new version, Simplexcel 2.0.0 to NuGet. This is now targeting both .net Framework 4.5+ and .NET Standard 1.3+, which means it can now also be used in Cross-Platform applications, or ASP.net…
What is wrong with this picture? Answer: The white area in the top of the CPU and Memory graphs. These indicate that I spent money on something that I'm not using. One of the complaints that are often brought forward how certain applications (especially browsers) are "memory hogs". As I'm writing this, Chrome uses 238.1 MB of RAM, and a separate Opera uses 129.8 MB. Oh my, remember when 4 MB were…
Here's a few git settings that I prefer to set, now that I actually work on projects with other people and care for a useful history. git config --global branch.master.mergeoptions "--squash" This always squashes merges into master. I think that work big enough to require multiple commits should be done in a branch, then squash-merged into master. That way, master becomes a great overview of…
Setting up IIS usually results in some error (403, 500...) at first. Since I run into this a lot and always forget to write down the steps, here's my cheatsheet now, which I'll update if I run into additional issues. Folder Permissions Give IIS_IUSRS Read permission to the folder containing your code. If StaticFile throws a 403 when accessing static files, also give IUSR permission Make sure files…
For a lot of Front End JavaScript work, our browser has become the de-facto IDE thanks to powerful built-in tools in Firefox, Chrome or Edge. However, one area that has seen little improvement over the years is the console.log function. Nowadays, I might have 8 or 9 different modules in my webpage that all output debug logs when running non-minified versions to help debugging. Additionally, it is…
This is a bit of a follow up to my old 2011 Thoughts on ORM post . I've changed my position several times over the last three years as I learned about issues with different approaches. TL;DR is that for reads, I'd prefer handwritten SQL and Dapper for .Net as a mapper to avoid having to deal with DataReaders. For Inserts and Updates, I'm a bit torn. I still think that L2S is a vastly better ORM…
I have a custom DNS Server (running Linux) and I also have a server running Linux ("MyServer"). The DNS Server has an entry in /etc/hosts for MyServer. On my Windows machines, I can nslookup MyServer and get the IP back, but when I try to access the machine through ping or any of the services it offers, the name doesn't resolve. Access via the IP Address works fine though. What's interesting is…
Stack Overflow has been expanding past the English-speaking community for a while, and with the launch of both a Japanese version of Stack Overflow and a Japanese Language Stack Exchange (for English speakers interested in learning Japanese) we now have people using IME input regularly. For those unfamiliar with IME (like I was a week ago), it's an input help where you compose words with the help…
One of the hidden useful gems in the .net Framework is the System.Security.Cryptography.Xml.SignedXml class, which allows to sign XML documents, and validate the signature of signed XML documents. In the process of implementing both a SAML 2.0 Service Provider library and an Identity Provider, I found that RSA-SHA256 signatures are common, but not straight forward. Validating them is relatively…
George R.R. Martin went on record saying he still uses Wordstar 4.0 on an old DOS Machine to write his epic 1000 page A Song of Ice and Fire novels. This seems to baffle some people - after all, the only people that don't trust modern technology are people that don't understand it. But often, we overlook that keyboard-driven interfaces are extremely productive once you're over the initial learning…
My local Apple store happened to have a Space Gray Macbook in stock, so I picked it up. I think that a lot has been said already about the new Macbook, but here are some thoughts of mine. I primarily wanted a laptop that is as small and lightweight as possible, and the Macbook fits that. People called it an "iPad running OS X" and mean that in a negative way, but this was essentially what I'm…
One of the more strange LucasArts adventures, The Dig is essentially a science fiction movie with some interaction. Originally released in 1995 during the "CD-ROM Multimedia" craze, it features writing by Orson Scott Card and is based on an idea by Steven Spielberg. All ingredients for a great experience? The interface is a radical departure from LucasArts' previous verb interface, a trend that…
Imagine Philip Marlowe turning down the job from General Sternwood at the beginning of The Big Sleep. Or Bilbo Baggins standing his ground and not join Thorin Oakenshield's company in The Hobbit. Or if Han Solo refused to take Luke and Obi-Wan in Star Wars. There wouldn't be a story. Books and Movies work because they have characters make choices that put them or others in situations which advance…
I'm normally a .net developer, it's been my bread and butter for the past seven years and will be for several more. But it's also important for me to keep in touch with other languages out there, including Ruby. Here's my personal cheat sheet to remember naming conventions. Method Names are lower case and use underscores, as do Method Arguments. The result of the last expression is automatically…
I've been working with Docbook V5.0 a bit and started working on some processing tools to support my workflow. One of the big things is that the official Docbook Schema is Relax NG and Schematron . Relax NG In .net, you can create a validating XML Reader by passing in XmlReaderSettings into XmlReader.Create, but the built-in ValidationType is limited to W3C XML Schema (.xsd) or Document type…
You may think "Whoa, that's a whole bunch on obsolete technology!", and you would be right. But as a hobbyist and hardware hacker, and this stuff is my hobby. Now, despite being NT-Based, Windows XP still allowed enough access to make this stuff work. Specifically, it allows installation of unsigned drivers out of the box. Driver signing may or may not have real security benefits - assuming that…
I'm currently looking into Commodore 64 game development again, and one of the interesting questions is "How to display the graphics?" The C64 has a plethora of display modes, and with the use of raster interrupts it is possible to mix the different modes to create crazy tricks. A while back, I asked a question titled " What exactly makes up a screen in a typical C64 game? " and got a good answer,…
This is Pac-Man on the Atari 2600, played on an Emulator. The game was generally seen as a horrible port of the arcade game, done under a lot of time pressure, and this video really makes it look bad. See the flickering ghosts? How could they ever release a game like that? And it's not the emulator either, hooking up a real Atari 2600 to a modern TV has the same flickering!
When working with angles, I'm used to degrees. 90 degrees is a right angle, 360 degrees is a full circle. But in Game Math, Radians are commonly used. What are they, why do they exist and how would I use them? Well, radians are derived from π (pi). 180 degrees would be 3.14.... radians, or more exactly, 180 degrees is exactly π radians. Thus, 360 degrees is 2*π, 90 degrees is π/2, 45 degrees is…
It's been fifteen years since I had math in school, and even then trigonometry was barely just touched on. Every time I try to do game development though, I'm hitting a brick wall because people throw around concepts like tangents, radians and square roots of things like it's nothing and I completely forgot about all of that. Wikipedia isn't really that helpful because it explains the concepts…
A while ago I created my own, simple Excel .xlsx creation library for .net 4.0+. The reason I did this was because I was unhappy with the ones on the market – many of them tried to replicate every feature Excel has to offer but don’t test actually against the actual Excel application and thus miss things like sheet lengths/invalid characters (which are NOT part of the OpenXML Spreadsheet standard)…
On April 6, 2008, Jeff Atwood asked for help naming his little project. On April 16, he announced StackOverflow.com. On September 16, it launched. (What’s the obsession with the number 6, Jeff?). In between, beta access was granted to people. I was part of the second beta wave and got my access on August 1, 2008: Welcome to the Stack Overflow private beta! Please read this first. Seriously:…
The .net Framework comes with a validation system, called Data Annotations . At first glance, these are pretty awesome and I have used them a lot. In a nutshell, it allows you to do stuff like this: [Required] [StringLength(64)] public string Title { get ; set ; } It is also absolutely trivial to write your own validators and to validate objects using these. In fact, ASP.net MVC will automatically…
Yeah, I’m late to the party, sue me if you want 🙂 Anyway, I’ve just finished implementing OAuth on both a server and client, using .net for an additional challenge, OAuth 1.0a is a decent protocol. One of the things it gets right is also the one biggest problem: The weird parameter reordering to create the HMAC-SHA1 signature. From what I’ve read, this was because the PHP installation on a…
In 1997, there was a game that was not simply great but truly genre-shaping - Castlevania: Symphony of the Night . It took Castlevania but turned it into a deep, open world action RPG not unlike Metroid but with it’s own unique RPG elements. Thus, a new genre was created: Metroidvania. Games in which you had a broad world to explore with many, many hidden rooms that require you to gain powers and…
Adventure Games went a long way from the Text Adventures of the 80’s to be something like an anachronism in the 2010’s landscape that’s dominated by twitch-based action games. Here are some GUIs that Adventure Games used over the years. This is by no means exhaustive, but should cover the most common ones. Early Sierra Games were essentially still text adventures – you could move your character,…
Typical Adventures increase the complexity and difficulty of the game gradually and like movie scripts, they often have several distinct parts. Atlantis is no difference, although the acts aren’t clearly marked in the game. From a high level perspective, the game has these parts: Atlantis is one of the most complex Adventure games because it has three different paths through the middle section. A…
I’m just setting up my Commodore 64 again for some authentic gaming. The 5.25” floppy disks on the day use a notch in the side to detect if the disk was write protected or not, and commercially bought empty disks usually only had the notch on the right to make one side writable. However, people soon found out that the disks are usually safe to use on both sides, and that if you put a similar hole…
As you might have gathered from my previous posting about Adventure Games , I’ve spent a lot of time recently playing these games and while there are many different details that I loved in different games, there was one game that stood out because every aspect of it was perfect: Indiana Jones and the Fate of Atlantis . I believe that this game should be taught in game development classes, but as a…
As part of almost every application I work on, I need to create Excel sheets one way or the other, usually from an ASP.net MVC application. During the years, I’ve tried several approaches, and they all sucked one way or the other: COM Interop: By far the worst option. Requires an installed Excel. Slow. Error prone. Resource-intensive. Not supported in a server environment. CSV or HTML Tables: Only…
What is wrong in this picture? If you said “You’re using Internet Explorer” or “You’re using Google+” you might be right, but that’s not what I’m talking about. I’m talking about the fact that there is a big tutorial prompt between me and the application which prevents me from actually using the application. Google Apps does it. iTunes does it. The Kindle Paperwhite does it. Photoshop Touch does…
I’m currently playing and replaying a lot of adventure games, in order to dissect their individual parts and really understand what I like and dislike about them. I do like to play games for their story even more for their gameplay, but storytelling doesn’t just naturally happen. I’ve played dozens and dozens of adventures, but the ones I focused on most are Monkey Island , Le Chuck’s Revenge and…
There is a bit of a discussion going on in the Twitterverse about whether or not you should learn programming, started by Jeff Atwood and picked up by others. Now, I have a great amount of respect for Jeff Atwood and there is the possibility that stuff was misunderstood. But I’m offended by the example be brought up about the code that may be written. I would like to present you with the two most…
As I said before , I absolutely love story driven games. One thing that often turns a great game into a great series are expansions and sequels that actually continue the story and allow a flow between them. Might and Magic 1-5 had a pretty epic saga between Corak and Sheltem, Ultima was essentially 3 trilogies with Ultima 7 split into 4 parts as well, and Wizardry 6-8 formed the Cosmic Bane saga.
Today, Github was hit by a security vulnerability that was caused by not properly dealing with model class fields that were not passed in by the form. Basically, by forging a HTTP Request, it was possible to set values for any field in the model, even the ones the forms on the website normally don’t pass in. This type of issue is not limited to Ruby on Rails though, a similar issue can happen with…
I am a gamer. That word has many meanings, to me a gamer is someone who can immerse into games and really enjoy them, for whatever reason. For some people, that reason is Multiplayer and they tend to focus on games with strong multiplayer like FPS and sports and try to be on top of the leaderboards. For some other people, that reason is creativity and they tend to focus on sandbox games and build…
I'm participating in this years NaNoWriMo, something I missed last year. For those unfamiliar, the idea is to write a 50,000 word novel during November. With stuff like that, backup and syncing between computers becomes an issue. Now, I made a smart choice: Instead of using Microsoft Word or other, similar inadequate applications to write the manuscript, I use Scrivener . It saves its data in what…
There is an updated post, written in August 2016: https://stum.de/2016/08/24/thoughts-on-orms-2016-edition/ It's hard to imagine a world without OR/Ms anymore. The old days of making a query, getting a reader, looping through it, getting every column into an object... I'm a Linq2Sql user. I like it's relatively easy setup and good flexibility, and it has a really good query generator. However, I'm…