Jump to content
Octavio Pinho Bokel

Hellway, an Atari 2600 homebrew with love

Recommended Posts

Hello,

 

I finally have a game to show, after having the project sleeping for many years, it is a fully playable game. Now, with the core of the engine done, I am working on the game variations and additional features. It is a top down racing game with a fully deterministic infinity road, each track with its own speed.

 

I would love if any of you can test the game, and give a sincere opinion. All details about it are here:
https://github.com/opbokel/hellway

 

From my repo it can be downloaded or played online (direct links bellow).

 

Play online
https://javatari.org/?ROM=https://github.com/opbokel/hellway/raw/master/bin/hellway.asm.bin

 

ROM

https://github.com/opbokel/hellway/raw/master/bin/hellway.asm.bin

 

The game update automatically every commit I do on my git master branch, so, the links are always in the latest version.

 

I want soon to publish as a physical cartridge and donate all profit. If someone from AtariAge can contact me, I really appreciate.

 

Have a very nice day, I hope you like the game.

 

PS: I will be glad to discuss any detail of the code.

Edited by Octavio Pinho Bokel
  • Like 5

Share this post


Link to post
Share on other sites
1 minute ago, Octavio Pinho Bokel said:

 

I want soon to publish as a physical cartridge and donate all profit. If someone from AtariAge can contact me, I really appreciate.

I will send you a message. :)

 

 ..Al

Share this post


Link to post
Share on other sites

Interestingly enough, this doesn't run in Stella... but it runs just fine on real hardware.

 

EDIT: Nevermind... I was in Developer mode... runs fine in Stella in Player mode

Share this post


Link to post
Share on other sites

Very nice! It's a good concept that suits the 2600 well. I like games that use the playfield to get a large number of flicker-free "objects."

 

Suggestions, aside from what you mentioned in your roadmap:

1. Braking happens very quickly, especially since we can't see far behind the player's car. It might be useful to have light braking and hard braking. Or maybe reduce the brake rate at higher speeds?

2. Make the player's car a different color than the other cars. (Ideally make the other cars a different color than the roadside markers, but I imagine you'd need to use P2/M2. I do not know whether that's feasible.)

3. Center the road on the screen if possible.

4. Audio. I have a bunch of ideas about that, depending on how many ROM bytes and cycles per frame are available. Send me a PM if you're interested.

Share this post


Link to post
Share on other sites

Hello, I would like to thank you (Pat Brady) for testing my game. I will answer each of your questions.

 

1- I fine tuned the breaking speed after repeated gameplay sessions to allow avoid collisions even when going really fast, every time I got better at my own game, I felt the need for the break to be faster. You can break slight by tapping. What I can do is to cut breaking speed in half if you are accelerating and breaking at the same time. I will report back to you if I use the idea or not after testing.
PS: I did not test on real hardware, and I don't know yet how it feels on real a real controller. Does somebody have an NTSC Atari to sell?

2 - I am starving for CPU cycles while drawing the traffic. Even if I draw blocks, they are consistently generated on the fly (If you break, the same cars will pass by). I don't know how to save more CPU cycles. The first interaction of the game I had a duplicate playfield with with 11 (6 tracks duplicated, joined in the middle of the playfield) with a manual interlacing technic to be able to draw then all, and the car in other color. My idea was to break the symmetry by putting items on each side of the road and forcing the player to cross. But this was only making the gameplay worse. I had no cycles to make the playfield asymmetrical, so the decision was to use score mode to hide half of the playfield, making player 2 (P1) the same color of the background and getting the asymmetry for free (At least outside the drawing cycle, my bottleneck). Given the the side of the road was now smaller, 4 tracks were enough, and I removed the interlacing technic, making scroll smother. I decided game play was king, and will try to improve graphics only after the rest of the game was done and fun to play, without ever sacrificing gameplay.
Afterthoughts: Maybe there is a way, but I will test only if 2 players mode does not work well. The idea is to center the playfield, make missile and ball 8 clocks wide, and use also P1 to be my traffic lines. Setting the perfect H position at the beginning of the game for the objects, but this will destroy 2 players mode (See roadmap on git).

3 - Please check item 2.

