Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

Tobias V. Langhoff

A member registered Dec 01, 2017 · View creator page →

Creator of

Recent community posts

What build pipeline did you end up with? I also lost some work to the dreaded "loading..." message the other day (although I had backed it up manually in a gist a few days before, so it wasn't so bad). I'm mostly using VSCode, and the Octo extension seems outdated and non-functional.

I wrote an article on how to get CHIP-8 up and running on one of these beauts:

You are correct in that `i ` pointed to real memory locations, and that programs start at 0x200 because the CHIP-8 interpreter was using that RAM on the COSMAC VIP. However, on the VIP, the font characters weren't located in the interpreter, but in the VIP's own OS or monitor program (CHIP-8 simply reused the VIP's font). The original CHIP-8 specification didn't specify where the font was (or should be) located, so in a way it was "abstracted" away. The value of `i` after using the font opcode was, in a sense, undefined.

Modern interpreters do it differently. Somewhere along the line, people decided to put the font in the now unpopulated memory region that used to be occupied by the interpreter. After all, why not, if the spec doesn't say where it should be?

Looks heavily inspired by Celeste?

(2 edits)

Not quite; the screen memory was not located in the first 512 bytes. (Neither was the font, which was in the VIP OS.) That only contained the interpreter code itself, but no variables. On the COSMAC VIP, the 256 bytes of screen/frame buffer were located in the last 352 of the addressable memory, along with variables for the V and I "registers" and other data. This location changed depending on how much memory the VIP had, which is probably one reason it wasn't included in the spec.

There were in fact even some "hires" CHIP-8 interpreters for the COSMAC VIP, such as "CHIP-10". That was unproblematic, as long as the VIP had enough memory. Although, the way the "Pixie" video chip worked, the resolution was 64x128 instead of 128x64 (because each pixel was fewer scanlines tall).

(1 edit)

It simply wasn't part of the original interpreter spec.

Other implementations (including CHIP-48 and SCHIP) didn't put the screen memory (and other stuff) at the same locations. Any program that relies on the screen memory location would only work in that specific interpreter. (Some early CHIP-8 games for the VIP might rely on this.)

In fact, the location of the screen memory changed in the original COSMAC VIP interpreter based on how much memory the computer had, since the interpreter's variables (including the screen memory) was always lcoated at the end of the addressable memory space.

Octojam 7 community · Created a new topic HP 48

Got some hardware in the mail. Ready to play some Octojam submissions!

Looks great! Haven't heard about that game before, but it seems similar to Qix?

Very nice and simple! My best so far is 15. What Octo speed is it running at? It feels very hard to get lower than 15!

Well, there's nothing stopping you from putting code beyond the "regular" 4K of CHIP-8 memory, but XO-CHIP doesn't provide a way to jump or call code there. You can set the `i` index register to anywhere in the 64K memory space, however, so it's easy to use for graphics or audio.

Cool! Usually CHIP-8 games have the scope of a single micrograme, hehe. But it's definitely possible to cram a bunch of stuff into one game, especially if they don't need a lot of graphical assets. Even then, XO-CHIP gives you a lot of space for assets (just not code, easily at least).

Cool! I made two games last year that targeted the original COSMAC VIP CHIP-8 implementation, and I'm working on another now. Historical accuracy is definitely one of the things I enjoy most in Octojam.

"Sprite drawing trigger vblank" means that when Octo encounters a  `sprite` instruction, it will then halt and wait for the next frame is drawn before continuing execution, so drawing sprites will be a bottleneck for speed.

I think 7 or 15 cycles per frame is reasonable. It's all an approximation, of course, since in Octo all instructions take one "cycle" (AFAIK) while it varies between instructions on COSMAC VIP. Here's a table of real-world timing for each instruction.

The best approach is probably to test your game in the Emma02 emulator, which emulates the COSMAC VIP faithfully. As far as I remember it's a little hard to understand how to use it though.

The jam has started! Has anyone started? Do you have any ideas?

I have a few ideas. This year my goal is to make on CHIP-8 game targeted at the COSMAC VIP, one SUPER-CHIP game targeted at the HP48 calculators, and one XO-CHIP game. I made two CHIP-8 games that ran on original COSMAC VIP hardware last year, and that was great fun. (I also like turn-based stuff and puzzle games anyway, which is well suited for that.)

Thanks for the tip, I'm considering targeting HP48. Quick question: Are the scrolling instructions heavy? How costly are they really? I have no idea how they work behind the scenes.

This sounds like a great feature!

Octojam 7 community · Created a new topic CHIP-8 keypad

I'm so stoked for Octojam, I put together a little keypad, inspired by the COSMAC VIP's keypad, to play this year's games with:

It's a BM-16A PCB and case, purchased from KPRepublic.  I had to solder in switches myself (I put in some Zealios Zilent switches I had lying around for a tactile feel). The keycaps are a DSA Mono-Color keyset for an ortholinear layout from Pimp My Keyboard (Signature Plastics); the DSA profile means the keycaps are all the same height, and the ortholinear set comes without sublegends on the numeric keys. 

I then programmed the keypad using the open source QMK firmware, and mapped the keys to the Octo layout (ie. 1234qwerasdfzxcv).

Time to play some CHIP-8 games!

Maybe pressing a key could swap between the standard and alternate palettes?

Reminds me of Vaughn from Community

Looking forward to the full game. I hope it will be called Lux-Ducks Deluxe.

Really fun idea!

I'm playing on PC. The instructions say that left click clears a tile and right click flags, but it seems like both left and right click flags? I have to double click to clear.

Wow! Probably your best work yet

Thanks a lot! I'll definitely play more with the concept, and probably try to think of more characters/abilities.

Thank you! I definitely think I can do more interesting things with the concept, but sadly I didn't have time for much level design or to develop the concept further.

In retrospect I agree on the red+green color choice – those tiles are actually from a classic (now public domain) puzzle game called Laser Tank, which I've played a lot, so I guess I've just gotten used to the colors over the years, haha.

Or just walk to the left in the first screen at the right time, and you get stuck behind your companion... I also managed to leave the companion behind at the start once

Thank you! Yeah, I totally agree. I made them controllable on the title screen as a tutorial, but individual levels would be better. I got a lot of ideas while making the prototype, but I should have set aside waaaay more time for making levels. Puzzle levels are hard to design!

Cool game! I'm not sure if I'm supposed to be able to kill enemies by closing doors on them or not, but it sure helps.

Aha! I didn't notice that. I guess I always use X as a shorthand for EXAMINE...

Amazing game! And amazing artwork. I haven't played a lot of text adventures before, but this game really made me interested in the genre.

I'm still not done, missing two mushrooms (I have tall, indigo, striped, russet, inky, skinny, broad and golden) and probably a lot of easter eggs, judging by the ending text.

A small bug: "EXAMINE TREE" works in all (?) rooms and says "The skinny sycamore tree has taken root is not here".

So that's why you signed the lake image! ;)

Don't you mean EXAMINEing? :)

Yeah, it's not impossible, but certainly tricky. I feel like the three sentences in the introduction aren't really "story", but "setting". Maybe I'm thinking too much in terms of "plot" though. We'll see what I manage to squeeze out.

Yes, it's already been established in another response that it's OK to scale the canvas

Not a biggie, I was mostly just wondering if they were captured by the OS and not available for games on the old 3310 or something. Thanks!

(1 edit)

Yeah, that was exactly what I was thinking. An extra "puzzle" of figuring out that you have to use a treasure. Thanks!

This will be my first IF/text adventure (if I finish it, that is), so I've been reading up on the genre and how to design such games. I have played some, but that must have been as a kid over 20 years ago...

I've started planning some puzzles (which will probably be mediocre) and structure, but it'll be hard to tell a coherent story with the restrictions. The two word restriction isn't that bad, but six words for responses and messages is tough! It doesn't really give room for much more story than TWO has. I'll have to see if there'll be a story at all.

Why are only 12 buttons usable, and not 16? Is that how it was on the old Nokia 3310? Couldn't the games utilize the C, select and arrow keys on top?

(Not that I plan to use 16 buttons necessarily, mostly curious.)

Silly question, perhaps, but are the treasures supposed to be useless MacGuffins, or can they be used as items in puzzles as well?

I don't know the actual answer here, but you could make the game as normal in PICO-8 and change the colors manually for the HTML export that you submit to the jam here on itch (it's easy enough to change the color vales in the exported JS). And you can approximate the colors better than that using the extended secret palette (one of the secret colors is #125359, for example), although you obviously can't get them exact.