Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
InevitableCheese
Jul 10, 2015

quite a pickle you've got there
I've had this thread saved for a while now, Octojam looks like a good time to start!

Adbot
ADBOT LOVES YOU

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Some time ago, I posted about noticing metadata in the disassembled ROMs for various SCHIP-era games.

A guy named Matt Squires tipped me off to an explanation for this convention:

quote:

I was into HP calculators like the HP48 in the early 1990s. The way the chip8 interpreter worked on HP calculators
was to first put the ROM on the stack, and then the user would run the CHIP interpreter. The interpreter pulled the
ROM off the stack, loaded it into address 0x0200, and ran it.

Since the ROMs were stored on the HP48 as strings, programmers realized that the first 20 or so bytes of their program
were visible as ASCII text right before the interpreter ran. That's what started the trend of putting in raw ASCII metadata
like program name, copyright info, etc. very early in the ROMs. Notice how your earliest example was in 1991, right about
the time the first CHIP8 interpreter appeared on the HP48.

This was brought up a while back, but I forgot to post it here. Thanks, Matt!

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Is octojam3 going to have a theme?

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
No official theme beyond CHIP-8; it's usually restrictive enough in and of itself.

At any rate, the Octojam has commenced! If you're participating feel free to show off your WIPs or ask for help in this thread!

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:


I hacked out a little tool that turns true-type fonts into octo code. Designed around proportional fonts with varying widths. There are a bunch of things that could be done to this, but it does mostly what I need for the moment, though I expect to want > 8x8px at some point. Feel free to make improvements. :)

It would be nice if Octo supported ASCII character literals.

Test it out at: http://johnearnest.github.io/Octo/index.html?gist=7d2d9f3301a1e8d13d85b5b10af50e1e
Code at: https://github.com/jdeeny/octofont/tree/master





Also, cool to see OctoJam stayed on the HN front page all day

taqueso fucked around with this message at 07:09 on Oct 2, 2016

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Nice! I've added a link to your tool to the resource list on the main Octojam 3 page.

In the past I avoided adding ASCII literals simply because ASCII tends to be an inefficient encoding on the Chip8; reordering characters or removing unused ones makes it possible to draw text faster and use less storage. I was concerned that if an :asciiz was available it would be the first thing everyone jumped to using rather than trying to come up with something better for their application. Having ASCII literals would, however, allow Octo's disassembler to do a better job expressing the intent of the "header comments" we've learned about recently. If there's a strong demand I guess I should just add the feature.

If the consensus is that ASCII literals should be added (opinions from other people are very welcome!), it raises several questions:
  • Should we offer null-terminated strings, unterminated strings or both?
  • Should we stick to Octo's prefix notation (:ascii/:asciiz and take a literal string until the end of the line), or just treat quoted strings as a sequence of bytes in-place?
  • What escape characters should be supported? Escaped quotes and escaped escape characters are mandatory. \n and \t could be convenient. \0 could remove the need for separate terminated/unterminated syntax.
  • Are there more exotic features for string literals which would be useful?

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Yep, using ASCII is definitely inefficient, but I wanted to keep use of the font simple because I don't provide any tools to encode strings. ASCII will be especially inefficient if the font converter gets support for sparse glyph tables (currently the table has empty glyphs wasting space). After sleeping on it, I think a decent solution is to have the font converter output constant definitions for each character that is included in the font.

: my_string 3, CH_H, CH_I, CH_EXCLAMATION
is fairly reasonable to edit and not too far from
: my_string 3, 'H', 'I', '!'

My imagined Octo character literal support didn't include string literals, I figured that could be handled in an application specific manner.

e: If octo did have ASCII string support, the font converter could include an ASCII->font-specific-encoding function in the output. It would rewrite the strings in place with the custom character encoding. It would only need to be run at startup.

taqueso fucked around with this message at 19:41 on Oct 2, 2016

Tann
Apr 1, 2009

I just realised I should post this here!

Working on a basic platformer to see if I can get it feeling nice. Had a bug in the collision code which was pretty funny.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Tann posted:

I just realised I should post this here!

Working on a basic platformer to see if I can get it feeling nice. Had a bug in the collision code which was pretty funny.



