Gameboy Development Forum

Discussion about software development for the old-school Gameboys, ranging from the "Gray brick" to Gameboy Color
(Launched in 2008)

You are not logged in.

#1 2018-10-17 01:09:45

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Libbet and the Magic Floor

This is a port of Martin Korth's game Magic Floor to the Game Boy compact video game system, introducing Libbet the boulder girl. It fits in 6502 bytes.

https://forums.nesdev.com/download/file.php?id=13799

One day, Libbet was rearranging her basement when she discovered a passage to an empty hall whose floor had a peculiar pattern. She rolled in to investigate.

The floor tiles have four shades. Libbet can roll or jump between tiles of the same shade. She can also roll or jump onto the next brighter shade or from white to black, which leaves a track. Tiles with no exits contain a trap door that leads to the entrance. Leave 90 percent of possible tracks and roll to the exit to win.

Controls:

* Control Pad: Roll
* A + Control Pad: Jump

Not in quite yet: title screen, overall score, animation of entering dead end, a proper attract mode, audio

Download: ROM and source
GitHub repository: pinobatch/libbet

Offline

 

#2 2018-10-22 12:13:54

LukeIsMe
New member
From: the USA
Registered: 2018-10-15
Posts: 2

Re: Libbet and the Magic Floor

Really cool!

Offline

 

#3 2018-10-30 21:44:08

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.02 is released. Highlights include a demo, more obvious indication of the exit, and sound effects.  Size is 8848 bytes.

* Combine identical strips, saving a few bytes
* Fix head bob when rolling left
* Draw track and score updates using Popslide, a VRAM transfer buffer
* Draw exit arrows at top left and right of 8-cell-tall floors
* Fade from white at 90% and 100% completion
* Fade to white on exit
* Tutorial demo (press Select)
* Separate Libbet's elbows in push-off cel
* Sound effects
* Animate falling in a hole and being ejected

See the GitHub release or download the ROM and source package (72 kB).

Offline

 

#4 2018-10-31 14:31:05

ISSOtm
Member
From: Somewhere in Echo RAM
Registered: 2017-04-18
Posts: 160
Website

Re: Libbet and the Magic Floor

Nice work, as always!


The French Lord Of Laziness.
Legend of Zelda and Undertale fan, I also tend to break Pokémon R/B/Y a little too much.

Twitter | Me on GCL | Discord : ISSOtm#9015 | Skype : isso.tm (I don't login anymore)

Offline

 

#5 2018-12-10 22:52:07

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.03

This is a small release, as progress past the fifth floor is still behind writer's block.

Highlights:

* Rolling and landing sound better fit the material
* Reduce clicking when sound channel turns off
* Show squash cel when landing (first of 12 principles of animation)
* Make hands clearer in push-off cel
* Dead code removal and other size optimizations
* Rules research: Confirm that 100+ score for 8x6 is highly unlikely
* Comparative testing: Add patch to make GBA version work on GBA Movie Player
* 8611 bytes used

Download ROM and source zipfile, or view the release on GitHub

Now I'd appreciate help with the worldbuilding.

For the next release, I at least want to figure out what the title screen, any% ending, and 100% ending are supposed to look like. This largely hinges on the answer to one question: Why is the floor?

To generate concepts for the title screen and especially the ending, it might prove helpful to understand what's past the exit of the last room. That might depend on who built the floor and why. I'd hope it isn't as dark as James Dashner's The Maze Runner books or Vincenzo Natali's Cube films, both of which involve mind-wipes and a prequel that spoi^H^H^H^H explains everything.

A boulder person has three gaits: rolling, scooting, or jumping. Scooting is seen in some of my other works (particularly the "Lame boy" activity in 144p Test Suite) but not here. Rolling is more energy efficient than scooting or jumping everywhere, and she can carry things in her hands while rolling, though (at least in cut scenes) she would have to stop and untuck her head to see where she's going.

As for the "why is the floor?" question, I'd like draw a parallel to Spencer Johnson's Who Moved My Cheese? and its fan sequels, particularly Mason Brown's Who Cut the Cheese? and Deepak Malhotra's I Moved Your Cheese. These novellas take place in a maze inhabited by laboratory rodents and Lilliputians. After reading them, I hypothesized that the maze is an offshoot of Rat Park, a late 1970s experiment at Simon Fraser University concluding that rats given enough room to live and a sufficiently interesting environment will have less tendency to use drugs recreationally. That answered "why is the maze?" to my satisfaction. I wish I could see how to extend them to "why is the floor?" in this case.

I'm also trying to leave open the option of a later world reminiscent of Hipster Whale's Crossy Road or Konami's Frogger, or possibly even an overhead adventure reminiscent of Nintendo's The Legend of Zelda or Square Enix's Secret of Mana. But the exact nature of the challenges Libbet is likely to encounter in this world still depends on "why is the floor?".

Offline

 

#6 2018-12-13 21:12:48

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Good news: Martin agrees with me that a dystopian thriller isn't the right direction.

I had always thought that it was just there for fun & bemusement. I hope it won't turn into a deadly trap or something!

