A downloadable game

Download NowName your own price

10,000 Levels to beat with 5 different tiers of difficulty, all in the palm of your hands.  Built for the original 1989 Game Boy and with portability in mind, come back to where you left off at any time with your progress saved each time you beat a level.  Do you have what it takes to beat every level?  


I'm really happy to bring this recreation of the original "Tokyo Parking" board game to the Game Boy.  Many of you have played recreations of this game in other mediums and I was surprised nobody (to my knowledge) remade it for the Game Boy.  Each level is beatable and there's no duplicate levels.  The levels in their compressed form come in at anywhere between 2-16 Bytes which is how I was able to get so many non-procedurally generated levels on a single Game Boy cartridge.  The ROM is 256KB which is 1/4th the size of Pokemon Red so I could technically drive this point further and still have it run on original hardware.


Because there is so many levels, you might find the earlier ones too easy.  I suggest navigating to the "Intermediate", "Advanced", or even "Expert" levels if you find yourself not challenged enough by the earlier levels. 


Game by: Dylan Maithonis
Music by: Justin O'Brien

Developed for GB Compo 2021
Made with GBDK 2020

StatusReleased
Rating
Rated 4.5 out of 5 stars
(4 total ratings)
AuthorMaithonis
GenrePuzzle
Tagsblock, Game Boy, rush-hour, slide

Download

Download NowName your own price

Click download now to get access to the following files:

INTERBLOCKED.gb 256 kB

Development log

Comments

Log in with itch.io to leave a comment.

¿final version?

(+2)

Just finished all 10000 levels. This game kept me from checking out any of the other entries for GB Compo 2021 because it kept me busy so long.

I agree with an earlier comment saying it's not particularly difficult, but it's good as something to do while watching movies and such. The difficulty feels like it tops out somewhere in the Intermediate range, after that it's mostly minor variations on the same few layouts with only a handful of levels that felt unique. That's not necessarily a bad thing though - for a time-waster with no progression, padding like this is welcome.

IIRC level 600 (or maybe 700? one of those) is solvable in a single move, I think the procedural generator goofed there xP

I'd love to see a couple of additions:
- A "reset" option in the in-game menu. Sometimes resetting makes it easier to see an alternate approach. A reset option would make this more convenient than going back and forth between levels.
- A random mode that selects a random level from among the 10000 after every time you clear a level, instead of going to the next one. Mixing difficulties should make a more varied experience for replays.

Lastly, I repeatedly ran into a bug: after playing a while, the cursor would sometimes start lagging. This would eventually clear up, but every time this happened, the cursor would appear glitched out starting with the following level. The sprites making it up would be shown spaced out much more than usual, making it appear huge, or, less frequently, the cursor would appear to be 16x16, with the middle segments missing. It would work normally aside from the glitched appearance. Changing levels wouldn't fix it (but the bug could happen again, leading to a potentially differently looking glitched appearance), but resetting the game would. I used VBA to play, which I know isn't a great emulator, perhaps it's some error with the emulation in that, I haven't tried using better emulators for this. Since it happens after playing for a while though, I suspect it might be some kind of overflow.

(1 edit)

Hi thanks for the review.  I can't believe you beat every level.  I didn't expect that to happen but it makes me really glad someone was able to accomplish that. 

I spent a fair bit of time with trying to scale the difficulty and you're exactly right towards the last two sets of difficulty they do feel very similar and once you get good with the longer move puzzles it gets quite easy. 

Thanks for pointing out the issue in level 600. I accidentally deleted a char (when commenting my code?) and so the bottom rightmost block didn't appear.

There actually is a reset button but I guess I didn't make it obvious enough.  Pressing Select resets the level.

The random mode is a nice idea.  I'll think about adding that.