Except for the flying into space part, the platforms popping up seems like it could be a gameplay element.

Mastigophoran
Oct 1, 2016

Not exactly immortal...
but close enough
Hello Octojam fans and Chip-8 aficionados. Or similar, anyway...

It is my great pleasure to present to you a new feature for this year's Octojam. As you may have read in the What's New This Year section, last year compatible classic Chip8 games were shown running on real 1970s hardware, thanks to Doug Crawford, a retrocomputing hobbyist who happens to own a COSMAC VIP and is also a good sport! This year, we have taken a giant leap into the future to expand our hardware support...

The year is 1991. The graphing calculator has emerged as the platform for idle minds to express themselves. People still use newsgroups to exchange ideas and information. The HP-48 calculator has made itself known as one of the popular devices of the era. Yadda yadda yadda. Superchip:



This year, InternetJanitor and I have conspired to obtain an HP-48. You may remember years past that there was some conversation about superchip - we didn't really know much about how it performed on hardware, how fast it might be able to run, how it really worked. This year, all that has changed. Several months ago I obtained a lovely example of an HP-48S - the first (and cheapest & slowest) HP-48 calculator created, in about 1991. Around this same time, Andreas Gustafsson created a Chip8 interpreter for the calculator (called Chip-48) - this was a standard Chip-8 interpreter. Subsequently Erik Bryntse expanded this program and created Super-Chip, initially released as version 1.0 and later a version 1.1. The spec that you and everyone else are familiar with is that for 1.1, which added the scrolling operations as well as speeding things up quite a lot.

Since then we've discovered quite a lot that we didn't know about superchip. I've tried to document everything I've learnt about it over on github here. This year, I'll be supporting the jam by running any superchip compatible games on my HP-48, and so it's important to work out what compatibility really means. Kinda as a hobby, I have been working on modifying the superchip 1.1 binary for the calculator to create a version with far fewer quirks, so that more programs can be run on it (especially those from previous Octojams) - I've called this version Superchip C.

At current, I have the following available to me: Chip-48 (c48), Superchip 1.0 (sc10), Superchip 1.1 (schip) and Superchip C (schpc), and they display the following quirks.

For most intents and purposes, Chip-48 and Superchip 1.0 behave identically, excepting that sc10 has all superchip instructions except for the scrolling operations. Please pay attention to bolded sections.
  • <<= and >>= modify vx in place and ignore vy.
  • load and store operations increase I by number of registers - 1.
  • clip sprites at screen edges instead of wrapping.
  • 4 high bits of target address determines the offset register of jump0 instead of v0.
  • 16x16 sprites work in hires mode only.
  • Roms can only be 3583 bytes maximum (1 byte remaining).
  • No hex characters in large font
  • The buzzer actually does make a noise that I will have to hear with my ears.

Superchip 1.1 expresses the following quirks:
  • <<= and >>= modify vx in place and ignore vy.
  • load and store operations leave i unchanged.
  • clip sprites at screen edges instead of wrapping.
  • 4 high bits of target address determines the offset register of jump0 instead of v0.
  • 16x16 sprites work in hires mode only.
  • Roms can only be 3583 bytes maximum (1 byte remaining).
  • No hex characters in large font
  • Sprite collisions will store number of rows that collide in vF. Test vF <> 0 instead of vF == 1.
  • Sprite rows that run off the screen downwards vertically will also be added into vF, even if sprite row is empty.
  • The buzzer actually does make a noise that I will have to hear with my ears.

Superchip C (currently) expresses the following quirks:
  • clip sprites at screen edges instead of wrapping.
  • 16x16 sprites work in hires mode only.
  • No hex characters in large font
  • The buzzer actually does make a noise that I will have to hear with my ears.

