Jump to content
IGNORED

ROL out...a new Breakout hack


Nukey Shay

Recommended Posts

Damn...outta space in 2k, so I upped it to 4k :(

 

Bug report:

- A glitched 1st and 2nd digit when choosing games**

- Small gap in wall when you begin

 

** The original Breakout used 2 data tables to hold the bitmaps of digits, 1 normal, and 1 reversed. 55 bytes can be had easily by combining both into 1 and using LSR instructions to shift them into the proper orientation. The problem with doing this is that there is no time left to clear "dead" digits with spaces. During a game, they will appear normally.

Link to comment
Share on other sites

The interesting thing is that Breakout uses 2 bits to store the state of each brick already (because each brick is made of 2 pixels...bits in Ram that are sent to the screen). Since that's the case, it -might- be possible to try to bend this game into an Arkanoid-type game (there's still 2k to use).

Link to comment
Share on other sites

The gap is fixed, and the glitched character is blotted out (couldn't get the first 0 or the number of balls indicator cleared tho). Keeps the correct score, so you'll get both walls.

 

Also added:

Rolling walls are selectable (right difficulty = A)...and the bands roll at different speeds. Really tricky to bust a gap in this one 8)

It will also run on an unmodded Supercharger.

 

Only 19 bytes extra used in the 2nd bank...that's still a lot of room left ;)

Link to comment
Share on other sites

I tried it on my modded supercharger and I had problems getting the difficulty switches to work smoothly. After you switch the difficulty you have to push reset. And then sometimes the paddles would stop responding after you switch the difficulty.

 

Not sure what is happening but after I got it working it is a great hack

 

High score of 91 on game 1

Link to comment
Share on other sites

Updated...

