Sweet Hell is a retro-platformer boss rush game inspired by the MSX Home Computer. The challenging game was created for the Boss Rush Jam 2024 (theme: Exchange).

The nightmare is blatantly inspired by some of my favorite games: Maze of Galious, La-Mulana 1 (the original version emulates the MSX graphical style) and La Mulana 2 (play these blind if you are even remotely interested in challenging time-consuming puzzle games), and Banana Nababa.

Story

Your brother has usurped your throne, assembling a formidable defense of legendary monsters. Eight bosses await in this game, which is as challenging as hell itself.

Controls

You can play the game using either gamepad, joystick or with a keyboard. For those who cherish the feel of retro gaming, there are options to use "up" for jumping and to switch between attack/jump commands, allowing you to play the game using an old joystick like the TAC-2 (as shown here).

Keyboard Controls:
Arrows - Move
Z - Jump
X - Attack
P - Pause
H - Toggle scanlines
I - Enable Iron Man mode (available at the first screen only)
K - Swap jump/attack functions
J - Use "up" for jump

As you sustain damage, your damage multiplier increases, doubling when you turn yellow, and tripling when you're down to your last health point.

Credits

The soundtrack of Sweet Hell features tracks from OpenGameArt.org by the talented Wolfgang_:
8-bit Theme - Intensity under CC-BY 3.0
8-bit Theme - On The Offensive, 8-Bit Cave Loop, 8-Bit Battle Loop under CC0

The sound effects were also sourced from OpenGameArt from two distinct 8-bit sound packs:

NES 8-bit sound effects by shiru8bit, NES sounds by Baŝto under CC0

The 8x8 pixel font was created by danthedev on OpenGameArt:

8x8 1bit roguelike tiles / bitmap font under CC0

Development and MSX Emulation

Sweet Hell was programmed from scratch in vanilla JavaScript, using the traditional entity system that I'm fond of.

To emulate a real MSX game according to the technical constraints of the MSX home computer, the game adheres to several limitations:

  • A maximum of four single-color 16x16 or 8x8 sprites per vertical scanline.
  • A limit of 32 sprites in total.
  • A 32x24 tilemap comprised of 8x8 pixel tiles, with only two colors allowed per vertical tile slice (plus the background color).
  • A fixed 16-color palette.

These constraints were rigorously followed and a custom sprite renderer was developed to manage the limitations, including automatic sprite cutoff when exceeding four per scanline and sprite color splitting for simplified color replacement and sprite counting.


The flickering effect seen in many vintage consoles and computers is an often-used workaround for the hardware sprite limit through a method called sprite multiplexing. Just like those old computers, the sprite renderer in this game needs to use multiplexing to draw additional sprites, leading to intentional flickering as sprites are selectively rendered frame by frame.


The levels were created using the Tiled map editor. It is extremely useful to be able to put a lot of special properties on tiles to be read in-game.


Final words

Your feedback, bug reports, or discussions on emulation are highly welcome!

StatusReleased
PlatformsHTML5
Rating
Rated 4.8 out of 5 stars
(23 total ratings)
AuthorDonitz
GenrePlatformer, Action
Tags2D, Boss battle, Difficult, gamepad, MSX, Pixel Art, Retro, Short
Average sessionAbout a half-hour
LanguagesEnglish
InputsKeyboard, Gamepad (any), Joystick

Download

Download
sweet_hell.source.zip 19 MB

Development log

Comments

Log in with itch.io to leave a comment.

Super fun game. I think the first boss is still the one that took the longest lol, maybe I was just getting used to the controls. Was able to do the final boss in one try. Absolutely worth playing!

How are you supposed to dodge the bullets in the dark 2nd phase for the vampire boss (boss 3)??

Quickly jump left and right, or as somebody found out. You can just stand in the middle platform and never get hit… That was not on purpose.

Incredible game! I'm terrible at it, but it's really well made and actually feels like an old title.

Here is my gameplay:


НАХЕР ЭТО ИГРУ И ЕЁ ПЕРВОГО БОСА БЛЯТЬ

have you documented some of the processes of making of the game ? do you stream or something ? i would like to know how some of the features were implemented

Hello! I didn’t write any particular documentation making this game, no. It was a month long project where I just added a few things every day. It’s a bit difficult to go into specific details, but the source code is available, and I’ll gladly answer any questions about it or the tools I used.

It was a tough one ngl but some bosses are really easy once you get the pattern down. But some easy patterns are still hard due to the slow drifty jump mechanic when compared to modern swift midair movement jumps. But I beat the game and I feel great.

what is iron man mode

(+1)

You only get one life to finish the game.

(+2)(-1)

And that is not easy, for what I know, I'm the only one who has pulled that off, and I can confirm that is really hard.

(1 edit)

Yeah, it is pretty hard with the randomness of some bosses.

Hi,

I hope this message finds you well. I recently played your game on itch.io and really enjoyed it. I am interested in commissioning a custom game and would like to know if this is something you would be able to do. Could you please let me know your availability and pricing for such a project? Also if you can share me your email to more private messages