If you make a game using superchip or below instructions this Octojam, I should be able to show it running on the HP-48. You'll get bonus points from me if you opt to support either of the original Superchip 1.1 or 1.0 binaries from 1991 - you'll need to enable the relevant quirk modes in Octo, or if you have enough space in your rom, we can work out how to make it compatible. You'll get even more bonus points if you manage to make a game that works with the more unusual quirks, perhaps even try to make use of them. You'll get even MORE bonus points if you manage to find something else that is broken in Superchip that I so far have not! I hang out on the #sagamedev IRC and am on the sagamedev Slack server as Chromatophore, if you want to double check compatibility at any point during the jam or just get more information about what I've been up to. There is a lot of information on my github about the individual quirks and how they were discovered, and how I worked out how to fix them for Superchip C, but I'm more than happy to talk about them and anything else I've discovered if anyone wants to know about them. I'll be posting more here about my setup and what I've learnt, more than likely.

I talked a little about not knowing how fast schip is earlier, but didn't expound on it. Thanks to taqueso's earlier posts and creativity, we actually have a benchmarking tool for Chip8. I took this and slightly modified it to work on the HP-48. There is a possibility I have upset it's calculations somehow, so I'm going to run the original version with Superchip C later, but as of right now, ballpark speed figures for superchip are 0.8kOps in lores mode, and 1.3kOps in hires mode. This is the rough equivalent of 14 cycles/frame and 20 cycles/frame respectively. However, on real hardware, graphical operations are the slowest operations you can perform (this applies to the VIP too), and CMark77 is entirely graphical - it would be a little helpful if we had a more computationally oriented benchmark to compare with as well, as most likely the calculator is running faster than the figures above: for example, my superchip game from last year, Octopeg, is quite playable and feels like it's running at around 30 cycles/frame. There is also another version of this calculator, the HP-48G/HP-48GX and HP-48G+ - these calculators have a CPU that is twice as fast as the 48S, but are not contemporary with when Superchip was written - they're only about 2-3 years newer though so it isn't unreasonable. We're currently not sure how much faster superchip would actually run on those devices. Hopefully this information is helpful to you when designing your games.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Awesome work Mastigophoran!



I wanted a PRNG so I could save state and 'replay' earlier sequences of numbers, so I implemented a 64-bit LFSR based PRNG:
https://github.com/jdeeny/octo-lfsr64

I'm sure this could be better, I would love comments or tips on improving the quality of the output. It does OK with ENT but it doesn't pass everything from CAcert's test

Buffis
Apr 29, 2006

I paid for this
Fallen Rib

taqueso posted:

Awesome work Mastigophoran!



I wanted a PRNG so I could save state and 'replay' earlier sequences of numbers, so I implemented a 64-bit LFSR based PRNG:
https://github.com/jdeeny/octo-lfsr64

I'm sure this could be better, I would love comments or tips on improving the quality of the output. It does OK with ENT but it doesn't pass everything from CAcert's test

For a simpler LFSR PRNG, I implemented the naive implementation of
http://codebase64.org/doku.php?id=base:small_fast_8-bit_prng
in Octo a while back. It's like 4 lines of code.

https://johnearnest.github.io/Octo/index.html?gist=d63c4305a0e2d079f6a0186bfe15706d
(Look at getrand. reserves the registry vd for the random number generation target)

Dr. Stab
Sep 12, 2010
👨🏻‍⚕️🩺🔪🙀😱🙀
I'm having a bit of a problem with audio sync.

http://johnearnest.github.io/Octo/index.html?gist=e5626b6bfc50473d98ff8d13824e0419

For me, this stays in sync as long as it never lags or pauses. If I wait 1 minute, then pause, a whole bunch of sound will play while it is paused. It seems like as long as sound is continuous, the time at which I tell a sound to play and the time at which it actually gets played drift further and further apart as more sounds are queued to play.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Dr. Stab posted:

I'm having a bit of a problem with audio sync.

http://johnearnest.github.io/Octo/index.html?gist=e5626b6bfc50473d98ff8d13824e0419

For me, this stays in sync as long as it never lags or pauses. If I wait 1 minute, then pause, a whole bunch of sound will play while it is paused. It seems like as long as sound is continuous, the time at which I tell a sound to play and the time at which it actually gets played drift further and further apart as more sounds are queued to play.

What do you mean by pause? Hitting 'I'? The buffer will be played out even if your code doesn't run to put more stuff in it. At least for me on chrome, it is only playing a little bit more, not a bunch. You are doing better on the audio than I ever did while messing around. I couldn't seem to get things to sync right to play the next buffer-full without hiccuping.

