Jump to content
IGNORED

BlackJack Theta VIII - 2600 game - 8K


azure

Recommended Posts

Current version:

BlackJackThetaVIII-0-96.bin

 

Test version: begins at $90,000,000 and split is always allowed on opening hands. 

BlackJackThetaVIII-0-96-90k.bin

 

This is the latest version of my blackjack game. It's almost feature complete. The features I've implemented so far are:

  • 16K F6 bank switching
  • Screens: Title screen, Ship crash landing animation, Betting screen
  • Play with 1, 2, or 4 decks
  • Dealing to 75% penetration, Deterministic card dealing
  • Navigation menu, Dashboard display of current options
  • Game Options: Early surrender (Es); Late surrender (Ls); Hit on soft 17 (H17); Stand on soft 17 (S17)
  • Hand Options: Double down (D); Surrender (Su); Insurance (I); Splitting hands (Sp)
  • Card flip animation, Sound effects
  • Expanded the betting denominations up to 10,000
  • Made the player's chips represent current number of chips
  • The fire button now works to take the currently selected action.
  • Cutscenes: landing, losing, and winning

 

Features I will be adding next:

  • Keypad support
  • Refining the split hands interface, because it's confusing
  • Idle animation

 

Features I'm considering:

  • Red/Black pip colors
  • Looking into allowing more than 2 split hands


Premise:
You're a NASA astronaut who crash landed on the uninhabited, inhospitable planet Theta VIII. You're living out the rest of your life in an artificial hotel casino created for you by the intelligent species who damaged your craft and killed your crew. Not knowing your preferred living conditions, the intelligent species constructed the hotel using the narrative from a poorly written pulp fiction novel in your possession.

You can't leave and Blackjack is your only entertainment.

 

However, there may be an escape. The casino closely resembles the story in the novel, which describes a casino being bought up by foreign investors. Perhaps your way out is to break the bank!

Instructions (click the spoiler)

Spoiler

 

This game uses the joystick in the left port.

 

Left difficulty switch:

  • A = late surrender (harder)
  • B = early surrender (easier)
  • Indicated by Es and Ls

Right difficulty switch:

  • A = dealer hits on soft 17 (harder)
  • B = dealer stands on soft 17 (easier)
  • Indicated by S17 and H17

Select switch:

  • Cycles between 1, 2, and 4 decks
  • Changing decks will trigger a reshuffle and empty the discard pile
  • Indicated by 1d, 2d, or 4d

Black & White switch:

  • Currently not implemented. This may enable red and black color pips in a future release.

Title Screen

  • Press Fire to continue

Landing Screen

  • Press Fire to continue

Betting Screen

  • Up or Down to increase or decrease the bet
  • Left or Right to select the chip denomination
  • Press Fire to begin the hand

Game Screen

  • Left and Right cycle through available moves
  • Pressing Fire or Down takes the selected action
  • When the hand is over, pressing Fire starts a new game
  • Pro-Tip for quick play: When Hit is selected, pressing Up will stand pat

Split Hands

  • The currently selected hand is white and the inactive hand is grey.
  • When both hands are over, pressing Up or Down displays the score of each hand.

----------
Blackjack Rules:

A bet must be made before playing a hand. The goal is to reach a score of 21 without going over. A player requests more cards by hitting and ends their hand by staying (i.e. standing pat).

 

Face cards are worth 10 points. An ace is worth 1 or 11 points depending on which is preferable. The remaining number cards are worth their number value.

 

Achieving a 21 score is a blackjack, which pays out 2 to 1. Achieving 21 with only two cards is a natural blackjack, which pays out at 3 to 1. Scoring over 21 is a bust, which loses the hand and the bet. If the dealer receives an equal score, the game is a push, so the bet is returned.

 

If both the player's opening cards are duplicates or 10 point cards, they may split their cards into two hands. Splitting cards requires making a 2nd equal bet.

 

The player may double the bet on any opening hand by doubling down. The hand will be dealt one card then play moves to the dealer or the next split hand. Doubling down requires making a 2nd equal bet.

 

The player may take an insurance bet if the dealer's opening card is an ace or 10 point card. Taking insurance is betting on the dealer having a natural black jack. If the dealer does not have a blackjack, the player loses their insurance bet and play on the hand continues as normal. Insurance requires making a bet one half of the original bet.

 