4 - I would love to discuss sound, but I have to learn the basics first and see my ROM space after I implement the game play variants.

 

Thanks a lot for your time!

  • Like 1

Share this post


Link to post
Share on other sites

Version Update:

 

## Switches
* The two difficulty switches change the traffic intensity and color. 
The switches form a binary number representing intensity. 
The more traffic it has, the more time you gain on checkpoints. 
The constants of color, time and traffic are still subject to fine tuning. 
I tried to reduce eye strain in the color choises.
    * 0 - BB = Light traffic, Green
    * 1 - BA = Regular traffic, Red (ish) That is the traffic level I personally enjoy the most.
    * 3 - AB = Intense Traffic, Yellow
    * 4 - AA = Rush Hour, White (ish)
    
* Reset restarts the the current game mode and apply the difficulty switches.
  • Like 1

Share this post


Link to post
Share on other sites

It looks nice and plays pretty well - well done! I do agree with @splendidnut's thoughts on the colors and positioning of the road, however. It may be worth revisiting how you do you kernel. If you do a mirrored asymmetrical kernel, you would only have to update PF1 and PF2 twice each, and not have to update PF0 at all. That's just one more update than you are doing now, I think. If you need kernel optimization tips, feel free to post relevant sections of code - there are a lot of people here that are good at that sort of thing.  🙂 

Share this post


Link to post
Share on other sites

But I would still have to do every scan line. This kernel is using 3 lines. I am on the very limit on my cycle count. I don't think I can make it.

 

I will try to optimize the kernel again after the other features are done and see if I can pull this off. I really want to finish a fun, playable game, with the features of the roadmap before trying to optimize the code again. There is already several performance optimizations in the code because of the lack of cycles. I was so out of cycles, that I had to remove the car drawing routine that was taking me 20 cycles, for one that takes only one additional cycle. Now my car sprite have 60 bits, 52 of 0 padding, so I don't have to control when to start or stop drawing. Just use the line offset on Y and always draw it.

 

Drawing is not what is taking most of my  cycles, but procedurally deciding for each position, independly for each line if there is a car or not. Basically the only information I have before enter the drawing part is a 16 bit number, that is the current offset of each track.

 

Fell free to look at my code, I am also available to explain it anytime and open to suggestions. Maybe the community will show me a way to save cycles that I am not seeing at the moment.

 

Thanks for playing my game!

  • Like 2

Share this post


Link to post
Share on other sites

Version Update:

 

It is possible to break and accelerate at the same time, this will break with half intensity (Heel-and-toe).

@Pat Brady This was a very good idea, gives you so much more control for all situations.

Please keep the feedbacks coming. Also, I am curious about your high scores.

  • Like 2

Share this post


Link to post
Share on other sites
3 hours ago, Octavio Pinho Bokel said:

Version Update:

 

It is possible to break and accelerate at the same time, this will break with half intensity (Heel-and-toe).

@Pat Brady This was a very good idea, gives you so much more control for all situations.

Please keep the feedbacks coming. Also, I am curious about your high scores.

 

Nice!

 

My high score so far is FD6. As I've improved I have gotten more aggressive, cruising at 70-80, and at those speeds the hard braking is necessary.

 

I understand your explanation of the colors. Using score mode with COLUP1 the same as COLUBK is clever. Does any other game do that?

 

It's hard to envision a 2-player mode with duplicated playfield (from a gameplay perspective, that is; I understand how it would work technically), but I look forward to seeing what you come up with.

Share this post


Link to post
Share on other sites

NEW VERSION!

 

I was able to centralize the game and use different colours! I use every single object the TIA can draw. This is a major change.

@Pat Brady I am very glad you are testing my game, about your high score, what what the difficult / traffic level? I want to tune well the extra time for each level. I don't know any other game this with the payfield. I am also not using it anymore...

  • Like 3

Share this post


Link to post
Share on other sites
18 hours ago, Octavio Pinho Bokel said:

NEW VERSION!

 

I was able to centralize the game and use different colours! I use every single object the TIA can draw. This is a major change.

@Pat Brady I am very glad you are testing my game, about your high score, what what the difficult / traffic level? I want to tune well the extra time for each level. I don't know any other game this with the payfield. I am also not using it anymore...

 