Buffis
Apr 29, 2006

I paid for this
Fallen Rib

Dr. Stab posted:

I'm having a bit of a problem with audio sync.

http://johnearnest.github.io/Octo/index.html?gist=e5626b6bfc50473d98ff8d13824e0419

For me, this stays in sync as long as it never lags or pauses. If I wait 1 minute, then pause, a whole bunch of sound will play while it is paused. It seems like as long as sound is continuous, the time at which I tell a sound to play and the time at which it actually gets played drift further and further apart as more sounds are queued to play.

Is that a jubeat clone playing PONPONPON?
Thats pretty drat nice

Tann
Apr 1, 2009

Been working with a friend and we're getting somewhere with level generation now!



Keep jamming everyone! And there's plenty of time to start now if you haven't already.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Tann posted:

Been working with a friend and we're getting somewhere with level generation now!



Keep jamming everyone! And there's plenty of time to start now if you haven't already.

Looks like it is coming along nicely! Are the levels being generated from hand-made elements?

Mine is starting to take shape too. If anyone wants to help with sprites, PM me, that would be wonderful.


I added a profiling feature to Octo a couple days ago, so now you can hit 'P' to see what parts of the program are running the most.

It currently groups instructions based on the label, but it doesn't combine groups if there is a gap between them. That mostly happens with if statements that are always false. I feel like I should change it so those are combined as well. Thoughts?

taqueso fucked around with this message at 16:04 on Oct 13, 2016

Tann
Apr 1, 2009

taqueso posted:

Looks like it is coming along nicely! Are the levels being generated from hand-made elements?

Yeah, it stitches together chunks based on entry/exit point!

taqueso posted:

Mine is starting to take shape too.

Looking good, it's almost a shame to see you use extra colours because otherwise you can run it on original hardware!

taqueso posted:

I added a profiling feature to Octo a couple days ago

This is super cool and I'm looking forward to using it! I'll let you know once I start profiling :)

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Tann posted:

Yeah, it stitches together chunks based on entry/exit point!
The effect is really nice, it feels like the whole level was hand drawn as one piece.

Tann posted:

Looking good, it's almost a shame to see you use extra colours because otherwise you can run it on original hardware!
Nah, it is using xo-chip extensions all over, plus it is more than 4k so I need i to be 16-bit. What it needs is more color, I just haven't gotten around to it yet :)

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Here is what I've been working on for Octojam - https://johnearnest.github.io/Octo/index.html?gist=a2466cd36cae59f8870bfe2ef9ab2661 I'm starting to feel crunched for time and thought I'd post it and get some feedback or maybe find someone that wants to help.

I wanted to make something really large (in chip8 terms) and this is already up to 9kB. It is supposed to be a roguelike, but it doesn't yet have any monsters to fight, so right now it is just a 16-level 64x64 tile find-the-stairs 'adventure'. QWEADZXC move around, S activates stairs. F overlays a debug map on the screen. Stair travel currently teleports you to the first down stair in the new level, instead of moving you to the appropriate matching stairs. The minimap is not yet retained when you return to a level. The hex number displayed is just debugging for in-game time. That area of the screen will eventually hold the text event log ("You hit the rat."). You can use the debug map to help find the stairs, and to show that the levels are the same when you return to them.

If anyone wants to write some code, make sprites, or really anything else at all, let me know and I'll make the github public. The octo source is created by combining several smaller modules, some that are generated by python scripts, so you don't need to edit this as a single huge file. The share link above is hacked to run at 10k cycles/frame, so it will run 10x slower in the final version (that means level load times of around a minute). There are lots of places where the code could be improved, so hopefully it will end up a little better than that.

Off the top of my head, a couple things that could be improved to make level gen faster:
  • The LFSR I posted earlier didn't have good enough output, so I changed the program to advance state several times between random numbers. The LFSR could be changed to use taps chosen for minimal correlation rather than just simply maximum period. Or it could be replaced with xoroshiro128+ or similar.
  • The code that finds the unreachable areas could be combined with the code that turns generic walls into specific walls based on the surrounding walls. The code from those functions that checks what is in the surrounding tiles could be improved with multi-byte loads.