A player may surrender on any hand. Surrendering ends the hand and returns one half of the bet. Surrender is not available after the opening move.

 

Receiving a blackjack or 21 score will automatically end the hand. Play moves to dealer or the next split hand.

 

Additional Info:
Blackjack

  • A natural blackjack pays 3 to 2.
  • A blackjack on any split hand pays 2 to 1.
  • The dealer checks if it has blackjack before hitting the player's hand.
  • A player's natural blackjack is a push against the dealer's natural blackjack.

Dealer

  • The dealer may hit or stand on soft 17 as configured by the left difficulty switch
  • The dealer reshuffles at 75% deck penetration.

Double down

  • Double down pays 2 to 1 of the original bet.
  • Double down is available on split hands.

Splitting

  • Splitting hands is permitted on two equivalently valued cards. It requires another bet equal to the original bet.
  • Split hands cannot be split again.
  • Double down, insurance, and surrender are available on split hands.
  • A blackjack on a split hand pays out 2 to 1.

Surrender

  • Early and late surrender is configured by the right difficulty switch
  • Surrender returns 50% of your original bet.

Insurance

  • Insurance is offered when the dealer shows an ace or 10 value card.
  • The insurance bet is 50% of your original bet and pays 2 to 1.

Miscellaneous

  • Winnings that are not evenly divisible by 2 are rounded down.
  • The game ends when the player is out of chips or breaks the bank.
  • A soft 17 is a hand containing an 11 point ace that totals to 17. Example: Ace + 2 + 4 = 17

 

New title screen.

title.png

 

New landing screen. It's been rewritten using tail call optimizations and a new vertical positioning scheme that uses a modulo strategy. It's composed of four 32-pixel rows and two variable sized rows. I plan to use this kernel in Battle for Proton, which is why I spent so much time on it.

landing.png

betting.png

play.png

 

Old screens left for comparison:

Spoiler

title.png

 

landing.png


Dev Notes:

Spoiler

The user interface still needs work. The split hands are confusing, because it's hard to tell which is the active hand. The in-game bets need more feedback when the player lacks the chips to make the bet. The in-game bets include double down, insurance, and splitting cards.


I'm looking into adding red and black pip colors. They will be enabled with the Black & White switch. The texture background must be disabled, because I need the playfield to render pip colors. I like the look of the textured background, so I'm keeping it as an option.

 

What I mean by deterministic card dealing is the random number generator is seeded once when the deck is shuffled. It is not reseeded again until the next shuffle. The intent is to mimic a physical deck of cards, so once the cards are shuffled they will be dealt in a deterministic order. Continuously reseeding would mimic a continuously reshuffling deck, which was not my preference, because it defeats card counting.

 

I'm also looking into allowing more split hands. It should be possible with the available RAM.

 

I don't know if this version works on the portable, because I have only tested on Stella and a 4-switch.

 

Older versions:

 

Edited by azure
Update with 0.96
  • Like 8
Link to comment
Share on other sites

I'm doing pretty good at it! up to $51,599.....can I cash out now?!?!?!? ;-)

 

Suggestion- anyway of adding an up or down arrow display for hit or stand? I keep forgetting which way is which.

 

 

I haven't even gotten over 5,000 chips. :-o​ I may have to increase the player's chips to support up to 8 digits if you keep winning. :P

 

 

I'm going go figure something out with a move indicator. I'm thinking of having a joystick icon show the available moves.

Link to comment
Share on other sites

 

 

I haven't even gotten over 5,000 chips. :-o​ I may have to increase the player's chips to support up to 8 digits if you keep winning. :P

 

 

I'm going go figure something out with a move indicator. I'm thinking of having a joystick icon show the available moves.

Go big or go home! so in another words.....bet big! and win big!!

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

I've attached version 0.6 to the first post. Most the changes are non-graphical. I've bumped the ROM size up to 16K, because there wasn't going to be enough space for the animations I plan to add. I will be adding card animations on the deal (suggested by Thomas Jentzsch), but it's going to require some refactoring. There is a lot of code that could be further optimized, but it may not be worth the effort.

 

