Porklike.gb - wurst comes to worst

A port of the wonderful Porklike, created by Krystian Majewski, to the original Game Boy! Please see the original pico-8 game at https://krystman.itch.io/porklike for more information.

Game

Porklike is a classic, turn-based Roguelike with minimalist lo-fi aesthetic. Enter the tower of Wurstlord. Can you make it to the top and steal his legendary Kielbasa? 9 floors of dangerous traps and enemies await you. Only if you move carefully and master your character's abilities will you become the champion of Porklike.


ActionGame BoyKeyboard
Move characterD-PadArrow Keys
Inventory/ConfirmA buttonX
CancelB buttonZ
Start GameStart buttonEnter
Change palette(emulator only)[  and ]
Rewind time(emulator only)Backspace


Making Of

Porklike.gb was ported by Ben Smith, with permission from Krystian Majewski. The game is written in  GBDK2020 in C, with some hand-written assembly. You can find the full source code at https://github.com/binji/porklike.gb.

Credits for the original pico-8 version follows:

Porklike was written and designed by Krystian Majewski, an Independent Developer and the host of the Lazy Devs Academy video channel.

The music was composed by Sebastian Haßler, a music composer for film, TV and videogames.

The environment art and some characters were inspired by the work of the pixel artist @pixelartm and used with their permission.

The artwork of the enemies was inspired by the work of the pixel artist @kirai_s and used with their permission.

Please see the original pico-8 game at https://krystman.itch.io/porklike for more information.

Releases

v1.0.12:

Upgrade to newer gbdk

Fixes:

  • Fix gbc rom so it works again

v1.0.11:

Fixes:

  • Exclude CGB code from .gb file, so it works properly on CGB devices

v1.0.10:

Fixes:

  • Fix GBC palette fading; without this, the game doesn't run properly on accurate emulators/hardware.

v1.0.9:

Fixes:

  • Update fogged/invisible mobs so their x/y position is updated, and they perform triggers. This makes invisible ghosts flash in the correct place when you kill them.

v1.0.8:

Fixes:

  • Fix some sight bugs when blinded:
    • Normally all 4 squares around you are unfogged. Then if any of those squares is not "opaque" then it unfogs any walls nearby.
      the code unfog the wrong neighbors.
    • Check whether surrounding squares are in bounds (otherwise will wrap to other side)
    • Monster's vision was accidentally seeing through walls when you're blind

v1.0.7:

Fixes:

  • Disable start button as cheat to skip levels
  • Place chests properly (proper fix for v1.0.6)
  • Only repeat direction buttons and A, not B/select/start

Improvements:

  • Implement gameboy color version

v1.0.6:

Fixes:

  • Pack enemies into plant rooms if they can't all fit in other rooms
  • Fix infinite loop trying to place a chest in a 3x3 room that already contains the entrance stairs

Improvements:

  • Increase the maximum number of mobs to 40
  • Reduce the number of disjoint sets to 52

v1.0.5:

Fixes:

  • Floor 0 would be filled with random mobs when dying while blinded and restarting

Improvements:

  • Added a wurstchain. This keeps track of how many times you've beaten the game in a streak. After you beat the game, your streak will be saved, but as soon as you open up the chest on floor 0, your save will be deleted! You have to beat the game again before it will be saved.

v1.0.4:

Fixes:

  • Fix bug when grappling to map extents. Now you go all the way to the wall.
  • Fix bug where mob AI is skipped. If a mob was stunned and died in the same turn, it would pass the stun to the mob that took its slot.
  • Fix is_valid() function so it works correctly. Now a pickup will drop as close as possible to the chest it came from. It can also land in the upper-left corner.

Improvements:

  • Better randomization of level. Mix in entropy on level 0 so levels 1-9 are more random.
  • Add a joypad repeat rate and buffered input, like the original porklike.
  • Big optimization to the sight() function, so it runs ~3x faster in some cases.

v1.0.3:

Fixes:

  • Clear DALIGNED and DATA areas on startup. This way emulators that randomize memory will work properly

v1.0.2:

Improvements:

  • Some small optimizations to enemy movement AI

v1.0.1

Fixes:

  • Don't generate levels where the rooms (and gate) are not connected. This prevents generating unwinnable levels.
  • Fix unfortunate variable reuse in voids(), which prevented some void regions from being created
  • Fix gate map 5, which was being placed at the wrong location in the map (needed to be moved down two cells)
  • If it's not reset, the pickup can be used after gameover, or if it has been exhausted.

Improvements:

  • calcdist_ai() is faster, should help make mob AI's move more quickly
  • Use Left+Start on the equipment screen to display the current level's random seed. This is useful in case bad levels are generated, I can recreate them locally.

v1.0.0:

  • Initial Release for gbcompo21