I wasn't thinking about the difficulty switches, but that score must have been on BB (green). But I was playing with arrow keys. I expect I'd do better with a joystick. I'll try to play it on real hardware soon.

 

 

Share this post


Link to post
Share on other sites

Version Update:

Before implementing the game modes, I made the game change between difficulties on every checkpoint. It also gives you a brief period of invincibility, that can be use strategically. The difficulty switches on this mode don't make a lot of difference, it only selects the start difficulty, but they will loop.

The main idea is to allow the default mode to be more varied and force the player to adapt. The amount of traffic completely changes the experience, from an aggressive, reflex based gameplay, to a strategic one, where the focus is to find breaches where you can pass.

The next game mode will not alternate the difficulty, and make the game with the same behaviour as it had.

 

 

Share this post


Link to post
Share on other sites

Version Update:

Black and white mode:

TV Type (Color / BW): Changes between the default background color and a black background. A completely black background offers better contrast and might work better on Black and White televisions, but can be hard on the eyes. The main reason for this feature is to provide accessibility for people with color blindness or other disabilities. This can be changed anytime during gameplay.

Share this post


Link to post
Share on other sites

Version Update, Mode selection:

 

Game Select: Changes the game mode, this must be done before starting the game (or after a reset) while the title is displayed. The game mode is in the top left corner:   

Mode 0 = Default mode, traffic level changes every checkpoint.
Mode 1 = The traffic level does not change.

Of course, there is more to come.

This version also include some texts that are displayed on top (Game name, credits, checkpoint, game over).

I will start doing sound before continuing the rest, I think I underestimate how hard it could be.

Share this post


Link to post
Share on other sites

Concept Art for the box. All Art is done by the amazing Leonardo Nogueira, since I don't have the ability myself to draw a stickman.

Dear people form the Atari Age, I am still waiting your contact about the possibilities how to release the game. Including the standard size for the box, cartridges, etc, so my friend can continue working on the art.

2027019037_WhatsAppImage2021-02-03at18_26_55.thumb.jpeg.fcb40371d3d45168a4c102757ae9fd67.jpeg

Thank you all!

  • Like 2

Share this post


Link to post
Share on other sites

16 game modes x 4 difficulty switches states = 64 game modes

It is all documented on the git repo.

 

Game Select: Changes the game mode, this must be done before starting the game (or after a reset) while the title is displayed. The game mode is in the top left corner:

Mode 0 = Default mode, traffic level changes every checkpoint, and keep cycling. The difficulty switches define only the starting traffic intensity.
Mode 1 = The traffic level defined by the switches does not change.
Mode 2 = Mode 0 + Randomized traffic lines.
Mode 3 = Mode 1 + Randomized traffic lines.
Mode 4 = Mode 0 + Bigger speed difference between traffic lines.
Mode 5 = Mode 1 + Bigger speed difference between traffic lines.
Mode 6 = Mode 2 + Bigger speed difference between traffic lines.
Mode 7 = Mode 3 + Bigger speed difference between traffic lines.
Mode 8 = Mode 0 + Random traffic intensity every checkpoint.
Mode 9 = Mode 1 + Random traffic intensity every checkpoint.
Mode A = Mode 2 + Random traffic intensity every checkpoint.
Mode B = Mode 3 + Random traffic intensity every checkpoint.
Mode C = Mode 4 + Random traffic intensity every checkpoint.
Mode D = Mode 5 + Random traffic intensity every checkpoint.
Mode E = Mode 6 + Random traffic intensity every checkpoint.
Mode F = Mode 7 + Random traffic intensity every checkpoint.


For modes 8 to F, the traffic level to be cyclic or fixed is only applied for the checkpoint time.

It much easier to read it as a binary number (like linux file permissions). Each byte defines a property (0 / 1).

 

D0 => (Cyclic / Fixed) traffic intensity.
D1 => (Constant / Randomized) traffic lines.
D2 => (Smaller / Bigger) speed difference between lines.
D3 => (Constant / Random) traffic intensity.
Deterministic game modes (0,1,4,5) will always generate the same sequence of cars for each line.

  • Like 3

Share this post


Link to post
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.

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