The next priorities are going to making available moves more intuitive, adding game options, animations, and finishing polish.

 

This update includes:

  • A patch for a betting bug found by Arenafoot
  • Sound effects
  • A few routines were optimized
  • Reorganized code for F6 bankswitching
  • Wrote a simplified sound driver for sound effects

 

The bank layout is:

  • Bank 0 contains the title screen.
  • Bank 1 contains the game screen.
  • Bank 2 contains game logic.
  • Bank 3 contains the sound driver and sound data.

 

I had to add ballast code to get it to work on the Atari portable. I presume the portable was having trouble detecting the memory model. Thankfully, I had previously read a thread recommending it, so that saved a lot of debugging time.

  • Like 3
Link to comment
Share on other sites

I've attached version 0.6 to the first post. Most the changes are non-graphical. I've bumped the ROM size up to 16K, because there wasn't going to be enough space for the animations I plan to add. I will be adding card animations on the deal (suggested by Thomas Jentzsch), but it's going to require some refactoring. There is a lot of code that could be further optimized, but it may not be worth the effort.

 

The next priorities are going to making available moves more intuitive, adding game options, animations, and finishing polish.

 

This update includes:

  • A patch for a betting bug found by Arenafoot
  • Sound effects
  • A few routines were optimized
  • Reorganized code for F6 bankswitching
  • Wrote a simplified sound driver for sound effects

 

The bank layout is:

  • Bank 0 contains the title screen.
  • Bank 1 contains the game screen.
  • Bank 2 contains game logic.
  • Bank 3 contains the sound driver and sound data.

 

I had to add ballast code to get it to work on the Atari portable. I presume the portable was having trouble detecting the memory model. Thankfully, I had previously read a thread recommending it, so that saved a lot of debugging time.

Awesome!!! I love the sounds now! :lust: :lust:

 

There's still a glitch where once the dealer's hand is dealt, it immediately goes to the next hand and you can't see the cards that were dealt. The same thing happened during the broadcast of ZeroPage Homebrew.

Link to comment
Share on other sites

Awesome!!! I love the sounds now! :lust: :lust:

 

There's still a glitch where once the dealer's hand is dealt, it immediately goes to the next hand and you can't see the cards that were dealt. The same thing happened during the broadcast of ZeroPage Homebrew.

 

I've not been able to reproduce this. I'll spend some time trying to reproduce it, but right now I don't know what it is.

 

I checked the Award's video again frame by frame. I'm pretty sure Darcy pressed the joystick up (STAY) and followed with a trigger press (CONTINUE), which means it worked as I intended it to. I made the trigger button function only as continue, because if I make the same button be both hit and continue, then accidental double presses would quickly advance to the betting screen, which would deny the user a chance see the result.

 

I could switch around the joystick functions, but I think that would be more confusing. I chose up for stay and down for hit to mimic the motion you make on a real blackjack table. I'm not sure how I can program the buttons differently to prevent missing the results. If I add confirmation dialog to continue, it would disrupt the flow of fast play. As I have it now, you can double press the trigger button to quickly select the same bet and start a new hand.

 

I'm open to anyone's suggestions on how to make the functions easier. I was planning to use the bottom chip row to show a joystick indicator or maybe put it above the dealer's row and shift everything else down. I'm running out of screen real estate, so I don't have many options without dramatically changing the layout (which I don't want to do). I really wanted to avoid flicker in this game so, using the side areas isn't going to work.

Link to comment
Share on other sites

 

I've not been able to reproduce this. I'll spend some time trying to reproduce it, but right now I don't know what it is.

 

I'm open to anyone's suggestions on how to make the functions easier. I was planning to use the bottom chip row to show a joystick indicator or maybe put it above the dealer's row and shift everything else down. I'm running out of screen real estate, so I don't have many options without dramatically changing the layout (which I don't want to do). I really wanted to avoid flicker in this game so, using the side areas isn't going to work.

Is there anyway of adding a few seconds at the end of each hand to the program where you can't press a button or move the joystick and make the program take a timeout before moving on?

Link to comment
Share on other sites

Is there anyway of adding a few seconds at the end of each hand to the program where you can't press a button or move the joystick and make the program take a timeout before moving on?

 

I could disable the joystick for a short period of time after the hand ends to eliminate inadvertent button presses.