Thank you!

Hello! I’m currently in the final stretches of finishing my own horror game right now, so at the moment I’m not really available for commissions, but if you got questions, or want advice I can certainly help.

(+1)

Wow this just oozes charm and style <3 Thank you so much for sharing - I personally got skill diffed right from the get go, but I enjoyed everything!

If you have time, I'd love it if you check out my 60s jumping game, Upbound!

(+2)

Cool concept, but frustratingly difficult.  I threw in the towel on the second boss lol.  The jump mechanic is so hard to get used to I kept dying because of it lol

(+2)

I agree, so much, and don't worry, the third boss has a parkour section, so it only gets harder, but it is so rewarding when you finally beat a boss for the first tim

GG WITHOUT IRON WUUUU 10/10 GAME

(3 edits)

1 boss looks HORRIFING (good way)

2 boss is ez if u cheat it(Spooky OOOOOoooOoooOOoOOoOo)

3 boss is ez until the black part comes then 2nd phase is ez( He looks like a child)

4 boss confuses me but i guess it was just a baby( he was playing snake)

in 5 boss i bug it by spamming ( got upsidedown didnt affect gameplay nor the rest of the figth only lasted for the 1 attack)

6 Cool mirror effect took me by suprise and then got lucky on last phase 3 tryes (nice)

7 is VERY CONFUSING

8 is PRAYING FOR RGN

NICE FUKING GAME omg.

and the ending is perfect.

(+1)

HA, you got the bug-slime, it is so hilarious to watch and I would really like to know why that happens (I got it just by walking in some precise placements, it is not spamming), I got it a lot of times when I was grinding for Iron Man mode.

Also I agree with all of your points, though cheating boss 2 isn't that hard, it just requires getting down to 1 Hp and surviving.

BRO HOW DO I DO THE 7 HELP ME PLS.

(1 edit)

NEVERMINDDDDDDDDD WTF IS 8?(2nd phase)

idk what i did but it work, I AM NOT GONNA PLAY THIS IN IRON MODE N E V E R.

(+1)(-1)

I have just beaten the game in Iron Man Mode, I've died 7 times to the last boss (final phase) and the fifth boss (slime) took my soul. Great Game, keep developing.

Impressive. I haven’t managed to do that myself yet.

(+1)(-1)

Tip for Boss 2: You can intentionally get down to 1 HP and destroy it before it can hit you, also if you kill it on the top part of the screen the "Red skeleton" always spawns on the bottom left corner, which is easier than the other spawn position (Top-Left)

(1 edit)

and for boss 3?(i discover your strat myseflt, it was very fuking hilarius) i only meant the part were the screen goes black and he shoots fireballs al over the place.

NEVERMIIND IT WAS JUST A SILL ISSUE, NOW THE PROBLEM IS THE FORTH BOSS WTF IS THAT?

(1 edit)

NEVERMIND IT WAS EZ. 4TRY

(+1)

If you go very aggressive on the "phase" where his tentacles move in a random direction and you attack every single time that it is possible then you can get to the actual phase 2 unharmed and with him only being able to pull 2 attacks of phase one, then it is just timing your jumps and going left from time to time to avoid being hit and you can defeat the boss hitless just like that!!

(+1)

there is a way to time your jumps so that you can always dodge the fireballs by tapping the opposite direction of the one that you are facing after you begin the jump, also if you are fast enough you can get some hits on him before the screen turns black by jumping off the platforms at the side of the board.

oooooooooo thx

(2 edits)

Does not work for me just a black screen

It may be an unsupported browser, though it should work in most of them.

linux support when?

(+1)

This is a real gem. I really appreciate the process notes in the description and comments section!

(+1)

Great, difficult game! I love the retro ascetics! Superb work!

(+1)(-1)

Si te gustan los plataformas, con estilo retro y con un sinfín de bosses a derrotar, sin duda, este SWEET HELL es para ti y en este GAMEPLAY te enseñamos por qué. Tu hermano ha usurpado tu trono, reuniendo una formidable defensa de monstruos legendarios. Ocho jefes te esperan en este juego, que es tan desafiante como el mismísimo infierno.

(+1)

the game doesn't launch with the itch.io app

(+1)(-1)

Hi, which engine did you use?

(+1)

I wrote my own 2D rendering classes in JavasSript ES6.

(-1)

MAN this is very well put together! It holds all the limitations of the MSX and is superrrr inspiring! Congrats on the honorary mention! You nailed the style and the boss count!

(+1)

This is one of the best modern retro games I've played. You should REALLY make a downloadable version of it. I would gladly pay for it.

(+3)

The name is quite appropriate so far. It's frustrating but in a fun way! Any plans to make a downloadable version?

(1 edit) (+2)

Really enjoyed this one ! Never played MSX game, but maybe I should check some of them out, if they are anywhere near this fun.

PS : I hope some madman will attempt the IRON MAN run.

(+2)

This game is absolute fire! From the first boss you know how the tone is going to be, unfair, devious, creatures are between you and the throne and there is only one way to the top. 

