MSXdev’20: #12 – BlockPuzzle

MSXdev’20: #12 – BlockPuzzle

by ro on 22-07-2020, 08:46
Topic: Challenges
Languages:

Exciting times, these last few weeks before the MSXdev20 deadline. Entries are dropping in daily, we are stacking up to 12 already. With BlockPuzzle, Belgian MSX veteran David Heremans (aka turbor here on MRC) participates on the sexiest challenge known to MSX kind. MSXdev delivers.

Puzzles, a good way to spend our spare time playing with our MSX computer. Here we have a new one that pretends to be casual but also give a good moments of entertainment. According to its author, BlockPuzzle started as an attempt to create a simple one pixel smooth text scroller on MSX1 but then he got carried away. PuzzleBlock is a 32KB MSX1 game.

It is all about placing blocks in the grid to fill the spaces. Once those pieces are in place, three new random pieces will appear and we must repeat the process. The aim of the game is to reach the highest score by placing pieces in the spots available. Once there’s no movement possible, the game is over.

This game has different levels of difficulty so you can try each one to find the best that fits your skill level. It plays with either keyboard or joystick.

Relevant link: PuzzleBlock at MSXdev

Media browser (5)

  • MSXdev’20: #12 – BlockPuzzle
  • MSXdev’20: #12 – BlockPuzzle
  • MSXdev’20: #12 – BlockPuzzle
  • MSXdev’20: #12 – BlockPuzzle
  • MSXdev’20: #12 – BlockPuzzle

Comments (30)

By tfh

Prophet (2405)

tfh's picture

23-07-2020, 08:21

By Uninteresting

Master (167)

Uninteresting's picture

23-07-2020, 10:57

I made the mistake of thinking this was a slight game, but I ended up playing it for a dozen rounds at a time. It might help that I haven't played this type of block puzzle before. It has some minor problems, but it's very polished (digitized speech, the animated grid background when new blocks are generated, the stated smooth scroll).

I think my best on the default difficulty has been 1187.

By Pippo

Champion (457)

Pippo's picture

23-07-2020, 11:06

Very great Tetris variant! Big smile
It is an original idea, really. Smile

By mzoran

Expert (88)

mzoran's picture

23-07-2020, 11:09

I've tried it myself. Nice graphics and gameplay. Though why did author think a death march tune is a good choice for end of game ?
For some reason the game locks up when demo is running on a physical VG-8020 and on VG-8000 key M is not getting detected.

By thalin

Rookie (23)

thalin's picture

23-07-2020, 11:39

Great game! When I can't place a 3x3 it sometimes fail to detect this and the game is in a locked state. Did I miss anything or is this a bug?

By Uninteresting

Master (167)

Uninteresting's picture

23-07-2020, 11:45

@thalin Remember you can cycle the unplaced blocks with "M" and may be able to clear room for it with those. I've had the game end several times when I can't place the 3x3 block.

By thalin

Rookie (23)

thalin's picture

23-07-2020, 12:23

@unitresting I didn't know. Thanks!

By tfh

Prophet (2405)

tfh's picture

23-07-2020, 17:23

Had quite some fun playing.
I noticed that if you fill a horizontal and vertical line at the same time only the vertical one seems to disappear. Is that correct?

By turbor

Champion (446)

turbor's picture

23-07-2020, 19:37

tfh wrote:

I noticed that if you fill a horizontal and vertical line at the same time only the vertical one seems to disappear. Is that correct?

No. They should both disappear. You can see this in one of the screenshots of this post. If only the horizontal(or vertical) row disappears, then there is a bug that I haven't yet triggered myself during my play-testing.
If you can provide more info I'll gladly investigate this.

By turbor

Champion (446)

turbor's picture

23-07-2020, 19:43

I'm also wondering if someone has already noticed that each time the intro text is scrolling the font is different Big smile

By Uninteresting

Master (167)

Uninteresting's picture

23-07-2020, 19:56