taqueso fucked around with this message at 04:09 on Oct 20, 2016

Tann
Apr 1, 2009


Hey this is neat! I wish I could help out but I've got my hands will with my team's octo project. It's a cool base for a game. I feel like the qweadzxc controls are a bit awkward to use. I like this sort of game though so I'm excited to see where you go with it.
I love that you've hacked octo into overdrive for your levelgen :)

edit: I like the way the walls look! The controls feel a bit unresponsive though, is there much you can do to fix that?

Tann fucked around with this message at 11:14 on Oct 20, 2016

Buffis
Apr 29, 2006

I paid for this
Fallen Rib
I think I'm pretty done with my entry this year.
There's a few minor tweaks that I may end up doing, but overall, this should be done now.

I present:

Binding of COSMAC: Octoberth
https://johnearnest.github.io/Octo/index.html?gist=d3d2ecb2f0ac2075f636e7d3ec60e786

WASD to move. F to shoot.

Sortof a very simplified Isaac demake for SCHIP. Wont run on any hardware or anything (needs to run at 1000 cycles), but plays pretty alright.

42 screens across three floors with an exciting boss battle at the end!

Gonna make a more thorough tech writeup at some point as well, but there's honestly nothing insane going on or anything.

The section starting at ": room" is where the levels are stored. There's 42 levels that are 6 bytes each. Two of these bytes needs to be reset each time the game is restarted, so these get copied over the title screen on game startup, so that restoring is possible.

Pretty happy that I managed to squeeze quit a lot of stuff in there. A big 300b or so title screen, semidecent animations for ending and death. Hats, scorekeeping, multiple floors, a continue system (restart on current floor), and a bunch of other small things.

It's probably still possible to get this maybe 200b smaller or so and squeeze in more stuff, but at this point I'm feeling pretty OK with the game as is.

Try it out, and report any bugs found!

Buffis
Apr 29, 2006

I paid for this
Fallen Rib
I added the game to the octojam page and added a cover image.
Everything looks alright at the edit screen, but nothing seems to work in the submissions list.
http://www.awfuljams.com/octojam-iii/games

Maybe worth looking at?

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Buffis posted:

I added the game to the octojam page and added a cover image.
Everything looks alright at the edit screen, but nothing seems to work in the submissions list.
http://www.awfuljams.com/octojam-iii/games

Maybe worth looking at?

Probably just the issues with github/dns today, the submissions worked OK when I looked a couple days ago. Wish I could check out your submission, but no github for me right now.

Tann
Apr 1, 2009


This is super cool, great job Buffis, you managed to create something that feels like nice continuous experience within the 3.5kb limit!

I liked the use of the buzzer on hit, the enemies were cool. That hat is amazing and the boss fight was exciting, as advertised :)

It would have been nice to see some more small variations in the rooms: the starting rooms were the only way I could easily orient myself. Also there's a space you can stand that's "between rooms" and causes you to flicker back and forth.

Controversial opinion: The basic attack in this game has better gamefeel than the original!!

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
I'm working on something more elaborate, but I just whipped up a rough version of an idea discussed on IRC- a minimalist pipe-dream clone that runs in basic chip-8 at a stock clock speed:



http://johnearnest.github.io/Octo/index.html?gist=405eb32fe11acb8440bd76977617035f

This may be worth a little more polish.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

I just glanced at this the other day and didn't notice you posted more than a gif. Great idea, and the code is surprisingly short. It seems to let you connect to the middle of a piece, but I imagine it would be difficult to stop that without making it quite a bit slower.

taqueso fucked around with this message at 05:18 on Oct 28, 2016

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

I realized that you could just keep everything on an 8x8 grid to avoid connecting to the middle of a piece. And rotation could be added if you put all four orientations in the sprite table and keep them 32-byte aligned so they can be conveniently masked.

I noticed you use vX += -1 in your code. For some reason I didn't think that was possible and I've been using vX += 255 in everything I've been writing.

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Buffis posted:

I think I'm pretty done with my entry this year.
There's a few minor tweaks that I may end up doing, but overall, this should be done now.