I still can't figure out why it shouldn't work on the real hardware sometimes :( But I've got a few additions anyway:

 

- Unlimited walls, except in timed games...what's the purpose of a timer if there is no limit to bricks? ;)

 

- The game now features 4-digit scoring. With more than 2 walls, it's a necessity.

 

-The rotating bands now travel in opposing directions, fast on the bottom and slower as you go upward.

 

Now the bad news. Since I changed the game by adding a block counter, there is no way to keep track of the count in two player games (because each player overwrites the counter when it's their turn). So in 2-player games, you might get a new wall before it's destroyed, or you might not get a new wall at all. 1 player games work fine. This can be corrected by tracking down 2 bytes of ram, but I haven't found any yet.

 

Also, an interesting wrinkle in the game is the ability to "refill" the bands when the last block is hit in each. Since this could make the game -very- easy, I put it in a seperate binary.

Link to comment
Share on other sites

It doesn't seem to like Stella, so you'll need to use Z26. Still haven't figured out the reason behind that :(

 

@Out_of_Gas-

It's a possibility :) This was really just an experiment to see what a shifting wall would play like. I'm really after something a bit more radical :wink:

That and a few posts have been made argueing how such a game would be possible on the 2600 :D That's what really got my interest. I know for a fact that Arkanoid IS possible. What I don't know is if I could pull it off.

Link to comment
Share on other sites

Nope...it's Breakout. The original game just checked to see if your score was equal to 432 when the ball hits the paddle...which means that it would only give you 1 additional wall:

;@$F494

      LDA    #$04                  ;2

      CMP    $CC                   ;3 is 1st score digit a 4?

      BNE    LF4A4                 ;2 branch if no

      LDA    #$32                  ;2

      CMP    $CD                   ;3 are last 2 digits 32?

      BNE    LF4A4                 ;2 branch if no

      LDA    #$C0                  ;2 load #$C0 to signal...

      STA    $DE                   ;3 ...that a wall is wanted

 

 

I dropped that routine, and changed it to this instead:

;...add new wall when hit

      LDA    $E2                   ;3 check brick count

      BNE    LF4A4                 ;2 branch if anything left

      LDA    #$C0                  ;2 load #$C0 to signal...

      STA    $DE                   ;3 ...that a wall is wanted

 

Since I'm using ram address $E2 (which used to hold the shifting color for the background in attract mode), I also had to add in the following to keep track of the bricks hit...

;near label LF4F1

      LDA    $80,X                 ;4 check bricks...

      AND    LF7BE,Y               ;4 against the mask value

      CMP    $80,X                 ;4 is there a brick there?

      BEQ    LF542                 ;2 branch if nothing

      STA    $80,X                 ;4 clear brick...
;added

      DEC    $E2                   ;5 ...decrease brick counter

 

...and this to set the starting brick counter value...

 

;below label LF1AB...just before the RTS instruction...

      LDA    #$6C                  ;2 $6C = 108 bricks

      STA    $E2                   ;3 save to brick counter

 

I thought about using Super Breakout, but the older version has a greater chance of being altered into something else (since SB is already more specialized to perform a certian way). Plus regular Breakout has 2k of rom memory to freely experiment with.

Link to comment
Share on other sites

Saikyo said:

Hang on! If this is a hack of breakout and not super breakout then the game will end after the first two levels!  :roll:

 

It might have IF you are skilled enough to pass the first two levels. This hack makes it quite a bit more difficult to clear a board.

 

Nukey said:

I thought about using Super Breakout, but the older version has a greater chance of being altered into something else (since SB is already more specialized to perform a certian way). Plus regular Breakout has 2k of rom memory to freely experiment with.

 

Nukey, that mad hacker, has such wonderful experiments! I recently purchased a modified Supercharger so I could play these hacks on a real machine. OH BOY! :-D

Link to comment
Share on other sites

  • 2 weeks later...

The game works great on my Supercharger. I haven't had any of the problems described above... perhaps it was fixed with the newer binary(?)

 

...  an interesting wrinkle in the game is the ability to "refill" the bands when the last block is hit in each. Since this could make the game -very- easy, I put it in a seperate binary.

 

I like this feature, but I noticed that it will not refill if the difficulty switch isn't set to make the bricks roll. It might be neat to have half of the wall busted down and then have a new row pup up - increasing the chance of the ball getting up top and going ballistic!... "ball"istic. AHAHAH. sorry

 

anyways, also as I play, I can't help but notice that the collision detection in Breakout could use a little help. ie sometimes a ball will bounce back and move through a brick without busting it, or sometimes won't bust a brick when it collides on its side. Would there be any chance of tweaking the collision detection so that the ball busts a brick no matter what direction it comes from?

 

One last thing and I'll shut up for a second. :-) Would there be any way to modify the game so that the bricks could be laid out in formation? Like say the bricks are laid out to resemble a space invader, or Pacman.

 

kbye.

Link to comment
Share on other sites

  • 1 month later...
...  an interesting wrinkle in the game is the ability to "refill" the bands when the last block is hit in each. Since this could make the game -very- easy, I put it in a seperate binary.
I like this feature, but I noticed that it will not refill if the difficulty switch isn't set to make the bricks roll.
I didn't think of that :D The bands refill in the same routine that rotates them...so it was an oversight.

 

 

It might be neat to have half of the wall busted down and then have a new row pup up - increasing the chance of the ball getting up top and going ballistic!...  "ball"istic.  AHAHAH.  sorry

anyways, also as I play, I can't help but notice that the collision detection in Breakout could use a little help.  ie sometimes a ball will bounce back and move through a brick without busting it, or sometimes won't bust a brick when it collides on its side.  Would there be any chance of tweaking the collision detection so that the ball busts a brick no matter what direction it comes from?

Yes. The limited collision detection is intentional. IIRC, the ball gets a bit screwey if it's allowed to hit bricks on all sides. The way it currently works is that if a brick is hit, another can't be hit until the ball hits the edges or the player (except on breakthrough game selections).

 

 

One last thing and I'll shut up for a second.  :-)  Would there be any way to modify the game so that the bricks could be laid out in formation?  Like say the bricks are laid out to resemble a space invader, or Pacman.
Yes. When the lines are refilled, the program is really just grabbing a value and sending it to all the ram locations that the row or wall occupies. The value could be loaded from a table instead (which could be layed out in whatever pattern is desired)...and it could also be indexed (so that you can have a number of different wall shapes). This also fits with the way that Arkanoid works. But due to my limited understanding about how kernals work, I haven't made any progress in that direction yet :P
Link to comment
Share on other sites

  • 3 months later...

Update...

 

Final correction to the hacks. Each player now retains their own brick counter...so the walls should operate normally in multiplayer mode. I also put both handicaps on the RIGHT difficulty (A=shorter paddles)...and put the wall control on the LEFT. As before, there are 2 binaries...one which refills the wall line-by-line, and the standard version that only replaces an entire wall at a time.

 

I suck pretty badly at this thing using a mouse...anyone care to confirm that it works as it should? :lol:

If both players can clear a wall and have a new one appear in B difficulty (non-moving), it's working.

 

It was a tough assignment

rol_out.zip

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