You're the author of the title? Then I can provide the tiny problems I noticed:
- somehow, I once managed to get half of a red block rendered on the left-hand outer edge of the grid. I have no idea what happened and when.
- the text that scrolls on the screen after "no more moves" takes so long that at least I don't have the patience to wait to see all of it
- after I skip the aforementioned text (say, a new highscore), the score on screen seems to drop a bit before the title screen is rendered (say, from 53 to 49)

I don't think any of these are big issues, outside of maybe the slowly scrolling "new highscore"/... text that is pretty much useless as it is now.

By tfh

Prophet (2405)

tfh's picture

23-07-2020, 20:02

turbor wrote:
tfh wrote:

I noticed that if you fill a horizontal and vertical line at the same time only the vertical one seems to disappear. Is that correct?

No. They should both disappear. You can see this in one of the screenshots of this post. If only the horizontal(or vertical) row disappears, then there is a bug that I haven't yet triggered myself during my play-testing.
If you can provide more info I'll gladly investigate this.

Phew... Good one. I know the vertical one was the most left one and the horizontal one was aprox in the middle. But that is all I can remember. Anything I should pay attention to if it happens again?

turbor wrote:

I'm also wondering if someone has already noticed that each time the intro text is scrolling the font is different Big smile

Yes, I did Smile At first I was wondering if it was an emulation bug ;-)
It's an addictive game...

By turbor

Champion (446)

turbor's picture

23-07-2020, 22:14

Uninteresting wrote:

You're the author of the title? Then I can provide the tiny problems I noticed:
- somehow, I once managed to get half of a red block rendered on the left-hand outer edge of the grid. I have no idea what happened and when.
- the text that scrolls on the screen after "no more moves" takes so long that at least I don't have the patience to wait to see all of it
- after I skip the aforementioned text (say, a new highscore), the score on screen seems to drop a bit before the title screen is rendered (say, from 53 to 49)
.

I think I can speed up that scroller a bit, I'll keep my eyes open for the other mentioned issues.

tfh wrote:

Phew... Good one. I know the vertical one was the most left one and the horizontal one was aprox in the middle. But that is all I can remember. Anything I should pay attention to if it happens again?

A screen shot could be nice. The exact location of rows and columns that should 'evaporate' and the form of the piece (and where) you placed could be useful info. I'm now trying to trigger this bug myself but it is rather hard to recreate such specific circumstances Sad

I'm currently altering the difficulty levels a bit so that the game gets harder and harder the longer you play. I felt that when I was playing that the game can take way too long before I get a game over condition. Maybe I can keep the fixed difficulty levels in there under a different name...

By ray2day

Hero (549)

ray2day's picture

24-07-2020, 09:19

Congradulations David! What a good MSX Dev entry! Great and original, smooth playing puzzle game with great music, sounds and speech! Had no bugs while playing (played on a Philips NMS 8245 MSX2) but I’m sure the minor things mentioned above by our fellow MSX mates will be polished away in short term also. Good work! Smile

By defdanny

Master (168)

defdanny's picture

24-07-2020, 12:17

Hi turbor, very nice puzzle game you created there! Very addictive!
Whilst playing some rounds, I came to the following situation:
The game offers me to place a 3x3 block, but there is no chance to place it!
Did I miss some game functions? I expected that the game ends in at this point?
If needed, I can send you a screenshot of this game situation.

[EDIT]: Ok, I just found out that I can change the order of the puzzle tiles with the second fire button.
So, no error here! Sorry.

By turbor

Champion (446)

turbor's picture

26-07-2020, 14:10

The source of the game is now available at https://github.com/turbor/msxblockpuzzle

A new rom has been send to MSXdev with a small update. (The rom can be downloaded from github also)
Most notable difference for the end-user: an improved difficulty selector.
Now the previous easy,normal and hard modes have tweaked random distribution of the pieces, and an extra 3 levels were the difficulty is increasing during playtime making it progressively harder and harder.

@Uninteresting, unfortunately you'll still need to practice your patience, speeding up the scroll is more trickier than expected due to the double-char-buffering code that is spread throughout the code

By tfh

Prophet (2405)

tfh's picture

26-07-2020, 14:35

Thanks for sending the update file. I've update Block Puzzle on File-Hunter.com to v1.1 as well :)

By mzoran

Expert (88)

