Jump to content
IGNORED

Kaboom! Deluxe!


SpiceWare

Recommended Posts

Figured it out - instead of the variable gameState I had to use remainingBuckets, which contains the # of buckets that are shown on screen - 1-3 during an active game, and 0 if the game is inactive.

 

When I initially implemented this a new game started as soon as you pressed the button.  Problem with that is the same button press would also start dropping the bombs - that was slightly disorienting as the buckets weren't onscreen yet, so you didn't know where your buckets were in relation to the Mad Bomber. 

 

Final implementation starts the new game when you release the button, which was a bit more complicated to do.  This results in:

  • first button press/release will start a new game and show the buckets
  • second button press will release the bombs

 

I think I'm done with this hack, (made some more revisions, see reply 94) so have included the source.

 

Summary of changes:

  • Added sunset city skyline.
  • Updated Activision logo to the rainbow variant.
  • Added game variations 3-8, Pitch and Catch where the other player controls the Mad Bomber. Mad Bomber moves slowest in 3, fastest in 8. Game play for variations 1 and 2 is the same as in the original Kaboom!
  • Paddle position indicator for Mad Bomber player.
  • Paddle button to start new game.

 

Skyline & Rainbow logo:

kaboom_deluxe_20200413_NTSC.thumb.png.78ecddb4fe83eef8a3d528de05566508.png

 

Paddle position indicator shows up behind the score:

kaboom_deluxe_20200413_NTSC_1.thumb.png.52ec1cda7761633882aaee1c26f9e36d.png

 

NTSC

kaboom_deluxe_20200413_NTSC.bin

 

PAL

kaboom_deluxe_20200413_PAL.bin

 

PAL60

kaboom_deluxe_20200413_PAL60.bin

 

Source:

kaboom_deluxe.asm

 

Note: source was initially uploaded with COMPILE_VERSION = PAL60. I've re-uploaded it with COMPILE_VERSION = NTSC.

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

  • 3 weeks later...
On 4/3/2020 at 1:39 AM, SpiceWare said:

 

Had this on my To Do list and finally got around to taking a look at it today.  I am not able to recreate it - only thing I noticed was if the difficulty switch is set to A then the buckets are smaller and the Mad Bomber can go a little further to the right. Still plays fine, so not something I plan to change.

 

If you're still experiencing it then your difficulty switch might be at fault.  Easy way to test that is to play a 2 player game of Space Invaders and see if player 2's base is always big.  Easiest way to do that is with the Menu version of Space Invaders by @Omegamatrix:

 

Thank you for looking into this. The intermediate binary I was using still doesn't like me adjusting the P2 bucket size, but the most recent binaries you posted work fine.

 

I also tried Space Invaders, and difficulty behaviour was stable there too.

 

Whatever the issue is, it works now. Thanks again.

Link to comment
Share on other sites

@SpiceWare Awesome work, as always.  Thank you.

I don't want to step on any toes, but I tweaked the colors as mentioned earlier in the thread.  I thought the city skyline was a bit light, so I darkened it by one and the mad bomber by the same amount.  Although the original game used Dx, I find Cx a more appealing green, depending on the application.  Lastly, the sunset range was changed from $28-$78 to $18-$78 (although you can only see it in one spot).  I haven't checked this on a CRT, but the colors look good on my LCD (which doesn't allow adjustment of hue).

 

                     Original                          <->                 Color Tweak

kaboom_deluxe_20200413_NTSC_1.thumb.png.77fc5f6cd0735f8493fb07d71ed871f6.png  KaboomDeluxe_1.thumb.png.6f41ea6a96420da9b3b57122ae7fa775.png

KaboomDeluxe_(Color_Tweak).bin

kaboom_deluxe_(color_tweak).asm

  • Like 1
Link to comment
Share on other sites

Excellent job as always @SpiceWare !!

 

..out of sheer boredom, I started doodling on the bomber trying to make him wider and more evil..

so these came out, I post it here for posterity  :P  this also calls for a wider bomb !

 

image.png.168a948fca5e11e587e6dc213a14d4fd.png

 

 

 

 

 

 

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

Since some of the homebrew ports have a red brick wall instead of a green background, I thought I'd see how a brick color would look in this version.  I still prefer the green, but thought this was a good break from the norm.  It would be cool if we could change background colors every scanline (or every two scanlines) on that portion of the screen so lines could be drawn.

 

Kaboom_RED_6.thumb.png.7e06277c7fde01cf6cc332ec5fa41099.png  Kaboom_RED_BRICK.thumb.png.a9994b90c7fa9d92e7327277130a6912.png

KaboomDeluxe_RED.bin

 

@TIX I tried your sprites, but wasn't sure how to make the switch from smile to frown work with them.

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

23 hours ago, KevinMos3 said:

I tried your sprites, but wasn't sure how to make the switch from smile to frown work with them.

 

Usually we'd use a couple bytes of RAM for a graphic pointer, which requires using Y for the loop, and have 3 separate graphic images. 

  lda (MadBomberGfxPtr),y
  sta GRP1

 

RAM usage is tight, as was the 2K ROM, so Larry Kaplan hard coded the routine to use a single graphic image (lda MadBomber,x) and changed the graphics on the fly when X = 22.

DrawMadBomber
   lda MadBomberColors,x      ; 4
   eor colorEOR               ; 3
   and hueMask                ; 3
   sta WSYNC                  ; 3
;--------------------------------------
   sta COLUP1                 ; 3 = @03
   lda MadBomber,x            ; 4
   cpx #22                    ; 2         are we drawing Bomber's upper mouth
   bne .checkForLowerMouth    ; 2�        if not check lower mouth
   lda #%01101100             ; 2         Mad Bomber frown graphic
.checkForLowerMouth
   bcs .drawMadBomber         ; 2�
   lda #%01101100             ; 2         Mad Bomber surprise graphic
   bit bomberExpressionState  ; 3
   bmi .drawMadBomber         ; 2�
   lda #%01010100             ; 2         Mad Bomber smile graphic
.drawMadBomber
   sta GRP1                   ; 3
   dey                        ; 2
   dex                        ; 2
   cpx #21                    ; 2
   bcs DrawMadBomber          ; 2�
.colorMadBomberLoop
   lda MadBomberColors,x      ; 4
   eor colorEOR               ; 3
   and hueMask                ; 3
   cpx #3                     ; 2
   bne .colorMadBomber        ; 2�+1
   lda backgroundColor        ; 3
   sta WSYNC                  ; 3

 

  • Like 1
Link to comment
Share on other sites

The RAM's used up so using a Graphic Pointer would be tricky, but the ROM's now 4K with plenty of room left. As such the Mad Bomber kernel could be set up to use 3 different routines that are hard coded to using one of these for the graphics:

  • lda MadBomberFrown,x
  • lda MadBomberSurprise,x
  • lda MadBomberSmile,x

 

I'll take a look at making that change later this week as that should let me make the buildings look better. They're a bit squished compared to CrackPot because I couldn't update the building graphics on the scanline with the Mad Bomber frown/surprise/smile logic.

 

 

  

kaboom_deluxe_20200413_NTSC.thumb.png.ea79951ed15f9742d3364356fae059d7.png  

 

 

1037384683_Crackpots(1983)(Activision).thumb.png.1a35bb11ebadcaaef939c1e2b9f19769.png

  • Like 3
Link to comment
Share on other sites

Did some preliminary research last night. I was originally looking to reuse that variable bomberExpressionState to control which of the 3 images were shown, and have it populated before the screen starts to be drawn.  Turned out tempCharHolder, used during the score display, is the exact same byte of RAM so the test values I was putting in bomberExpressionState were getting overwritten.

 

All the other RAM is spoken for, but due to how the memory mapping for the cartridge ROM works in the 2600 I can use the upper 3 bits of a digit pointer for the score to hold it - I explain how that works here.  Conveniently the BIT instruction makes it easy to check the uppermost 2 bits, allowing me to do this in the amount of time left that's left on the scanline just before the one that starts drawing the buildings and MadBomber:

   bit tempWhichMadBomber     ; 3 63
   bmi MadbomberSurprised     ; 2 65 (3 66)
   bvs MadBomberSmiling       ; 2 67 (3 68)
   jmp MadBomberFrowning      ; 3 70

 

10 hours ago, TIX said:

Hey @SpiceWare I'm not familiar with the technical terminology.. so if there is a possibility to animate the whole sprite let me know  :)

 

Hmm - there's not enough time to do that with how the screen is currently drawn, but I could insert an extra scanline between the score and skyline*. Doing so would allow me to use those 3 bits to select from 8 different images for the Mad Bomber.

 

* would also need to remove one from after the Activision logo to keep the scanline count at 262.

Link to comment
Share on other sites

2 hours ago, SpiceWare said:

...there's not enough time to do that with how the screen is currently drawn, but I could insert an extra scanline between the score and skyline...

Is it safe to assume there’s not enough time to add the brick pattern like Crackpots either? Looking at that screenshot you posted got me thinking how cool it would look if Kaboom had those bricks.

 

Kaboom_BRICKS.thumb.png.3ca0562c4dfca8583946dc99b954ece6.png

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

I suspect not, it would require 3 updates:

 

    lda #brick_color
    sta COLUPF             
    lda brickpattern, y
    sta PF2
    ...
    lda #black
    sta COLUPF


because the playfield is used to hide the HMOVE bars:

 

kaboom_deluxe_3.thumb.png.e670a825b9c7a2011ea8e6bf6ffb47e0.png

 

Crackpots doesn't have to read 2 paddles during the kernel, so had the time to do it.

 

Adding the 2nd paddle reading already made it tight by the buckets, so bricks definitely couldn't be drawn in the area where the buckets and splashes get drawn.

Link to comment
Share on other sites

Made some progress - after removing that checkForLowerMouth logic to manipulate the Mad Bomber's face I was able to lower the building tops past the Mad Bomber's Mouth:

 

kaboom_deluxe_4.thumb.png.5d71e8a8e0487fde159948409cad88d3.png

 

I then cloned the Mad Bomber kernel 2 times and updated each one to draw one of the other images. Smile:

kaboom_deluxe_6.thumb.png.05f43e86c5b080e509b38c48a4e2f46a.png

 

Surprised:

kaboom_deluxe_5.thumb.png.c26fc9ee600d2bd9f69e374c149076b2.png

 

 

I have not yet added the extra scanline after the score, so to test the new Mad Bomber kernels I've been commenting/uncommenting JMP statements:

;   jmp MadBomberFrowning
   jmp MadBomberSmiling
;   jmp MadBomberSurprised

 

That issue with the bombs shifting as they pass the water buckets returned, same as seen before in Reply 18. Possibly that'll clear up on its own once I add the extra scanline after the score and write the new logic to select which Mad Bomber image to draw.

  • Like 1
Link to comment
Share on other sites

Done with the changes to use distinct Mad Bomber images and improve the city skyline. Also made a minor tweak to the buckets to add the missing water pixel.

 

This reply contains my final set of changes for Kaboom! Deluxe!. While I'm not using it, it is set up to support animation - I'll explain how to enable that in the next reply.

 

Summary of changes:

  • Added sunset city skyline.
  • Updated Activision logo to the rainbow variant.
  • Added game variations 3-8, Pitch and Catch where the other player controls the Mad Bomber. Mad Bomber moves slowest in 3, fastest in 8. Game play for variations 1 and 2 is the same as in the original Kaboom!
  • Paddle position indicator for Mad Bomber player.
  • Paddle button to start new game.

 

Skyline & Rainbow logo:

kaboom_deluxe.thumb.png.5e37d4a09af97c990898f4a28f04be5a.png

 

In games 3+ a paddle position indicator will show up behind the score:

 

kaboom_deluxe_1.thumb.png.12469a3436ebc6876152330defb73b81.png

 

NTSC

kaboom_deluxe_20200517_NTSC.bin

 

PAL

kaboom_deluxe_20200517_PAL.bin

 

PAL60

kaboom_deluxe_20200517_PAL60.bin

 

Source

kaboom_deluxe.asm

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

If you want to animate the Mad Bomber then search for this section of code:

 

;   select which Mad Bomber Image will be shown

;   no animation
    lda #0
;   end no animation    

;   slower animation
;    lda frameCount
;    and #%00100000
;   end slower animation
   
;   faster animation
;    lda frameCount
;    and #%00010000
;    asl
;   end faster animation    

 

 

Comment out the lda #0, and uncomment out one of the following sections of code, such as this:

;   select which Mad Bomber Image will be shown

;   no animation
;    lda #0
;   end no animation    

;   slower animation
    lda frameCount
    and #%00100000
;   end slower animation
   
;   faster animation
;    lda frameCount
;    and #%00010000
;    asl
;   end faster animation   

 

 

After doing so the images will alternate between A and B versions.  Frown:

 

kaboom_deluxe_4.png.d5ac6c5a80c193339a44ed583d7cd0c4.png  kaboom_deluxe_5.png.0a548d30e35f49497e22fe1d3aa3b8c0.png

 

Smile:

 

kaboom_deluxe_2.png.d71eeddc1e7a850a55d6cef04d9e7e83.png  kaboom_deluxe_3.png.d49debe66fa76d2eb6f8a20cbb6f34c0.png

 

Surprise:

 

kaboom_deluxe_6.png.37463e5a42a6d3700ddb889d84f8cce3.png  kaboom_deluxe_7.png.79e3208b4adf8e9920fd8bdb9858f5aa.png

 

ROM

kaboom_deluxe_20200517_animated.bin

 

 

 

 

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

  • 2 months later...

I like Kaboom! Delux very very much but I'm also the guy who can play Sadoom! really well and worked with Thomas getting Sadoom!+ to become a thing. So I got to ask is there a way this can be added to where there is a faster mode yet different from Sadoom! or Sadoom!+ Any ideas out there?

Personally I think less bombs per round and here are the Sadoom!+ details

 

  • starts at wave 7 (up to 25 :)) (I can never pass 9 because to many bombs in the wave and could benefit from less bombs per round) Thomas says this would ruin the game but my curious mind must explore
  • the number of bombs starts at 100 and increases by 10 for each wave (up to 255) That is alot and take endurance to pull this off
  • after you lost all buckets, you can restart with the fire button. This should be a thing in the Deluxe ver. across the board it is an awesome feature.

    I await the minds of ideas to come out and tell me this is stupid because only I would be interested in this hahahahaha.
Link to comment
Share on other sites

I've other things in the pipe line, tune in Friday to learn more, so I'm not planning on making any more changes to Kaboom! Deluxe!

 

That said, anyone is more than welcome to use Kaboom! Deluxe! as a starting point for additional revisions - that's why I added support for animation even though I didn't make use of it myself.

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

12 hours ago, SpiceWare said:

I've other things in the pipe line, tune in Friday to learn more, so I'm not planning on making any more changes to Kaboom! Deluxe!

 

That said, anyone is more than welcome to use Kaboom! Deluxe! as a starting point for additional revisions - that's why I added support for animation even though I didn't make use of it myself.

I would edit the game myself as I have gotten into editing Nes and Snes games but I do not know where to start when it comes to Atari but I imagine what I'm looking for is fairly simple to do as long as I can be shown the general idea.

Link to comment
Share on other sites

7 hours ago, overgrouth said:

I would edit the game myself as I have gotten into editing Nes and Snes games but I do not know where to start when it comes to Atari but I imagine what I'm looking for is fairly simple to do as long as I can be shown the general idea.

 

You'll need the source, kaboom_deluxe.asm, found in reply 94.

 

You'll also need dasm, as well as vcs.h which is included with dasm. Check out Club DASM for them.

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