StatusReleased
PlatformsHTML5
Rating
Rated 5.0 out of 5 stars
(10 total ratings)
Authorbinji
GenrePuzzle
TagsDemake, Game Boy, Game Boy ROM, Roguelite

Download

Download
porklike.gbc 64 kB
Download
porklike.gb 64 kB
Download
porklike.pocket 64 kB

Comments

Log in with itch.io to leave a comment.

Thanks a lot you are awesome ! I really like porklike on the Pico8 and your devlog video on youtube. Now I am fond of GBDK so I found your port on game boy and you even provide the source code. This is really nice. I will study this :)

Thanks again

(1 edit)

Hey! It seems that both the GB and GBC versions run fine on a regular GB (DMG), so I'm a little confused as to why there are two different versions? The GBC version and the GB version look identical to me when running on a GB.

However, the GB version doesn't seem to work on a GBC - after the initial fade, the screen remains black, so there seem to be some palette issues there. But, again, I'm not sure what the GB version is really for, since the GBC version runs on a GB.

(The reason I wanted to try the GB version on a GBC was to play around with different palettes, so that could be one reason for its existence!)

Thanks for letting me know! I believe I've fixed this in the latest version, please try out the .gb file. You're right that it's a little unnecessary to include, but it is kind of nice to be able to play with the palettes, I suppose!

nice

When playing on my GBC via a EZFlash Jr, my character and all enemies appear to be invisible except when they are in the process of moving.  It, uh, adds a level of difficulty compared to playing in the browser!

Oh, strange. Are you using the gameboy or gameboy color rom? And which version?

That was the gbc rom, I tried the gb rom just now and with that the screen is entirely black, although the music and sound effects still play.  I just downloaded them a couple days ago so they should be the current version.

Doing some more attempts at playing it and it gets wierder - most of the time sprites are black when still and yellow when moving, but occasionally on moving to a new floor, they will be dark grey when still instead, so at least I can see them.  And dying and starting a new run tends to scramble all the colors of the sprites, background, and menus up as well!  This flashcart does not seem to like this game.

Yeah, that sounds really weird! I know that it worked on real hardware at some point, since it was tested for the competition. But it's possible that I broke something since then. I also realized that the itch.io version was out-of-date and has a couple of bugs that have been fixed, so I've updated to v1.0.9. Maybe that will work better?

Thanks for letting me know either way!

OK, so it turns out the emulator I was testing (my own) wasn't handling palette loading properly! So when I tested on SameBoy and Emulicious, which are way more accurate, I was able to see the bug you mentioned. v1.0.10 should have the fix. Thanks again!

New version works great!

Is there a ROM for this?  I would love to put this game onto a flash cartridge and play Porklike on my GameBoy Advance SP!

Glad you like it! You can download porklike.gb above, or from GitHub directly here: https://github.com/binji/porklike.gb/releases/

Excellent work on this port! I'm enjoying it.

Thanks!

Absolutely love this game!!  The music is great and it feels so smooth and polished.  Can't stop playing:)

Yeah, it's pretty addictive! How far have you gotten?

i interested when first played this game

Glad you liked it!

(+1)

Really awesome work here!!!

(+1)

Thank you!

Loving this game! It's soo good!! I could spend hours on end exploring this world!

Thanks! Yeah, I really like the design, it feels like there are a lot of clever things you can do to win :)

(1 edit) (+1)

This is really well done. Runs like butter. Hope you place well!

(+1)

Thank you! It still lags a bit too much for me (processing monster movement takes a few frames) -- I wanted to move this calculation to when the player is animating, but didn't have time.

How would you do that?  Split up the processing between the several frames of animation?  That sounds rough.  Also don't they move at the same time the character is moving?  So I'd assume they HAVE to be calculated after input but before movement happens.  Unless you calculate all 4 potential next scenarios before input but that probably wouldn't play well with item usage.

The player has 8 frames of animation after the user presses a button, but before the monsters take their turn. So I was thinking I could split up the AI calculations over these 8 frames, perhaps using LY as a signal to bail out for this frame. For the most part this would work since the player's new location is updated immediately. The only trouble is some of the powers have delayed effects (e.g. bolt doesn't hurt a monster until the sprite reaches its destination). So you can't easily calculate mob AI during the player's animation since the game state hasn't been updated yet. That said, I know at the time of using the power what the effect will be, so I _could_ do it, but it would be tricky to get right.

(+1)

What a great game! And I love the minimalistic artstyle!

(+1)

Thanks, I agree :) Something about this lofi aesthetic really appeals to me, which made me want to make a port in the first place.

I just played it on real hardware, and it looks even better to me now. After testing a lot of the gbcompo games this became one of my personal top 10! :)

Wow, thank you! It's awesome to be in such good company. There are so many good games in this compo!

(+1)

WOW, too legit!

(+1)

Thanks! I've been enjoying the stuff you've made too (Echo is too hard for me tho, haha!)