mzoran's picture

27-07-2020, 16:25

The new update works even worse on a real machine. Even the bird is messed up.
Perhaps you also have a stack pointer initialization issue like in the thread for the Snowboarding game ?

By turbor

Champion (446)

turbor's picture

27-07-2020, 20:25

@mzoran, I developed this in openMSX with an emulated Philips_VG_8020 and I leave the stack as is. Question
Do you use a stock VG8020, or do you have any extensions like slotexpander or disks or something? I have no idea why this should be different on a real machine, I use the default BIOS routines for everything VDP related so why this would screw up the bird sprites is ... strange.
And all the spritestuff is in the first 16KB of the ROM so slotselection couldn't cause this neither....
And the problem you mentioned with the M-key is also bizarre since I let the default BIOS keyboard routine set the NEWKEY array since I fidle with the PPI but in much the same way as the bios does?

Are there any other people here with a physical VG-8020 who can share their experience??

By albs_br

Master (146)

albs_br's picture

27-07-2020, 20:06

"Bird sprites that nicely moves into screen and out again using the EC bit."
That's a cool thing. It shows how carefully the game was coded. My game do not have it (yet).

By mzoran

Expert (88)

mzoran's picture

27-07-2020, 20:59

@turbor: Yes, I use mega mapper cartridge and SofaRun. So definitively stack is much higher than on a vanilla machine.
Mostly I would like that all 16,32 and 48k games be compatible with such setup. In my opinion that should be a compatibility topic for the judges. It has more real life application than those acid tests.
Sorry, I didn't mean to be harsh. You made a good game and would be nice if it would be easily playable on real hw

By thalin

Rookie (23)

thalin's picture

28-07-2020, 10:52

@turbor I tried it with openMSX on Android but the joystick control is not working. Keyboard works but is not practical to use. I tried changing the joystic settings but I couldn't find any working configuration. Is it using port A? Haven't had this issue with other games. Any idea what to do?

Edit: I have the same problem on webMSX at filehunter. Is it just me?

By geijoenr

Master (180)

geijoenr's picture

28-07-2020, 23:17

superadictive and original.

By turbor

Champion (446)

turbor's picture

29-07-2020, 22:02

@thalin, you were right there was a problem with the joystick handling. A new version can be downloaded from https://github.com/turbor/msxblockpuzzle
In this version both keyboard, portA and portB are scanned. Keyboard trumps joystick port A, which in turn has priority over joystick B.

@mzoran, this update starts with the SP at 0xF032, I hope this solves the problem on your hardware.

I have send this update to the msxdev team, I hope they will update the site in the coming days.

By mzoran

Expert (88)

mzoran's picture

29-07-2020, 22:33

sadly it does not help, there is no sound, bird is frozen and demo mode immediately locks up
thanks for trying....

By thalin

Rookie (23)

thalin's picture

31-07-2020, 20:33

@turbor, joystic works now!

By mzoran

Expert (88)

mzoran's picture

30-08-2020, 22:59

Finally figured out why this game was not running on my Philips 8020 + megamapper.
It seems there is a small bit of code that is self-modifying parts within the ROM.
That is all fine if you really run from a ROM but in my case RAM was being used to simulate ROM.
Without fully understanding your code I just did a quick hack in function initintronameblock and added at the beginning:
ld a, d
cp #c0
ret c
which exits if address to write to is below #c000

I am not quite sure how to post this change in github since I am truly a novice there.
Anyway now that I finally got it working and my fetish is HBI-55 I will add high score saving capability also Smile

By turbor

Champion (446)

turbor's picture

02-09-2020, 12:09

Thanks for the detailed bug report. I found the problem, version v1.3 is now available on github. This should fix the problem at last. Smile

By mzoran

Expert (88)

mzoran's picture

02-09-2020, 14:22

Thanks for providing a fix. It works well now.

By mzoran

Expert (88)

mzoran's picture

04-09-2020, 09:48

As announced I've added HBI-55 support and @turbor was kind enough to accept the additions on his github page.
So go there, grab a copy of the rom file, find your SRAM cartridge and save high score for the future Running Naked in a Field of Flowers