Link to comment
Share on other sites

  • 3 weeks later...

I've uploaded the latest version 0.7. Progress is going slow, so there's not a huge number of new features.

Graphical features added in this update:

  • Animated title screen
  • Card shoe indicator
  • Joystick indicator for available moves

Logic updates:

  • A number of inefficient routines were rewritten and dramatically improved.
  • Progress on reducing RAM usage for sprite drawing. Two sets of sprite pointers (12 bytes each; 24 bytes total) were used to quickly display two sets of 6 sprites in two adjacent rows. I've rewritten most the drawing routines to use only a single set of sprite pointers reducing the RAM usage to 12 bytes. There are a few more to rewrite, so I expect to finish those off in the next release.
  • Dramatic reduction in ROM usage for multi-colored 48 bit sprites. I was previously using an unrolled loop to accomplish the effect, which consumed a lot of ROM space. I've rewritten the routines preserving the loops by aligning cycles to exactly 76 per scan line.
  • Fixed a bug in my bank switching routine. It was triggered when the routine crossed a page boundary, which created a math overflow bug, so the bug did not manifest in all versions.

I am looking in the following tasks for the next update.

  • Arenafoot's suggestion for an input delay for debounce. The code has debounce logic, but a joystick delay may improve the current debounce logic.
  • Card dealing animations
  • Making player chips (bottom row of chips) reflect how many chips the player has.
  • Game options
  • Further reductions in RAM and ROM usage
  • Fixing a bug that corrupts memory due to a bad loop. I've only seen it occur a few times, so I haven't narrowed down the loop that's causing it.
  • Revising my sound driver to support 2 channel audio clips. Currently, they play on a single channel. They are bound to whichever channel is available. This will reduce an extraneous bankswitch call by merging 2 calls to 1 call.

I've been entertaining the idea of tracking statistics for the player's game play and adding a statistics screen. With the reduction in RAM usage, I may have the space for it.

 

 

Update:

 

Coincidentally, I discovered the cause of the memory corruption bug after I submitted my last post. It's a bug that's been in the code since the beginning. If the dealer deals their own hand 7+ cards, it corrupts memory after the card array.

Edited by azure
  • Like 3
Link to comment
Share on other sites

I've uploaded the latest version 0.7. Progress is going slow, so there's not a huge number of new features.

 

Graphical features added in this update:

  • Animated title screen
  • Card shoe indicator
  • Joystick indicator for available moves

Logic updates:

  • A number of inefficient routines were rewritten and dramatically improved.
  • Progress on reducing RAM usage for sprite drawing. Two sets of sprite pointers (12 bytes each; 24 bytes total) were used to quickly display two sets of 6 sprites in two adjacent rows. I've rewritten most the drawing routines to use only a single set of sprite pointers reducing the RAM usage to 12 bytes. There are a few more to rewrite, so I expect to finish those off in the next release.
  • Dramatic reduction in ROM usage for multi-colored 48 bit sprites. I was previously using an unrolled loop to accomplish the effect, which consumed a lot of ROM space. I've rewritten the routines preserving the loops by aligning cycles to exactly 76 per scan line.
  • Fixed a bug in my bank switching routine. It was triggered when the routine crossed a page boundary, which created a math overflow bug, so the bug did not manifest in all versions.

I am looking in the following tasks for the next update.

  • Arenafoot's suggestion for an input delay for debounce. The code has debounce logic, but a joystick delay may improve the current debounce logic.
  • Card dealing animations
  • Making player chips (bottom row of chips) reflect how many chips the player has.
  • Game options
  • Further reductions in RAM and ROM usage
  • Fixing a bug that corrupts memory due to a bad loop. I've only seen it occur a few times, so I haven't narrowed down the loop that's causing it.
  • Revising my sound driver to support 2 channel audio clips. Currently, they play on a single channel. They are bound to whichever channel is available. This will reduce an extraneous bankswitch call by merging 2 calls to 1 call.

I've been entertaining the idea of tracking statistics for the player's game play and adding a statistics screen. With the reduction in RAM usage, I may have the space for it.

 

 

Update:

 