The cursor bug is weird I'm not sure how that happened.  During development there was some cursor issues exactly like you described and I can't exactly remember what caused them but it had to do with the level loading out of order.  It could very well be an emulation but I think you're right that it's a memory issue.  You might not of noticed this but I break up the levels into banks and try to mitigate the loading time by using constants within the banks.  So for instance, level ~1452 should take a bit longer to load then the level immediately after it. (Or something like that it's been a while since I comprehended the code).

Do you have any examples of how that bug first gets triggered?  It could have to do with bank switching so it could be a specific level completion that triggers it that I never caught.  How many levels do you beat before it happens?  Did returning to menu fix it? By resetting the game I assume you mean cycling the power.

Thanks for enjoying the game so much it really warms my heart!


Oh, I didn't try select to reset. Thanks!

About the cursor bug: I *think* the number of levels before it happens varies, but it's possible that just depends on what level I was playing last time I reset or how far I was from a "problem" level when I resumed play on any given day. It usually took a good while to happen but happened regularly enough that I got used to it, but I wouldn't be able to tell you how many levels it took. Somewhere on the order of 100-200 maybe?

I did mean power cycling fixes the problem when I said resetting. Unfortunately I don't remember whether returning to the level select fixes it, and I never tried returning to the menu. I ended up always resetting for a reason, but it's possible that reason was simply speed. Naturally, playing through over 200 levels just now (1-133, 4521-4661) to see if I could trigger the bug didn't achieve anything xP

It's weird that the glitch is preceded by laggy behavior in the cursor during normal gameplay. The cursor becomes laggy in the middle of playing a level, rather than right after it's first loaded. This symptom makes me doubt it's related to the way the levels are stored. I also don't remember the glitch happening even once during the early levels, so I wonder if perhaps it's connected to time spent playing a given level, or time spent playing in a given session.

I'm sorry that I don't have more specific information! I'll reply again when I have something to share.

(2 edits) (+1)

Thanks that's a ton already.  Maybe if I decide to try to fix it I'll open it up in a debugging emulator and try to figure out if something is leaking.  The things you describe are weird because I don't think there's too much if any stuff that persists through the levels.  I might remember once having something akin to lag but I don't think it was related at all and it was such a glaringly easy fix I have very little recollection of it.  I also don't remember ever having the cursor bug out during a level it usually happened on loading.  I will think about it it lol.

(1 edit)

Played a few levels today from where I left off yesterday, and hello glitch :D I didn't notice any cursor slow-down before this one, but navigating the menu to get back to the level select did feel laggy and eventually got unresponsive. Level 4686.


Getting back to level select, that was also glitched. Going to other levels, even on other pages, did not get rid of the glitch.


Going back to the main menu did not fix the glitch. I guess this is why I got in the habit of power-cycling.

When loading a level in this state, some of the background is corrupted too:


Definitely some kind of overflow, but good luck finding where xP

Thanks for all of this.  Yeah I have no idea about this one.  I've seen the cursor glitch before but usually it happened when there was some issue on loading where an input got buffered or something.  It never corrupted the menus though.  There's definitely something persisting which is unfortunate.  How many levels did you play before 4686 before it bugged out.  I tried beating the level immediately before it and couldn't reproduce it.  I wonder if there's a way to export the state of the bug and I can look for anything odd because yeah IDK.  Something else is it could have something to do with the game mishandling the sram file and getting confused but I doubt that.  I'll look into it.

(+1)

Thx for the game.

This is a Gameboy version of a game I've seen on touch screen smart phones. A really good translation. Quite fun

(1 edit)

Thanks.  Yeah, originally before the smartphone games it was a real life board game!

I didn’t know that! Cool history

This is pretty fun! Not sure how you made 10000 non-procedurally-generated levels, that's amazing :-o

(1 edit)

Thanks! Technically they ARE procedurally generated but they are done so by a much more high powered processor then the gbz80 would be able to do.  I suppose one could make the game generate levels but I don't think they would be good/complex/varried.  What the Game Boy is doing with the levels is loading the premade levels from rom. This required them to be very very compressed and did that by making use of every single bit to represent data.  36 different block positions with 4 different block types.  That is 1 byte.  Then the keyblock's position (only 4 not 36) represents another 2 bits and so the rest of the keyblock byte doubles as a header :)

Ah, OK that makes sense. Nice idea for compression! So you're saying 1 byte per block, and the key block position. Then a block count? Or a bit to represent the end of the level data? What's the largest level's size? (Sorry for all the questions, I just really enjoy this stuff :-)

(4 edits)

No, I love great questions!  Yes exactly 1 Byte per block.  1 Byte for the key block and header.  I basically search through each Byte for the header flag. When I find one I loop that 122 more times, it then stops at header 123 and then loads the blocks after it until the next header/keyblock byte.  If you're curious I have a header byte for level 10001 so that it knows how to load level 10000 :). You might think that it's slow to do that, but it's about 1300ish levels in each rom bank and I have constants to determine which rom bank to search based on which level is being loaded.  So at most it takes maybe half a second to find the correct level to load.  I think my largest level is 16 blocks but I can't remember with 100% certainty. 


(+1)

That's really impressive coding

dang this is a good time waster. not really challenging but a good button pusher for sure. ill put this on my everdrive and play it to pass time :>

(2 edits)

Thanks!  I'm sortof surprised you say it was too easy especially the later levels.  Around level 3000 is should jump in difficulty quite a bit.  The last 1000 levels should be the hardest difficulty and for most people who aren't acquainted with the this style of game it should be quite challenging.

i got kind of a mega brainWhomst Is the Smartest on 4chan?

(+1)

10.000 levels!!! I won’t finish at age 80 either. :) Great game!

(1 edit)

Thanks lol.  Yeah I feel like once you get good you can do the levels pretty quickly but it still could easily take 400+ hours to beat.  I put that into Pokemon Sapphire back in the day :P