Offline

 

#7 2019-02-15 00:53:27

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

For 2 months, an ending idea hasn't come to me. But now I'm wondering what achievements I can add. I'd like some of them to acknowledge player tics, like jumping into a Mega Man boss door or a Super Mario Bros. 3 Koopaling wand, or opening a Toad House box while sliding so it looks like Mario is sniffing his armpit. Are these any good? Can you think of others?

Completionist
As an anti-frustration feature, the player can exit in my port after completing 90 percent of the floor. But to reward skilled play, show the number of floors completed with 100% after the final floor is completed. If all floors are 100%, award Completionist and give the good ending.

Sink it
When you land on a dead end, it marks the dead end with a hole and moves you to the starting position at bottom center. But in the GBA and NES versions, when you get the last arrow by moving to a dead end, it stops the game right there and doesn't move you. So I propose an achievement that alludes to a tic that I developed when playing the NES version: if you reach 100% by landing on a dead end, this is considered sinking the ball in the hole as in golf.

Dash for the door
My port has an exit door at the top to give a sense of space to the floors. If a floor is 100% complete, and every move starting at the move from the cell where the last arrow was awarded decreases the Manhattan distance (|x - door_x| + |y - door_y|) to the exit door, and the player doesn't pause between rolls or jumps, award Dash for the door. Cannot be awarded on same floor as Sink it.

Offline

 

#8 2019-02-15 13:58:57

ISSOtm
Member
From: Somewhere in Echo RAM
Registered: 2017-04-18
Posts: 160
Website

Re: Libbet and the Magic Floor

I like the Completionist and Dash For The Door achievements; I'm less fond of Sink It due to requiring a dead end, which are fairly scarce. But, if the achievements are documented on a screen of their own, then I guess players could scrutinize boards to try to achieve that.