I present:

Binding of COSMAC: Octoberth
https://johnearnest.github.io/Octo/index.html?gist=d3d2ecb2f0ac2075f636e7d3ec60e786

WASD to move. F to shoot.

Sortof a very simplified Isaac demake for SCHIP. Wont run on any hardware or anything (needs to run at 1000 cycles), but plays pretty alright.

42 screens across three floors with an exciting boss battle at the end!

Gonna make a more thorough tech writeup at some point as well, but there's honestly nothing insane going on or anything.

The section starting at ": room" is where the levels are stored. There's 42 levels that are 6 bytes each. Two of these bytes needs to be reset each time the game is restarted, so these get copied over the title screen on game startup, so that restoring is possible.

Pretty happy that I managed to squeeze quit a lot of stuff in there. A big 300b or so title screen, semidecent animations for ending and death. Hats, scorekeeping, multiple floors, a continue system (restart on current floor), and a bunch of other small things.

It's probably still possible to get this maybe 200b smaller or so and squeeze in more stuff, but at this point I'm feeling pretty OK with the game as is.

Try it out, and report any bugs found!

Finally got around to trying this out. It works really well and the player movement feels good. I managed to get through one locked door and I was feeling pretty good about that until I saw that their are 40 or so rooms in the game.

Buffis
Apr 29, 2006

I paid for this
Fallen Rib

taqueso posted:

Finally got around to trying this out. It works really well and the player movement feels good. I managed to get through one locked door and I was feeling pretty good about that until I saw that their are 40 or so rooms in the game.

42 rooms across three floors, with an endboss.

Therese a godmode constant you can toggle in the top of the source code if you arent a cool enough dude to finish it without it!

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."

taqueso posted:

I just glanced at this the other day and didn't notice you posted more than a gif. Great idea, and the code is surprisingly short. It seems to let you connect to the middle of a piece, but I imagine it would be difficult to stop that without making it quite a bit slower.

Connecting to the center of other pieces is intentional, and in my opinion adds to the depth of strategy in the game. Most tiles will leave behind one or two "junk lines" which gradually build up as obstacles you have to route around or try to cleverly make use of. It started as pipe dream, but it's spiraled off into its own different game idea. This happens frequently when I try to distill an idea down to CHIP-8 limitations.

For the record the reason vx += -1 works is because the Octo assembler interprets negative numbers as Two's Complement. This is a little surprising and confusing at first (especially if you aren't familiar with two's-complement), but it's extremely convenient and tends to make it easier to express the actual intent of your programs. Still need to be careful about overflow behavior and how "signed" numbers work when comparing the values of registers with < > <= >=.

Dr. Stab
Sep 12, 2010
👨🏻‍⚕️🩺🔪🙀😱🙀
I did a little more work on my jubeat clone to give it some polish.

http://johnearnest.github.io/Octo/index.html?gist=864826f7382ba01aef51a426df058871

nearly ready for submission.

TomR
Apr 1, 2003
I both own and operate a pirate ship.
http://www.awfuljams.com/octojam-iii/games/ghost-escape

I think I'm done. Haven't had a whole lot of time this year. Probably the fastest I've ever made a thing.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Had to cut a bunch of ideas to get it done in time, but here it is- Black Rainbow:



http://johnearnest.github.io/Octo/index.html?gist=0f2fc95030a892943e4844377120a867

Explore a procedurally generated thoughtscape.
Observe and encounter many... things...

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

I got so much crap done in the last two days but it still isn't quite complete.
http://johnearnest.github.io/Octo/index.html?gist=2481036c7a85b4b9c9b7a7612ca36901

It loads in the background now, but it makes keypress response nasty while it is happening.



secret hacked fast version shhh

taqueso fucked around with this message at 08:15 on Nov 1, 2016

Mastigophoran
Oct 1, 2016

Not exactly immortal...
but close enough
Well done everyone who managed to get their submission together, especially in the small hours of last night! There's some really great looking games this year! Here's a quick inventory based on a rough examination of the submissions:

1970s era (COSMAC):
Chipquarium - aquarium simulator
Ghost Escape - Army alignment simulator, great story.
Fuse - Keep the fuse burning by adding more (Apparently a pipe dream clone)
8ce 8ttorney - Phoenix Wright style game, has a 2nd and 3rd disk
Shooth3rd - Shot targeting puzzle game. Creator also apparently has access to a COSMAC VIP.
MasterMind - "A solid implementation of mastermind"
Monty Hall - a cute demonstration of the Monty Hall Problem.
(outside system spec:)
Planet of the 8s - side scroller where you dodge 8s. Has a high cycle speed but might be ok.
Hedgehog the Drug Dog - drug sniffing pattern matching game. Has a high cycle speed but might be ok.
Snake - an unfinished snake game, has a really high cycle speed.

1990s era (SUPERCHIP):
Black Rainbow - classy SCHIP roguelike.
Sens8tion - an SCHIP gun kata game.
(outside system spec:)
Knight - Chivalry simulator.
Binding of COSMAC: Octoberth - An Isaac clone

20XX era (XO CHIP):
OctoCrawl - a roguelike game with a massive amount of code and content. Really looking forward to a Post Mortem on this one.
Kesha Was Biird - Holy poo poo, we have a sequel to Kesha Was Bird - a Little Awful Jam game from earlier this year. (These guys obfuscate their roms so no source code to review here)
Skyward - a gorgeous and comfortable to play vertical platformer.
jub8 - A terrifying rhythm game, with additional links/disks for additional songs.
(OctoRoads - a game that missed the deadline but was shared on IRC.)

Hopefully this list is helpful in some way, Superchip wasn't a popular target this year, I think I'm going to be going through the Octo back catalogue and show some of the previous years' games.

SystemLogoff
Feb 19, 2011

End Session?

So, working on 8ce 8ttorney was a lot of fun, and it's cool knowing that it's possible to make something like phoenix wright.

Space limits (to make it valid on real systems) was a killer though, and so was real life catching up to me.

If anyone wants to use my interesting text system, here is the javascript code I used to convert lines to the matching values. http://pastebin.com/spRsZP9T

Next year I want to do a SuperChip game though. I have an idea for a first person grid dungeon crawler. :3:

TomR
Apr 1, 2003
I both own and operate a pirate ship.
It was a really great surprise to see so many great entries last minute!

Tann
Apr 1, 2009

I've played through all the entries and written a tiny review of each! Play them for yourself here!

Chipquarium
Very cute, I like the colours. I'm looking forward to seeing it played on the Cosmac, good job on getting it working at 7 cycles/frame! I particularly liked the rock/paper/scissors game, it works really well having it timed instead of needing a "confirm" key.

Snake
Good job on giving it a go! Sorry you couldn't get it working how you wanted, octo takes a bit to get used to. I saw a bit of the LEAKED OCTO STREAM and IJ gave some good advice. Also I extended my snake way too far and one time instead of crashing it started drawing cool junk all over the screen, octo bugs are sweet!

OctoCrawl
:hfive: fellow 1000-cycler. I'm a fan of nethack so I'm glad you've made this! The colours you've picked are really nice and give an interesting aesthetic to the game. The loading screen was also cool, I'm impressed you managed to maintain a loading animation whilst loading the map.

As for the actual game, the controls are unfortunately very unresponsive for me which kinda ruins a lot of the fun. The enemies are super cool and the minimap is really nicely done. I like how the walls look, although unfortunately I got killed fighting a swarm of invincible wall-sections, I love octo bugs :).

The Binding of Cosmac: Octoberth
Wow, awesome job buffi. I think I raved at you on irc about how much I enjoyed this but I'll put it here too! The controls feel great and it feels like a "real game". Great job getting it under the 3.5kb. The controls feel great, better than the original BoI in my opinion! I totally beat that boss first try. Collecting hats is such a cool mechanic to see done in octo, I'm inspired to try something like that next time!

I would have liked to see a little more variation in the room backgrounds, it was easy to get lost as I could only navigate by doors and the "level n" room. Also in the bit of the octo stream I saw it was super funny to see your title screen destroy the video quality :)