Is incredible how much can be said with just sprites and gameplay! I felt that struggle and the final scene makes it all worth it. 

The battles mechanically are impressive I haven't had this much fun with a game in such a long time, it took me back to the classics, tight controls, excellent music and sound effects it all worked together to sell the experience. 

If there was more of this I would eat it up in an instant! It makes me imagine and that in itself is enough for me to give it high marks! 

(-2)

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

(+1)(-1)

This game is frustrating as hell, but when you finally get to sit on the throne the amount of satisfaction you feel is amazing.

(-1)

Hey, sweet. How do you even start coding a game like this in JS? I'm just a beginner.

Congrats on the finished game.

(4 edits) (+3)

Hello!

I would recommend you first start with learning how to do Object-Oriented Programming in JavaScript. If you listen to other JS developers online, you will hear a lot about how Functional Programming is so much better than OOP. Those people usually do not make games and their opinion on OOP can be ignored. OOP is the best fit for games since most things in the world can naturally be represented as objects.

So you learn how do OOP using classes in ES6. Now you can represent things in your game as objects such as a Player, Enemy etc.. You can use inheritance if you need multiple objects to use the same foundation. For example, in my games every object inherits from an Entity class, which contains an update/draw/destroy function.

Use the ES6 module system since it's the modern way to handle multiple imports in JS today. I like to name my modules after their class names like this:

player.class.js:
export default class Player {
}
game.js:
import Player from './player.class.js';
const player = new Player();

This is my own personal opinion and many people do not agree with me, but I think it's okay to use fake encapsulation in JS as long as it is only done for code organization and you understand it doesn't actual protect the variables.

export default class Player {
    constructor() {
        this._x = 0; // _ implies private, so don't access this member outside the class
        this._y = 0;
    }
}

Then you decide on what type of rendering engine you want.

  • For 3D games, Three.js is the best choice.
  • For 2D games, you can either use Pixi.JS if you prefer a more graph based scene setup like in Unity.
  • Work directly with 2D canvas which gives you the most versatility.

    Here is a really simple example how to draw an image on a 2D canvas:
<html><body><canvas></canvas><image src="./test" />
<script>
const image = document.querySelector('image');
const canvas = document.querySelector("canvas");
const context = canvas.getContext("2d");
canvas.width = 500;
canvas.height = 500;
context.drawImage(image, 50, 50);
</script></body></html>

I prefer to load images using the Javascript fetch command rather than embedding them in the document.

You can create a "main loop" for your game using requestAnimationFrame:

let lastTime = 0;
const update = time => {
    const elapsedSeconds = Math.min(maxTimestep, (time - lastTime) / 1000);
    lastTime = time;
    // Update and draw your entire game here
    update();
    draw();
    requestAnimationFrame(update);
}

And that's pretty much it. The 2D canvas can be used to make both games like this with bitmap graphics or vector-based games using primitive line/shape drawing.

(+1)

WOW Donitz! I am so grateful for this roadmap. I've just learned the basics of JS, ergo, I know about OOP and all up until adding things into the DOM.

But this is the exact pointer I was looking for. Thank you so much, again.

(-1)

Where are the downloads? Can you make a free msx release?

(+1)

I can't add any additional uploads before the jam rating period is over, but after that I can upload the source.

(-1)

can you code a full game run it and install it all by javascript on android or ios? like if you use an ide or js anywhere type app or next.js i have an iphone 12 and an Android 7.0 my iphone is on the latest 17.4 developer beta 2 OS and My Android Is Running Nougat 7.0 any help is much appreciated 

You sorta can. You can use WebView to embed a web browser in an app, or something like Cordova/PhoneGap/Tauri. The iOS web browser has been nerfed on purpose so that it can't really compete with apps, at least in the past. I don't know what the current state is.

Though it isn't quite optimal. If you want to make a game for Android/iOS/PC/Linux it's easier to get started with Godot (or Unity).

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

i found one that kicksass for my android 7.0 it's called PocketGameDeveloper Comes With Everything Even The Ability To Make Your Own In Game music And Easily Create Your Own Touchscreen Layout No Coding Required Everythings In The UI Of the App Itself Thats For My Android Tho Now I Will See If I Can Get Godot Or something Similar In my Iphone 12 today;)

(+1)(-1)

Tough as nails is right, and victory is all the sweeter for it.

(1 edit) (+1)(-1)

Very nice, tight gameplay, nice challenges. Getting annoyed by the slime boss currently, the rest was quite ok'ish so far.

Edit: Ok made it through all of them. For me, the slime was most tricky :)

(+1)

Yeah the slime is the most ridiculous of the bosses, and my personal favorite. I hope memorizing its attack pattern was fun!

(+1)(-1)

At first a bit frustrating, but it was fun to find out the pattern indeed, made it a lot easier :-)

(+1)(-1)

Super kick butt game! Tight controls and great old school challenge. A little hard for my older reflexes but still very well made! Great job!

Why is this marked as Adult?

(2 edits) (+2)

Because for some reason the adult tag found its way into the tag list. I think it was meant to be action.