Coincidentally, I discovered the cause of the memory corruption bug after I submitted my last post. It's a bug that's been in the code since the beginning. If the dealer deals their own hand 7+ cards, it corrupts memory after the card array.

A couple of things Edward......

 

The beta 7 AFP version ROM doesn't work after the title screen on the AFP. You can hear the sounds if you move the d-pad around but the screen is blank.

 

The regular beta 7 version does work on the AFP, are they mislabeled??

 

Is there a way when you get 10 or 11 and have the double down option but do not have enough in the bank to actually do it, to have the game NOT offer that option due to insufficient funds in the players bank? I see it works on one of the 2 versions above but not on the other.

 

It would be nice to see the dealer's cards flip over one at a time as in the real game play.

 

I'll play some more tonight.... seems like the dealer is getting more of an advantage with the later versions of this game than it started out with. But this is the best BJ homebrew game out there!!! Awesome job Edward!!

Edited by Arenafoot
Link to comment
Share on other sites

The beta 7 AFP version ROM doesn't work after the title screen on the AFP. You can hear the sounds if you move the d-pad around but the screen is blank.

 

The regular beta 7 version does work on the AFP, are they mislabeled??

I had a macro reversed. I fixed and uploaded. Delete any prior 0.7 downloads.

 

 

Is there a way when you get 10 or 11 and have the double down option but do not have enough in the bank to actually do it, to have the game NOT offer that option due to insufficient funds in the players bank? I see it works on one of the 2 versions above but not on the other.

It's been an issue I've been concerned with since the beginning. I was worried about giving impression the UI is buggy. I had settled on playing an error sound for now, but I was planning on having the bottom row of chips indicate the player's current chips, so that might help.

 

Hiding the options when there aren't enough chips is doable though. It'd be fairly trivial with my current codebase, because they're implemented as flags. It's hard for me to know what's best for the player since I'm a bit close to the code right now. Having this sort of feedback has been quite helpful I think.

 

 

It would be nice to see the dealer's cards flip over one at a time as in the real game play.

I'm planning on that one for the next version.

 

Oh, and for the random number generator, that will be getting an overhaul. I don't like my current version. It continously cycles, so if you wait a moment of time before hitting, you will be dealt a different card. If you wait a little longer, it'll again be a different card. I'm going to change it so that it works more like a real deck. Once the shuffle of a real deck is done, the card order is fixed. I'm going to make the RNG work the same way.

Edited by azure
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

I've uploaded the latest version and moved the prior versions to a zip file.

 

This update includes card animations on dealing cards and code refactoring. It's not a big change, but it was the most difficult, because I spent most the time trying to make the animations work with 12 bytes of RAM, which realistically wasn't going to work. I went with a compromise by re-using temporary variables and the bottom of the stack.

 

The cards are constructed as a composite of sprites divided into top and bottom halves. The prior implementation using 12 bytes of RAM relied on doing pointer setup in the middle of the render. This worked fine, because the graphics for those scan lines were solid white, but it doesn't work when the cards are animated.

 

Edit:

 

It looks like there's some screen bounce on real hardware that didn't show up on emulation. I'll fix those soon.

Edited by azure
  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Just an update on current progress, because its been 2+ months since my last posting. I'm not posting a binary, because it's not ready. Development work really slowed down for a couple months, because of life events and a new job. Now that most of those things are settled, I've been finding more time to finish up my game.

 

I have a few more features completed:

  • Dealer stand or hit on soft 17 (left difficulty switch)
  • Late and early surrender (right difficulty switch)
  • New random number generator using a LFSR (simpler than it sounds)

 

I also worked on a number of internal changes that won't be seen by the player. Reorganizing files, reducing ROM foot print, and reducing CPU cycles.

  • Moved the betting screen to its own kernel
  • Reduced the number of CPU heavy subroutine calls
  • Found modulo bias in my card dealing routine
  • Finding more ROM space in bank 3.

 

In progress:

  • Selecting 1, 2, or 4 decks (game select button). 3 decks might be too difficult or messy to bother with (for reasons).
  • Fixing a bad bug in the card discard logic. Duplicate cards were being dealt.
  • Fixing the bias in my card dealing routine. I may not fully fix it because CPU reasons. My current solution is a compromise.
  • Fixing screen bounce on real hardware
  • Fixing bugs: card dealing, discard, and some edge case bugs
  • Player chips representing actual chip amount
  • A few more animations.

 

I'm deciding on what else I should do with it. I'm hitting the 80/20 part of development. There's lots more I could do, but I also want to wrap it up in the next few months and get to my other game ideas: Battle for Proton (River Raid + Xevious) or a police action game (Lethal Weapon movie + Elevator Action). For this Black Jack game, I'm going to end it with the current feature set. I thought about implementing 6 and 8 decks, statistics, casino loans, and a 2nd player, but I'm shelving those ideas for now. I don't want this to be a multi-year project. One year is enough. I can see myself revisiting the game in the future for a 2nd version or maybe rework it for a different card game.

 

I've also got my Commodore 64 set up with a LCD monitor (4:3), and plan to spend some time learning C64 development and playing some C64 games. I'm somewhat split between my 2600 and C64 interests. I also play SNES and Genesis games, so there's that too.

Edited by azure
  • Like 6
Link to comment
Share on other sites

BlackJack has a tough standing in the action-orientated video games world, but the complexity of your version coupled with a sleek design is impressive and attractive even for one who isn't too much interested in card games (like myself).

 

I really like the elegant appearance of the desk including the different shapes for the chips, but wonder if you couldn't make them different colors for a more intuitive recognition. Also it appears that in some cases selecting multiples of one chip type does not correctly reflect in the upper part. For instance you would only see one 10 chip, despite having selected two. I know that it raises the bet amount correctly, but it should also show it in the visuals.

 

The cards animations have really enlivened the game and look rather convincing.

 

One thing I am missing in the game is a purpose (apart from raising your funds). Some kind of game goal to drive the player's interest. For example Breaking the Bank, which in the context of your game story, would then allow the player to escape Theta VIII with a fixed spaceship. This celebrated by a nice animation/win graphic would definitely motivate to play the game for more than a couple of card shuffles.

A Game Over animation/graphic would further increase the appeal of the game.

 

Just a couple of suggestions to spice up a game type that by its nature is rather sober and, in the realm of video games, "boring".

Your next project plans sound very exciting and given the quality shown on this one, promise to be games to look forward to!

 

  • Like 1
Link to comment
Share on other sites

I knew from the start a card game wouldn't be winning popularity contests.

 

?

 

I chose Blackjack because I was sorting through some recently purchased 2600 games and found the original Blackjack Atari game. I was extremely underwhelmed, because I knew something much better could have been accomplished even with 4KB and 128 bytes of RAM. I was also watching STNG and had just watched "The Royale" (S2E12). I thought a card game would be a gentle introduction into the 6502 instruction set and Atari 2600 hardware, because I didn't have to deal with 3 or more moving sprites.

 

I was always intending to work on an action game once I understood the hardware better. I didn't want to get discouraged by taking on something too big or too complex as a first game. My first attempt was actually in 2008, but I got sidetracked with a new programming job that took a lot energy out of me, so I didn't have the endurance to spend every waking hour of my day coding. I had been keeping tabs on the site periodically from 2008 to 2018. I recently found my old files for that game, but I don't think it wasn't a very good idea, so I won't be finishing it.

 

You're right about card games being a difficult genre when all the attention goes to the hot action games, but I found enjoyment from thinking about the algorithms and solving problems unique to the 2600. Many of those problems are already solved by others, but going through the process is what's fun. Puzzle fans still love solving puzzles even if they've been solved by others. (See Rubik's Cube.) Arenafoot was also a big motivator. He's given some valuable suggestions and found bugs I wasn't finding. 

 

I was struggling to figure out if there should be an ending to the game. I had given it some thought last year and then sort of forgot about it without coming up with anything. I like your suggestion about following along with the plot of the STNG episode and escaping by breaking the bank. I have room in the 4th bank for something like that. It would tie up the loose end of why in the world would a card game be based on a Star Trek episode. ?


There are the other parts of 2600 game programming I'm itching to work on because they are "unsolved" to me whereas the Blackjack game is in my "solved" file. I will continue working on two simultaneous projects, because I have to take occasional breaks from each project in order to maintain interest.

 

I'm aware of the grandiose promises this community has seen from those who haven't delivered, so I've been holding back on my other plans. Atari 2600 programming is Hard Work, so I can hear the audible sighs when there's more talk than action. However, I think my mistake was not beginning Proton sooner, because I got burned out a little bit back in December and January. I've picked up work on Proton again. I'm trying to figure out this new kernel, so it's interesting.
 

I'm planning for Proton to have Xevious style game play, but with much faster action and some real-time strategy. How that's going to work I'm not so sure yet. I'll probably solicit some ideas once I've got the kernel worked out. My other plan is for a platform shooter I've tentatively titled Cop Justice. It's a Martin Riggs and John McClane inspired character cleaning out the baddies in a building loaded with baddies. Once Blackjack is done I'll be working on both of those. For now I'm working on Blackjack and Proton.

Edited by azure
  • Thanks 1
Link to comment
Share on other sites

38 minutes ago, azure said:

Arenafoot was also a big motivator. He's given some valuable suggestions and found bugs I wasn't finding. 
 

I'm planning for Proton to have Xevious style game play, but with much faster action and some real-time strategy. How that's going to work I'm not so sure yet. I'll probably solicit some ideas once I've got the kernel worked out. My other plan is for a platform shooter I've tentatively titled Cop Justice. It's a Martin Riggs and John McClane inspired character cleaning out the baddies in a building loaded with baddies. Once Blackjack is done I'll be working on both of those. For now I'm working on Blackjack and Proton.

Thanks! I've always been a fan of Blackjack and Roulette games. And we (I) needed a better Blackjack game than the one given to us by Atari back in the day. Also, love 21 Blue (homebrew) Blackjack game.

 

Can't wait til the final version and can't wait for your next game too! Don't give up Edward, they are awesome!!

Link to comment
Share on other sites

10 hours ago, Novastar said:

If you still have variables available, you could keep track of the number of hands played. 

 

I don't actually. I'm currently using 100% of RAM. However, it's not at 100% usage all the time. The rendering of the top status bar on the betting screen consumes a bunch of stack space. I was looking into rewriting a few routines for it and flattening the call depth. I have a couple RAM variables that I could do without or pack together.

 

The card dealing and discarded card search has been the most difficult part of the project, because I'm finding it difficult to minimize or eliminate modulo bias without entering into a costly loop. If I spread it across frames, then there could be inconsistent delays, which may give the impression the game is lagging. I think I have a solution, but it's going to require changing the bit packing format for cards, which is going to affect a number of routines.

 

I've already rewritten two discard routines, but I'm having some issues because it's CPU intensive. I get screen bounce when dealing cards above ~65% deck penetration. I'm trying to work out a way to spread more of the logic across video frames, but that requires splitting the search into smaller work tasks, which is not going to be simple, because the algorithm doesn't know in advance where in the search it will begin. I have an out-of-band mechanism for task work, but this particular algorithm is going be more work to divide into smaller tasks, because state needs to be maintained between frames and that requires more RAM, which I don't have at the moment.

 

I could take the easy way out on this and just go with a top down search, but I don't find that appealing. It would bias the deal in favor of Aces, Twos, Threes, etc. A bottom up search would bias in favor Kings, Queens, Jacks, etc.

Edited by azure
Link to comment
Share on other sites

  • 1 month later...

I'm uploading a new version 0.9. The biggest addition is the intermission screen. It's totally pointless, but I enjoyed working on it. I gained some insights I can use for my other game. It's a work in progress, so I'll be futzing with it more. I intend to reuse it for an idle screen and a game over "Break the Bank" screen that r_type2600 suggested.

 

I also added a timer delay upon the end of a hand to momentary disable joystick input, so that the player has a chance to review the results without accidentally pressing the fire button.

 

This version is not well tested, so there may be screen rolling on real hardware. My intention is to post an update showing what I've been working on. I've not had much time to devote to this lately so development is moving at a snail's pace. Also, I've been playing a lot of Spider Fighter (436,360 points!) and Pilot Wings on SNES.

 

I don't have a flashback portable version, because it's not compiling at the moment and I want to work on more interesting features for now. I have to do some adjustments to the ballast data in order to get it to compile. I'll have an AFP version for the next update.

 

BlackJackThetaVIII-0-9.bin

Edited by azure
  • Like 1
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...