Knight
The title screen looks really clean and explains stuff nicely! The story of the game was funny to read. The gameplay is completely bonkers. I don't really know how to used attack or dodge effectively. I don't feel like I ever won by skill but it did feel cool to finally beat Nefarious Richard!

Kesha Was Biird
Wow, I am a huge fan of the now cross-jam Kesha series! The use of sound is fantastic here, you've really mastered using primitive 1-bit sound to great effect. The surreal visual novel genre works really well in octo and it was very cool to play through, even though I didn't really understand everything. The dialogue with the character portraits look great. Some of the environments looked a little rushed compared to the original but they definitely fit in the style. I'm really looking forward to your future work!

Ghost Escape
I think I've played a game similar to this and it fits octo super well. I am a huge fan of this sort of game and I spent probably about half an hour determined to beat this! I ended up cheating a bit by setting it to 1000 cycles/frame. It felt really good to beat, good job!

Fuse
The first entry from our octo overlord, InternetJanitor himself! I really really liked this game, the pipe dream mechanics fit so well with octo and having multiple parts per piece adds a lot of interesting strategy to the game. After playing a bunch, I did get a bit frustrated by how difficult it was to work out where the path would go in the case of multiple options being available. If it weren't for that, I would have probably spent a long time trying to get a sick highscore.

Black Rainbow
InternetJanitor's second submission! I really liked how atmospheric it felt. The enemies look really cool and foreboding, I can imagine this game scaring kids back in the day! It was fun to explore and learn how the traps work and pick up the gems. I played through a couple of times and I couldn't really work out the scoring system so I may be missing a secret ending but I had a lot of fun regardless.

Planet of the 8s
8/10 pun title, very good. I like the colours and there's a bunch of nice visual polish in the game. The actual gameplay is a bit repetitive/frustrating but I eventually learnt how to get a decent score. Nice job!

8ce 8ttorney, disks 1-3
I absolutely love the idea of this game being on multiple disks. The graphics are really nicely-done and great job keeping it at realistic emulation speeds. The dialogue felt a bit disjointed and hard to follow due to the small text space and conciseness but the whole UI looks really great. The story was funny and I enjoyed playing through, excellent work!

Hedgehog the Drug Dog
I love the way you've represented smell on the screen. It took me a couple of plays to get to grips with but it was fun trying to sniff out the correct person! The ending to show the actual person with drugs was nicely done. It was a bit tricky however to know which person you're selecting though.

Shooth3rd
I love bouncy games and this one works super well with octo. Excellent job getting it to run at 7 cycles/frame, it feels pretty responsive too! I am really impressed that you got it running on the original hardware and the video you made was amazing. I hope to see another submission from you next year!

Skyward is my teams' game!

Mastermind
Nice job on the fairly-realistic cycles per frame. This game is a lot to fit in the small area given by octo but it's a good, clean interface and the symbols instead of colours work well. I started off by not quite getting what was going on and making a bunch of random guesses but near the end, I re-read the rules and studied hard and won! It felt really good to work it out.

Monty Hall
I love probability and maths problems so it was a delight to see this one! Plus ghosts instead of goats was a nice seasonal change! I managed to get 17/20 with my superior probability skills.

Jub8
It is amazing to hear 1-bit music and this game showcases it really well! The menu is amazing and the in-game graphics work so well. I thought it was ok at rhythm games but this sure proved me wrong! On the easiest song I could find, it felt really cool to rack up a small combo. Good job on sorting out the syncing issues you were having, it seemed perfect to me when I played through.

Sens8tion
This game is really cool and stylish. The interactive intro sequence is fantastic. The game is interesting and tricky and the sprite work is really nice. I played this a couple of times and then watched a clip of Equilibrium and you've nailed the feel of that weird film so well, fantastic work!

Adbot
ADBOT LOVES YOU

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
In case anyone's interested, I finally got around to finishing my postmortem for Black Rainbow:

https://github.com/JohnEarnest/Octo/blob/gh-pages/docs/BlackRainbow.md

I began writing it shortly after the jam ended, but it always seemed to get pushed to the bottom of my todo list. I think I still managed to capture the major salient points. If anyone has any additional questions feel free to grill me.

  • Locked thread