Jump to content
IGNORED

Sokoban


Andrew Davie

Recommended Posts

New version. I've updated some of the sprite animation frames from @NostAlgae37. We're really quite fine-tuning now, but I do plan to have some more animations down the track. I've put in a "turn around" wait so that when the player turns around it looks better. I've also re-done the box because nobody had any love for the previous version.

 

I need to decouple the game 'frame rate' from the movement/animation frame-rate.

Almost time to think about getting that music updated and some sound effects in.

sokoboo_20190823.bin

  • Like 5
Link to comment
Share on other sites

6 hours ago, Andrew Davie said:

New version. I've updated some of the sprite animation frames from @NostAlgae37. We're really quite fine-tuning now, but I do plan to have some more animations down the track. I've put in a "turn around" wait so that when the player turns around it looks better. I've also re-done the box because nobody had any love for the previous version.

 

I need to decouple the game 'frame rate' from the movement/animation frame-rate.

Almost time to think about getting that music updated and some sound effects in.

sokoboo_20190823.bin 32 kB · 7 downloads

Just tested the latest build (actual hardware / UnoCart) and the music gets stuck between the levels.  Please listen to the attached MOV file.  I apologize, but I don't have a better way to capture my testing.

 

 

Link to comment
Share on other sites

I've mostly given up, but not totally given up, hope of being able to improve the sprites as per the image below...

 

1019861826_ScreenShot2019-08-27at9_05_38pm.png.57b0d8d02203b5c193ded07dc12b395f.png

 

The one on the left uses the two sprites, one on top of each other. There's still just a single colour per sprite per scanline, but each colour is completely independent and thus the result looks quite nice.  To my eye, anyway. Another way of saying that - there are two independent colours + black on any line, and the tool I wrote will split those two colours/shapes into data for the two sprites. I spent many hours on this, including writing the tool to do the conversion, and all the code to get the two sprites moving together, animating the right shapes, etc., redrawing lots of the sprites... but unfortunately I was unable to fit in the colour change for the second sprite into the kernel... I needed just a few cycles but couldn't find them.  Pity I did all that work before checking that the colour was being changed in the kernel. D'Oh!  So, I just thought I'd dump the image here for posterity.  I may revisit this someday.

Other than that I've been working on speedups and I've done extensive cycle-counting of the subsections. They're now working quite nicely and there doesn't seem to be any time overflows when I have my minimal cycle counts installed as timers. So, fingers crossed.  I've also been through and removed lots of redundant code, fixed a few bugs, and generally tidied up.

I think I'm feeling like this is near completion. There are a few things I could add/do, but I wonder if it's really worth the effort. At best this title might sell 20 or so carts, and I am feeling it's maybe time to move on....  Here's the "dolist" if I really wanted to add polish...

a) High scores saved on SaveKey and displayed in some sort of tabular form. 

b) add a congrats screen when you beat a previous score for a level

c) level selection (press up/down to change by 10, and left/right to change by 1)

d) finalise the sounds

 

Well, that's about it. Here is the latest binary, and source code for anyone who wants to find a few cycles in the kernel to allow colour-change on the second player.  Look at the file BANK_ROM_SHADOW_RAMBANK.asm for the kernel - it's at the very top of that file.  The Git repository is now public, so anyone wanting the latest version of the code can fetch it from https://github.com/andrew-davie/Sokoboo






 

Sokoboo_20190827.bin Sokobo_SOURCE_20190827.zip

  • Like 1
Link to comment
Share on other sites

I hacked in level selection.

Now on the level screen you see a red ? on the right.

Just press up/down/left/right to change the displayed level number.

Press the button to start playing that level.

 

During the level you can press reset to get back to the level selection screen

or, select to skip to the next level.

OK, just found a bug. DO NOT LOOK-AROUND TOO HIGH OFF THE EDGE OF THE SCREEN. YOU'LL FALL OFF THE EDGE.

 

 

 

 

Edited by Andrew Davie
Crashing version removed. See below for updated binary.
  • Like 3
Link to comment
Share on other sites

4 hours ago, Andrew Davie said:

I've mostly given up, but not totally given up, hope of being able to improve the sprites as per the image below...

 

1019861826_ScreenShot2019-08-27at9_05_38pm.png.57b0d8d02203b5c193ded07dc12b395f.png

 

The one on the left uses the two sprites, one on top of each other. There's still just a single colour per sprite per scanline, but each colour is completely independent and thus the result looks quite nice.  To my eye, anyway. Another way of saying that - there are two independent colours + black on any line, and the tool I wrote will split those two colours/shapes into data for the two sprites. I spent many hours on this, including writing the tool to do the conversion, and all the code to get the two sprites moving together, animating the right shapes, etc., redrawing lots of the sprites... but unfortunately I was unable to fit in the colour change for the second sprite into the kernel... I needed just a few cycles but couldn't find them.  Pity I did all that work before checking that the colour was being changed in the kernel. D'Oh!  So, I just thought I'd dump the image here for posterity.  I may revisit this someday.

Looking at the kernel, it might be possible to change the 2nd player's color every 3 lines (or maybe even 2 out of 3 lines).

Link to comment
Share on other sites

3 hours ago, Thomas Jentzsch said:

Looking at the kernel, it might be possible to change the 2nd player's color every 3 lines (or maybe even 2 out of 3 lines).

Yes, that was my conclusion too. I figured that unrolling the loop and using self-mod code so the loads can be immediates. My basic timing calculations showed that I would be about 75 cycles per line, but that the switch to the next character line/bank would require dropping one of the colour writes. Maybe not worth it, though.

Link to comment
Share on other sites

12 hours ago, Andrew Davie said:

I've mostly given up, but not totally given up, hope of being able to improve the sprites as per the image below...

 

1019861826_ScreenShot2019-08-27at9_05_38pm.png.57b0d8d02203b5c193ded07dc12b395f.png

 

The one on the left uses the two sprites, one on top of each other. There's still just a single colour per sprite per scanline, but each colour is completely independent and thus the result looks quite nice.  To my eye, anyway. Another way of saying that - there are two independent colours + black on any line, and the tool I wrote will split those two colours/shapes into data for the two sprites. I spent many hours on this, including writing the tool to do the conversion, and all the code to get the two sprites moving together, animating the right shapes, etc., redrawing lots of the sprites... but unfortunately I was unable to fit in the colour change for the second sprite into the kernel... I needed just a few cycles but couldn't find them.  Pity I did all that work before checking that the colour was being changed in the kernel. D'Oh!  So, I just thought I'd dump the image here for posterity.  I may revisit this someday.
 

Not trying to rain on your parade (or be a party-pooper, or whatever), but I honestly don't think that the 2-sprite version with the shading looks all that great, so I don't see a compelling reason to re-invent the wheel.  It doesn't really remind me of that old-timey, classic Atari look that I was aiming for.  But that's just the actual sprite artist's 2 cents worth.  ;-)

Link to comment
Share on other sites

We'll be featuring the newest build of Sokoboo LIVE on tomorrow's (Wednesday) ZeroPage Homebrew stream on Twitch at 11AM PT | 2PM ET | 6PM GMT! Hope everyone can watch!

 

Twitch Stream: https://www.twitch.tv/zeropagehomebrew/

 

Games:
- Dare Devil (2019 WIP Update) by Muddyfunster
- Chaotic Grill (2019 WIP Update) by Philip Blackman aka splendidnut
- Sokoboo (2019 WIP Update) by Andrew Davie
- Dragon's Descent (2018 WIP Update) by Revontuli

 

1408908298_20190828-LetsPlay.thumb.jpg.d4f7701a79eea8095d866cbfc8c47c22.jpg

  • Like 1
Link to comment
Share on other sites

4 minutes ago, ZeroPage Homebrew said:

We'll be featuring the newest build of Sokoboo LIVE on tomorrow's (Wednesday) ZeroPage Homebrew stream on Twitch at 11AM PT | 2PM ET | 6PM GMT! Hope everyone can watch!

 

Twitch Stream: https://www.twitch.tv/zeropagehomebrew/

 

Games:
- Dare Devil (2019 WIP Update) by Muddyfunster
- Chaotic Grill (2019 WIP Update) by Philip Blackman aka splendidnut
- Sokoboo (2019 WIP Update) by Andrew Davie
- Dragon's Descent (2018 WIP Update) by Revontuli

 

1408908298_20190828-LetsPlay.thumb.jpg.d4f7701a79eea8095d866cbfc8c47c22.jpg

 

 

Mmh. Well, there's currently a ***CRASH*** on look-around, so let's see if I can get that fixed before then!

 

  • Like 1
Link to comment
Share on other sites

38 minutes ago, ZeroPage Homebrew said:

We'll be featuring the newest build of Sokoboo LIVE on tomorrow's (Wednesday) ZeroPage Homebrew stream on Twitch at 11AM PT | 2PM ET | 6PM GMT! Hope everyone can watch!

 

Twitch Stream: https://www.twitch.tv/zeropagehomebrew/

 

Games:
- Dare Devil (2019 WIP Update) by Muddyfunster
- Chaotic Grill (2019 WIP Update) by Philip Blackman aka splendidnut
- Sokoboo (2019 WIP Update) by Andrew Davie
- Dragon's Descent (2018 WIP Update) by Revontuli

 

1408908298_20190828-LetsPlay.thumb.jpg.d4f7701a79eea8095d866cbfc8c47c22.jpg

What a lineup!

  • Like 1
Link to comment
Share on other sites

I need to catch up with the all the updates (I was on vacation).

 

First impressions after playing just a little bit of the latest version:

 

I like the animated player gfx. The "two independent colors" version posted above looks nicer, but I wouldn't mind if it doesn't make in the final version. The other features in the to-do list should have precedence, in my opinion.

 

I like the pulsing target positions as shown in the video a few posts above, while I find the flashing ones in the current build a bit annoying if there are a lot of targets displayed. If the pulsing ones cannot be inplemented, I'd prefer them to just be static.

 

When completing a level, or restarting the current one by pressing RESET, the level number should be momentary shown and then the game should resume with the next (or current, if you presse RESET) level without user interaction. The full level select screen should only be dispalyed when the SELECT switch is pressed.

 


Thanks again for the update!

 

Link to comment
Share on other sites

3 hours ago, alex_79 said:

I need to catch up with the all the updates (I was on vacation).

 

First impressions after playing just a little bit of the latest version:

 

I like the animated player gfx. The "two independent colors" version posted above looks nicer, but I wouldn't mind if it doesn't make in the final version. The other features in the to-do list should have precedence, in my opinion.

 

I like the pulsing target positions as shown in the video a few posts above, while I find the flashing ones in the current build a bit annoying if there are a lot of targets displayed. If the pulsing ones cannot be inplemented, I'd prefer them to just be static.

 

When completing a level, or restarting the current one by pressing RESET, the level number should be momentary shown and then the game should resume with the next (or current, if you presse RESET) level without user interaction. The full level select screen should only be dispalyed when the SELECT switch is pressed.

 


Thanks again for the update!

 

 

Thank you for the feedback. I value it.

The multicolour sprite won't be possible, and in any case the sprite artist doesn't like it :) so I do take that into account.

I have restored the pulsing target - I think the general feedback for that was positive, so it's in this current build.

I have implemented your excellent suggestion regarding the usage of RESET/SELECT and how the selection screen should work. I think it's working as you have described.

Here's the latest binary - I think this might be the one reviewed on Zeropage Homebrew in a few hours...


 

Sokoboo_20190829.bin

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

Sokoban is one of my favorite games ever, and this is such a charming version.

 

I love the sprites, colors, animation, the level progression, and the music. In fact, I was wondering why I couldn't get the song "Music for a Found Harmonium" out of my head this afternoon--and then I realized it is because the music sounds like a chip tune version of that. It's quite catchy.

Link to comment
Share on other sites

Just now, spspspsp said:

Sokoban is one of my favorite games ever, and this is such a charming version.

 

I love the sprites, colors, animation, the level progression, and the music. In fact, I was wondering why I couldn't get the song "Music for a Found Harmonium" out of my head this afternoon--and then I realized it is because the music sounds like a chip tune version of that. It's quite catchy.

Thank you!  Just wait until the final version is in. This is just a short sequence, and hopefully there will be much much more in there.

It is, in fact, a version of that song - I had mentioned it earlier in the thread but if you spotted it on your own, that's great.  It will be quieter in the final version, but rising to a crescendo when you have just one target to get. Something like that.

 

 

 

  • Like 4
Link to comment
Share on other sites

I got up at 4am to watch/participate in the ZPH review, above. I do so wish they'd schedule reviews of carts in the order of timezones so that people can get some sleep. Anyway, being 3rd in line - the first two took about an hour and a half to review so it was about 5:30 am before we got down to business.

 

I have a couple of take-homes from this session. The first is that Sokoboo is not an entertaining game to watch others play. Sure, it's real pretty - but there isn't that "wow factor" that makes it interesting to watch. Well, maybe it's a bit annoying when you see people floundering around making the wrong moves. But what happens in these reviews is that practically none of the audience says anything when Sokoboo is being played. I suspect they just all wandered away and got themselves a cup of tea.

Having said that, I did get a few pointers on things to fix.  The first was joystick responsiveness. It's a fine line between being responsive (not missing any moves), and running too fast and doing moves you didn't intend. It's compounded by the game not running at 60Hz internally - it's an asynchronous engine and sometimes things take a little longer, so you don't always get to the player move at the same regularity.

In any case, I've done some work on it and I think it's much improved.

 

What I've also started fixing up is the flow of animation. That is, rather than a hodge-podge of individual animations that just get triggered whenever, which effectively causes arms and legs to be flailing all over the place... I am paying careful attention to the animations and what they are doing and flow to next. It's much cleaner now, and less flailing, so to speak. Still a few improvements to do, but I'm happy with the results.

 

I'm waiting on some sound effects and music, which I expect might arrive this weekend. Then we can start to finish up the gameplay side of things.

 

I really don't know if I can be arsed doing a "low score" table. It was brought up in the ZPH review that I should probably have an indicator of the optimal number of moves for a level. Unfortunately, this is an unknown for me because the levels were pulled off the interweb, and in any case they were probably auto-generated which means they don't have the "best" available anyway.  Sokoban is a very intractible problem and the optimum number of moves can probably only be found with a deep search, and given the high branching factor... this is not practicable especially when you're getting into the hundreds of moves. So, no "best" indicator, I'm afraid.

 

Remember the controls...

 

SELECT - go to level selection screen

RESET - restart current level

button press/release - take back move

button held/direction - look around the board

 

The game will configure for PAL or NTSC based on the RIGHT DIFFICULTY switch. Set to A for NTSC, and B for PAL

Stella auto-starts with it set to B, which is a bit of a bummer. Newer versions of Stella will (soon) scale the screen differently, and the NTSC version definitely looks better because of the thicker scanlines. So, I recommend you set right difficulty at A and reload/restart so that it's showing you an NTSC screen.

 

Well, here's a binary and video for your entertainment...

 

sokoboo_20190830.bin

Edited by Andrew Davie
changed difficulty switch recommendation to A
  • Like 4
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...