Here are my own suggestions:
Restless
Complete a level without stopping ever. Sounds really difficult to do, maybe impossible without pure luck? Or it could be toned down to never standing on a tile for more than one second (and not bonking, either, as that'd be lame)

Mind The Frame
Attempt to jump into the door (from the tile next to it).

No Scope
Perform a 360 on the D-pad while Libbet is jumping.

Dizzy And The Boxing Gloves
Keep rolling for X seconds straight. The title is a reference to the character Dizzy, from the eponymous games. This does require a contiguous path of the greys, which seems to be as common as dead ends, from my play-testing.


Also, on the topic of endings, maybe add a joke ending if one performs the Konami Code?

Last edited by ISSOtm (2019-02-15 14:06:02)


The French Lord Of Laziness.
Legend of Zelda and Undertale fan, I also tend to break Pokémon R/B/Y a little too much.

Twitter | Me on GCL | Discord : ISSOtm#9015 | Skype : isso.tm (I don't login anymore)

Offline

 

#9 2019-02-15 18:51:59

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

To assess the viability of "Sink it", I ran the stats for how many OK floors have at least one dead end. (A floor is OK if its maximum score is at least the area, the round trip reachable area is at least half the area, and at least two back row cells are reachable.)

- 2x8: 17%
- 4x4: 26%
- 6x4: 40%
- 6x6: 52%
- 8x6: 58%
- Chance of seeing at least one dead end: 92%

Offline

 

#10 2019-02-15 19:14:59

ISSOtm
Member
From: Somewhere in Echo RAM
Registered: 2017-04-18
Posts: 160
Website

Re: Libbet and the Magic Floor

Interesting. I must've simply been unlucky, then.


The French Lord Of Laziness.
Legend of Zelda and Undertale fan, I also tend to break Pokémon R/B/Y a little too much.

Twitter | Me on GCL | Discord : ISSOtm#9015 | Skype : isso.tm (I don't login anymore)

Offline

 

#11 2019-02-20 14:41:17

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

v0.04 is released

Highlights:

* A+B+Select+Start during gameplay to reset
* Combo counter shows number of tracks laid without hesitation
* Add achievements Completionist, Sink it, Dash for the door, No scope, No peeking, Restless
* Display achievements in a window when they are earned
* Display floor scores and achievements after completing all 5 floors
* Popslide: Option to limit length of +32 runs and literals to save ROM size
* "Debughex" option to display a variable at runtime even on hardware
* Rules research: Confirm 92% chance of seeing a dead end in a game
* Docs: Add guide to encoding video with bgb

9540 bytes used.

Feedback is appreciated:

* See how big of a combo you can make. I want to know whether players find it unduly difficult to make large combos.
* Come up with names for the floor sizes for use on the result screen. Currently I have "Corridor" for the 2x8 and "Anteroom" for the 4x4; the 6x4, 6x6, and 8x6 remain.
* Title screen and ending concepts are still welcome.

Download: ROM and source code (88 kB) | release on GitHub

Offline

 

#12 2019-02-26 10:21:13

ISSOtm
Member
From: Somewhere in Echo RAM
Registered: 2017-04-18
Posts: 160
Website

Re: Libbet and the Magic Floor

I've had a lot of trouble getting high combos, as well as the "restless" achievement. "No peeking" is difficult too for the same reason: Libbet moves fairly quickly, so it requires constantly alternating between squares with the right timing, since a bonk voids the progress instantly.
I have trouble looking for paths while also alternating directions on the Control Pad, even while jumping between squares instead of simply rolling (this has a longer window for buffering input). Maybe the achievements *are* too hard, or maybe I'm just not good, I don't know.
That said, very hard but achievable goals can serve as Bragging Rights Rewards for extremely skilled players, so maybe they're not a bad thing. Might wanna mention that they are very hard, perhaps?


The French Lord Of Laziness.
Legend of Zelda and Undertale fan, I also tend to break Pokémon R/B/Y a little too much.

Twitter | Me on GCL | Discord : ISSOtm#9015 | Skype : isso.tm (I don't login anymore)

Offline

 

#13 2019-02-28 19:01:22

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

I've added a note about varying achievement difficulty in README. I wanted to make a point of having a few difficult bragging-rights achievements because I've been involved with another game that ended up with a reputation of having a large number of very easy achievements. I made the game and added hooks for another programmer to make achievements. I wasn't involved with the design of the achievements themselves, and when someone else made the achievements, they turned out to be "buy this game to inflate your Gamerscore in 15 minutes" easy.

Offline

 

#14 2019-09-27 01:04:59

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

If I fear I may be copying something too closely, I try to find multiple antecedents. Other real and fictional lifeforms similar to Libbet's kind are pill bugs, armadillo, hedgehog, pangolin, Terra-Firmians from DuckTales, and Tumble Butts from Cyanide & Happiness.

Offline

 

#15 2019-11-13 14:00:40

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.05

It's been the better part of a year, and still no action on the last part of #6. So I decided I might as well push out what I have.

Game changes:

* Fix first word of attract text after achievements and combo
* Improve arm position in many cels
* Buzz on invalid move (#10)
* Make fades much smoother (#9)
* Make skin color distinct from sack color using 7-shade display
* Add pattern to black cell so as not to be misread as a hole
* Add intro that wipes away console maker logo
* Display combo that just ended, with sound effect

Behind the scenes:

* Build-time option to use tilemap $9C00 instead of $9800 (requested by mattcurrie)
* Docs: Describe achievement conditions, and clarify that some are harder than others (requested by ISSOtm)
* Docs: Document metasprite format (requested by ISSOtm)
* Rules research: Discover that bidirectional evaluation does not appreciably improve speed of floor reachability evaluation
* Encoding guide: Add SGB aspect ratio and frame blending

We just crossed the one-third line with 10976 bytes. But I'm not too worried about the last major parts (title screen, SGB, and GBC) pushing it past 32K.

Download: ROM and source code (98 KiB) | GitHub release

Offline

 

#16 2020-07-02 23:46:04

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.06 (2020-07-03)

Now it's in color.

Highlights:

* Widen squash in landing cel
* Super Game Boy and Game Boy Color enhancement
* Scroll to center between debrief and copyright notice
* Code size optimizations

Download the GitHub release or the ROM and source code (112 kB)

Offline

 

#17 2021-01-18 21:29:31

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.07 is out

This release incorporates a graphical facelift based on feedback in various Discord servers.

Highlights:

* Achievements: Don't get stuck if player earns "No scope" just before reaching the exit
* Wall facelift: Add volume and top-to-bottom gradient to wall (suggested by Daid); remove shear on side walls (suggested by DragonDePlatino); define door frame (suggested by M-Tee); darken area outside floor on GBC
* Add a shade to the underside of Libbet's body
* Floor: Larger dots on black tile (suggested by DragonDePlatino); larger flat areas on dark gray vent/grating tile moving detail to corners; square off corners (suggested by IRCWIP)
* Compute entire GBC palette before copying it first frame (reported by toxa)
* Switch to slightly faster random number generator
* Work around crash on boot related to STAT IRQ in VisualBoyAdvance
* Document sprite sheet rectangle list syntax (requested by ISSOtm)
* Switch from dedenter to RGBDS 0.4.0 indented local labels

Download ROM and source zipfile (114 kB) or from the GitHub release

Offline

 

#18 2024-01-01 22:42:33

PinoBatch
Member
Registered: 2018-03-22
Posts: 64

Re: Libbet and the Magic Floor

Libbet and the Magic Floor v0.08 is out with improvement to onboarding new players.

Highlights:

* Revamp instructions with visual aids and add tutorial floor "Closet"
* Wait before detecting Super Game Boy
* Correct note periods to concert pitch
* Make shadow during jump more visible
* SGB, GBC: Lighten green to reduce Helmholtz-Kohlrausch illusion
* SGB: make border tile 0 transparent to reduce flash during fade
* Add an experimental way of allocating subroutines local variables, using a new feature of RGBDS 0.7
* Allow building with out-of-tree RGBDS for regression testing (RGBDS 0.7 includes this project as a test case! gbdev/rgbds#1260)

Download: ROM and source; GitHub release

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson