Jump to content
IGNORED

Chaotic Grill (BurgerTime remake) in progress


splendidnut

Recommended Posts

8 hours ago, SpiceWare said:

 

In DPC+ you set the data stream pointers using 6507 code.
...

Part of streamlining CDFJ was to move all the pointer and increment initializations to custom ARM code. This simplified the driver, by eliminating a bunch of registers in cartridge space that DPC+ has to handle. This helped to reduce CDF's driver size down to 2K from DPC+'s 3K.

Hey Darrell!  Thanks for the info (and reminder).  I must be getting old. ;) :dunce:  Of course that's what I had to do in Scramble (which uses DPC+) back in 2015, although in that game I *do* call the ARM to do all the scrolling and game logic.  At the time I don't think we could figure out how to set the DS pointers in ARM code, although it may be possible.  I incorrectly assumed CG was using CDFJ and *had* to initialize the pointers in ARM code.  My bad! :P 

7 hours ago, splendidnut said:

The 4k RAM is divided roughly in half with a couple of small chunks used for other things:

  ~2k for sprites (static / ROM)

  ~2k for the burger playfield graphics + color buffers.

  64 bytes for burger state info

  64 bytes for level layout

  192 bytes for level playfield graphics

  ~20 bytes for kernel split / sprite multiplexing info

:thumbsup: 

7 hours ago, splendidnut said:

The new titlescreen also make quite a bit of use of the 4k RAM also.  (sidenote:  almost had a 4k vanilla ROM version of just the title screen running, but there were a few timing issues)

I really like the new titlescreen, very creative! :thumbsup:  

7 hours ago, splendidnut said:

I actually don't ever call the ARM at all.... it burns all of it's time as the ROM emulator / DPC+ driver.


As @SpiceWare said, DPC+ does allow access to the datastream pointers from the 6507.  I am doing most of the register setup during VSYNC, but I also use a couple of the datastreams as the "level layout / burger state" access pointers.

 

Thanks for the clarification; I had forgotten that you could set the DS pointers in ASM using DPC+. :dunce: 

7 hours ago, splendidnut said:


I won't lie... That was the inspiration for doing the level editor here.  I believe you first announced that around the time that I redid the level layout code to it's current configuration (storing the layout in DPC+ RAM)... which made me realize that an integrated level editor could be done here too.

Glad to hear you were able to get some inspiration from the WoW level editor! :thumbsup:   I initially designed it for myself (as we developers usually do) because I was getting a headache trying to design them manually and covert them to the packed data format I was using.  Necessity is the mother of invention, as they say! :) 

7 hours ago, splendidnut said:

I've got some pieces already written for it... and I'm on vacation next week... so maybe we'll see a fully working editor soon.  :)

Awesome! :thumbsup:  

7 hours ago, splendidnut said:

---

 

Thanks for your comments John! 

 

And thanks to everyone else who's commented, liked, and/or downloaded.  It means a lot to me.

You're welcome Philip, and again great job!  I know the last 10% of a game usually takes 90% of the time, so hopefully the community support and excitement can help with a few of those percentage points and get you over the hump. 🤞

 

Good luck!

John

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

40 minutes ago, Nathan Strum said:

Not bad. ;) 

 

image.thumb.png.7e5d82b965d35604e8521fe55e8dde4b.png

Ditto. :D 

 

chaoticGrill_NTSC_20221113.thumb.png.852ef52be2f575d7b8b1cb50792cbdc7.png

 

I did notice that the life counter seems to only go down sometimes; I couldn't see the pattern but it would stay the same number after I got killed.  Also, I'm not sure when you get bonus lives, but those seem to pile up too.  I couldn't figure out when they were being awarded.  

 

Some other issues:  there was a couple of times when a dropped condiment went right through an enemy that was climbing up the ladder under it. 

 

Also, I'm not sure if it's this way in the arcade, but when you drop the last condiment to end a level, it seems to only award 50 points even if there are enemies on it.

 

Other than those issues, it's really solid and a lot of fun!  The enemies really start moving fast the 3rd time around the levels. :o 

 

EDIT: Also, I'm sure this has been mentioned:  the bonus pepper items don't seem to disappear after a few seconds, only when you pick them up.

 

  • Like 2
Link to comment
Share on other sites

The life counter is decremented immediately before the death music plays.  So when you hear the death music start to play, the life counter has already been decremented.

 

A bonus life is given every 10,000 points.  (which I believe is the lowest setting on the arcade)

 

With the bonus item, I believe I just forgot to add a timer when I wrote the new code for that.

 

For the rest, you've jogged my memory a bit.  It's been over a year since I really looked at any of this code, but I kind of remember the issues there...

 

The burger / enemy interaction issues are fallout from rewriting the burger code.  I think there's an off-by-one (or index stomp) issue somewhere, since one of the enemies will randomly slow down or stop (seems to be the last one in the list).  That might be the only thing that's wrong, but there's probably more issues lurking in there.  These issues are very sporadic, and it's hard to catch them.  Usually I've been working on something else when I run into them, so I wasn't able to dig too deeply into them.

 

I took a quick look at the end-of-level event processing code.  I see that at the end of the level, the player/enemy logic is blocked from fully running (there is an alternate code path in play) which may be where the points are getting lost.  When the level end (or player death) condition is met, it scores the riders before the burgers fall completely.... so you might actually be getting the points, just earlier than expected.

 

The enemy AI / movement code will be one of the next areas that I'm going to dedicate time to analyzing and reworking.   ...after the level editor.

 

Too many things to get distracted by... lol.

  • Like 5
Link to comment
Share on other sites

9 hours ago, splendidnut said:

The life counter is decremented immediately before the death music plays.  So when you hear the death music start to play, the life counter has already been decremented.

Gotcha, that makes sense.  Have you considered having the life counter decrement when you start a new life like the arcade?  Right now it's a bit confusing since I usually think of the life counter as the number of lives in reserve, so when you see the chef icon and 1 you think you have 1 more in reserve when actually you're on your last life.  This would also allow you to show up to 10 active lives instead of 9 since you would have your active player plus 9 in reserve. :idea:  

9 hours ago, splendidnut said:

A bonus life is given every 10,000 points.  (which I believe is the lowest setting on the arcade)

Okay, that explains it.  Since I got 160K+, that means I had 19 lives. :D  Are you planning on different skill levels/game settings to choose # of starting lives, bonus at, difficulty, etc.?  

9 hours ago, splendidnut said:

With the bonus item, I believe I just forgot to add a timer when I wrote the new code for that.

That will be a game changer.  Typically in the arcade I have 5 or so peppers at a time, but in this version I have 9+ constantly, so it changes your game strategy as you don't need to be as careful getting trapped since you typically have an abundance of pepper to throw in the enemy's eyes. :D 👀  I played a quick game and was able to get up to 100K with no deaths and 9+ lives, mostly because of the extra pepper. ;)  

9 hours ago, splendidnut said:

For the rest, you've jogged my memory a bit.  It's been over a year since I really looked at any of this code, but I kind of remember the issues there...

 

The burger / enemy interaction issues are fallout from rewriting the burger code.  I think there's an off-by-one (or index stomp) issue somewhere, since one of the enemies will randomly slow down or stop (seems to be the last one in the list).  That might be the only thing that's wrong, but there's probably more issues lurking in there.  These issues are very sporadic, and it's hard to catch them.  Usually I've been working on something else when I run into them, so I wasn't able to dig too deeply into them.

Yes, I've seen an enemy slow down to a crawl a few times, but it usually only lasts for a couple seconds.  

9 hours ago, splendidnut said:

I took a quick look at the end-of-level event processing code.  I see that at the end of the level, the player/enemy logic is blocked from fully running (there is an alternate code path in play) which may be where the points are getting lost.  When the level end (or player death) condition is met, it scores the riders before the burgers fall completely.... so you might actually be getting the points, just earlier than expected.

Yes, you may be correct.  I think I did look at my score before I dropped the burger and saw only 50 points awarded a couple times, but when I tried again I couldn't reproduce.  If I do, I'll take a savestate and send it along to you in a PM if you're interested.

9 hours ago, splendidnut said:

The enemy AI / movement code will be one of the next areas that I'm going to dedicate time to analyzing and reworking.   ...after the level editor.

Looking forward to that level editor! :thumbsup:  

9 hours ago, splendidnut said:

Too many things to get distracted by... lol.

Been there!  I end up making a bunch of lists and I try to prioritize when I'm pushing to finish a game, but typically I just end up working on the most fun task at the time. :P  

 

Good luck!

John

 

Link to comment
Share on other sites

Not sure if anyone's brought this up before, but I have a request.

 

What causes a burger piece to fall is inconsistent, depending on whether you're moving left or right.

 

If moving left, you can step almost to the edge of the burger piece before it will fall:

chaoticGrill_NTSC_20221113_7.thumb.png.b14615a20910b3ed366995782d721678.png

 

But if moving to the right, you can't move quite as far before it falls, leaving you less room to lure an enemy in behind you:

 chaoticGrill_NTSC_20221113_6.thumb.png.ad9badc9c3e0449bb4b9814cb2ba2f99.png

 

It would be great if moving right could be made consistent with moving left, so you had the same behavior both ways.

 

- Nathan

  • Like 5
Link to comment
Share on other sites

The collision detection stuff needs to be revisited at some point.  A similar issue in this area is when the enemies are just crossing onto or off of a burger and miss their ride (even though they appear to be on the burger).

 

Right now, the code is using a semi-quick "sprite center X to playfield X" conversion for figuring out which burger column and which part of the burger piece the chef is on.  This code does not take into account which direction the chef is moving, nor the size of the sprite for each frame of animation (for some frames, the chef is only 6 pixels wide and not 8 )

 

The burger collision issues can probably be taken care of if I take those things into account, AND/OR add in a mapping table that expands the collision area a bit.  I'll need to play around with this a bit to figure out which is the best (and/or fastest) solution.

 

-----

 

I'm slowly making progress on the level editor, but it's going slower than I would like.  I started off taking a platform/level editor that I already wrote and integrating that into the ChaoticGrill code base, which gave me the overall structure for the editor (input handling, menu handling, cursor movement, etc).  It was a good starting point, but I had to rewrite the code from the editor that's responsible for updating the level playfield data.   I'm currently in the process of writing another version based on the code already in ChaoticGrill; since the ChaoticGrill code wasn't designed for doing small updates to the level at a time.

 

With that said, I believe I've gotten the platform editing portion working properly.  Next up, ladders... then burgers, enemies, bonus item.

  • Like 6
Link to comment
Share on other sites

Alright... I have the beginnings of a level editor integrated in.

 

The level editor is currently accessed via the "Select" switch when in the game.  When started, the enemies are hidden, a menu/status area appears at the top, and the pepper spray becomes the cursor to move around the screen.

 

Moving UP from the top of the level will take you into the menu.

 

The level editor menu at the top of the screen with three options (LEFT and RIGHT to move thru the options, DOWN to move back into the editor):

  - Level -> Edit the level layout.

  - Burger -> Edit the burgers (I just started working on this)

  - Enemy -> Nothing yet... but should let you Edit the enemies / move their entry spots.

 

The "Level" option allows you to change the layout by editing the maze intersections.

 

Use the cursor to move around the screen.  Use the FIRE button to switch between Move and Edit modes.  When in Edit mode, LEFT, RIGHT, UP, and DOWN will toggle whether that direction is available at the current intersection.  The neighboring block will also be changed to match and maintain two-way paths between intersections.

 

The "Burger" option only allows you to change the graphics for the pieces currently on the level.  Again, use FIRE button to switch between Move and Edit modes.  When in Edit mode, UP and DOWN will rotate thru the burger piece graphics available:  top bun, lettuce, meat, bottom bun, cheese, tomato, middle bun, plate.

 

I still need to figure out exactly how I want burger editing to work, since I need a nice easy way to change how tall (how many pieces) each column has.

 

I haven't given much thought to how enemy editing should work... but I don't think there is much to be done there since they only come on screen from the far left / far right.

 

Please feel free to give your thoughts and feedback on this.

 

Enjoy!

 

NTSC:

chaoticGrill_NTSC_20221127.bin

 

PAL60:

chaoticGrill_PAL60_20221127.bin

 

P.S.  Bug fixes:

  - Bonus item will now timeout after a while and disappear.

  - Death + Level_End should now be handled properly...

  - Chef climbing animation motion has been fixed... So it should look like the Chef is actually climbing the ladder.

  - Fixed a bug with one of the enemies randomly slowing down.... (two temporary variables were crossing paths)

  • Like 3
  • Thanks 4
Link to comment
Share on other sites

3 hours ago, splendidnut said:

Nice!  That's an arcade quality bug right there.  : ) 

 

Player's Death state got overwritten by the Level End state.  That should be an easy fix. ... finger crossed...

Dang it! I was hoping to do the bug when the game released!! ;) 

 

(p.s. thanks for the collision routine! I managed to get it working in ICT3)

Link to comment
Share on other sites

4 hours ago, splendidnut said:

Alright... I have the beginnings of a level editor integrated in.

 

The level editor is currently accessed via the "Select" switch when in the game.  When started, the enemies are hidden, a menu/status area appears at the top, and the pepper spray becomes the cursor to move around the screen.

 

Moving UP from the top of the level will take you into the menu.

 

The level editor menu at the top of the screen with three options (LEFT and RIGHT to move thru the options, DOWN to move back into the editor):

  - Level -> Edit the level layout.

  - Burger -> Edit the burgers (I just started working on this)

  - Enemy -> Nothing yet... but should let you Edit the enemies / move their entry spots.

 

The "Level" option allows you to change the layout by editing the maze intersections.

 

Use the cursor to move around the screen.  Use the FIRE button to switch between Move and Edit modes.  When in Edit mode, LEFT, RIGHT, UP, and DOWN will toggle whether that direction is available at the current intersection.  The neighboring block will also be changed to match and maintain two-way paths between intersections.

 

The "Burger" option only allows you to change the graphics for the pieces currently on the level.  Again, use FIRE button to switch between Move and Edit modes.  When in Edit mode, UP and DOWN will rotate thru the burger piece graphics available:  top bun, lettuce, meat, bottom bun, cheese, tomato, middle bun, plate.

 

I still need to figure out exactly how I want burger editing to work, since I need a nice easy way to change how tall (how many pieces) each column has.

 

I haven't given much thought to how enemy editing should work... but I don't think there is much to be done there since they only come on screen from the far left / far right.

 

Please feel free to give your thoughts and feedback on this.

 

Enjoy!

 

NTSC:

chaoticGrill_NTSC_20221127.bin 32 kB · 2 downloads

 

PAL60:

chaoticGrill_PAL60_20221127.bin 32 kB · 1 download

 

P.S.  Bug fixes:

  - Bonus item will now timeout after a while and disappear.

  - Death + Level_End should now be handled properly...

  - Chef climbing animation motion has been fixed... So it should look like the Chef is actually climbing the ladder.

  - Fixed a bug with one of the enemies randomly slowing down.... (two temporary variables were crossing paths)

Awesome W.I.P. Philip ! When do you get it finished ? It will be the best version. Found this video n your honor. Cheers !

 

Link to comment
Share on other sites

5 hours ago, splendidnut said:

Alright... I have the beginnings of a level editor integrated in.

 

Very cool!  :thumbsup:  

5 hours ago, splendidnut said:

P.S.  Bug fixes:

  - Bonus item will now timeout after a while and disappear.

:thumbsup:  

5 hours ago, splendidnut said:

  - Death + Level_End should now be handled properly...

I hit a bug on my first game.  I happened to end the level and run into an enemy (I think) at the same time.  The level ends but the game gets stuck and repeats the end tune.  Here is a savestate (using Stella 6.7) - hope it helps!

 

chaoticGrill_NTSC_20221127.st0

5 hours ago, splendidnut said:

  - Chef climbing animation motion has been fixed... So it should look like the Chef is actually climbing the ladder.

Looks good!  I think the arcade animation is a bit  more 'bouncing' but this is better than before where it looked like the chef was floating up the ladders. :thumbsup:  

5 hours ago, splendidnut said:

  - Fixed a bug with one of the enemies randomly slowing down.... (two temporary variables were crossing paths)

Darn - I liked that bug - nice reprieve when things got intense. :P  

 

What are your thoughts on  changing the life counter to be a reserve counter as I suggested above to make it more like the arcade (where the # is the number of lives in reserve vs. now where it's the number of lives including your active player)?  One small benefit it that it increases the # of lives you can represent to 10 (1 active + 9 reserve) vs 9 as it is now. :idea:  

 

I'll play a few more games and let you know how it goes. 

 

Great job!

 

Link to comment
Share on other sites

1 hour ago, johnnywc said:

I hit a bug on my first game.  I happened to end the level and run into an enemy (I think) at the same time.  The level ends but the game gets stuck and repeats the end tune.  Here is a savestate (using Stella 6.7) - hope it helps!

I hit the same bug, I think. I cleared the level, but it wouldn't end. I just kept running around.

chaoticGrill_NTSC_20221127.st0

 

Finally I gave up and ran into an enemy, and got stuck in the same loop you did.

Link to comment
Share on other sites

17 hours ago, johnnywc said:

What are your thoughts on  changing the life counter to be a reserve counter as I suggested above to make it more like the arcade (where the # is the number of lives in reserve vs. now where it's the number of lives including your active player)?  One small benefit it that it increases the # of lives you can represent to 10 (1 active + 9 reserve) vs 9 as it is now. :idea:  

That's really how it should work.  I want to say that's how I originally had it and maybe it got broken along the way.  But, I'm really not sure.

 

 

17 hours ago, johnnywc said:

I hit a bug on my first game.  I happened to end the level and run into an enemy (I think) at the same time.  The level ends but the game gets stuck and repeats the end tune.  Here is a savestate (using Stella 6.7) - hope it helps!

Indeed that did savestate made it real easy for me to see the issue.  Thanks!

 

Player death + Level complete are still trampling over one another, this time using a timer:  one resets a timer while the other is waiting for the timer to finish counting down.  I really need to rework the code involved in that area.  A bit crazy that it seemed to be working well for so long and just recently decided to break.

 

I still need to take a look at Nathan's savestate and see if it's the same or similar issue.

 

  • Like 2
Link to comment
Share on other sites

Ugh... I accidentally inverted the logic on the "end_of_level" check with my recent fix.  I recall having a feeling that something wasn't right about it; should have listened to my gut.  I've got a fix for that... but I'd like to hold off on doing another release until I take a look at changing the lives display to be an in-reserve counter instead.

  • Like 3
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...