Split Second

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Split Second
by on (#231086)
Greetings Everyone!!

Edit: 1/28/2019 - Added new version of the ROM in this OP.

I am pleased to announce that I have created my very first NES game! Thanks to all the help and guidance in the community. What better way is there to announce your first game than in the 2018 NESdev Competition.

So, now, what is this game? Well as many of you may recall, way back in the 1980s we never had fancy hand-held video games like Switches or anything. What we did have was standalone hand-held video games. One of which was called, “Split Second,” originally introduced to the world by Parker Brothers in 1980. I mostly seem to recall playing it in the back seat of my parents’ old red 1984 Buick Century. The game itself was constructed with dark red plastic and had an old fashion 1970s “Star Wars-ish” feel to it. It had a simple display which only consisted of an array of red lights. Some of the lights were bar shaped and some were circular. It had four directional buttons as well as a start and a select button. Finally, the bottom 3rd of the game was an enormous vent which was probably more for show than serving any practical purpose. But who knows – maybe that was the only way to keep the CPU from overheating. Have a look at this picture from Electronic Plastic (http://www.electronicplastic.com/game/?company=&id=625), to see for yourself.

Image

I have created a port of Split Second to the NES. I tried to keep the same look and feel as with the original game. I also tried to replicate the game play and sounds as best as I could. As a first attempt, I am generally happy with the way that the NES game reproduces sounds but there is definitely some room for improvement. I am hoping to make some improvements to the sounds and graphics over the next month.

Here were my technical goals/achievements for this project:
    1. Learn 6502 assembly language.
    2. Learn to use NESASM compiler.
    3. Learn to use an NROM 128 mapper to keep things simple.
    4. Use only background tiles (no sprites anywhere in the game).
    5. Create simple light weight sound engine.

One thing I am very concerned about is that I do not want to plagiarize anything from the original hand-held game. I tried to call this out explicitly by citing the original work from Parker Brothers on the title screen. I also spent some time on uspto.gov and couldn’t find any associated trademarks. I wrote my own code and produced my own graphics. I’d like to think of this project as a tribute to Split Second but if people (who know more about trademarks than I do) are uncomfortable with the current name, I can certainly change it.

How does one play? See the original manual (https://www.manualslib.com/manual/1216146/Parker-Brothers-Split-Second.html?page=2#manual) for details. But it’s pretty straight forward. There are 8 distinct games. You select a game by using the select button and you start playing a game by using the start button. In some of the games you move a ball around the screen. In some of the games you move a bars around the screen. The object of each game is to complete the course as fast as you can. If you’re playing by yourself you can do time trials to see how fast you can complete each game. If you’re playing with multiple people you can take turns to see who is the fastest! I would recommend playing with the sound on as the scoring feedback system was originally meant to be heard. For example, there are different sounds for beating your previous score versus failing to beat your previous score etc.

Here are the names of the games:
    1. Mad Maze (Visible)
    2. Mad Maze (Preview)
    3. Mad Maze (Invisible)
    4. Space Attack (Beginner)
    5. Space Attack (Pro)
    6. Auto Cross
    7. Stomp
    8. Speedball

Hope you have a chance to play. If you find any bugs, let me know!
Re: Split Second
by on (#231091)
Will chime in more later, but I love it!
Re: Split Second
by on (#231093)
Skadiet wrote:
Finally, the bottom 3rd of the game was an enormous vent which was probably more for show than serving any practical purpose.
Speaker grilles were often hidden under things that looked like that ... and it turns out there is a speaker there. (youtube repair video)

edit: being a little too young to have had one of these when they were new ... it's kinda neat seeing a hardware instance of Wario Ware.
Re: Split Second
by on (#231095)
I had fun playing all the games here. I've never seen one in real life, thank you for a fun little game.

Just a though, it would be a little easier to play in games like maze, if you add faint image of other segments that are not lit, like you would see on real game.
Re: Split Second
by on (#231096)
lidnariq wrote:
Speaker grilles were often hidden under things that looked like that ... and it turns out there is a speaker there. (youtube repair video)

Wow, that's pretty cool! Thanks for sharing the video, I hadn't seen that one yet.

yaros wrote:
Just a though, it would be a little easier to play in games like maze, if you add faint image of other segments that are not lit, like you would see on real game.

Yeah, agreed. That was actually my original intent but then when I wasn't sure how to do it, I went with the black background! But I can definitely revisit it now that the main game logic is complete. Thanks for the suggestion.
Re: Split Second
by on (#231104)
Color 07 should be really faint, but most emulators show it too bright. What you could do is flicker it.
Re: Split Second
by on (#231110)
Here's a quick test for two techniques. Sorry for butchering your graphics.

Assuming the back panel is not really black but deep red or reddish brown, you can separate the plane from inactive marks by a dregree on the hue axis. This is the easiest way to achieve really faint changes with the PPU. Some setups might make one of the colours appear a little brighter or darker than the other, but it's not too bad in this case.

If you want it even more faint, you could checkerboard the pattern. Since there's no scrolling, you won't get the "shimmer" effect that's mostly unwanted. The pattern won't be a checkerboard, but it could work, still. I did that on the lower left marks. Edit: Or you could flicker them like nesrocks said.

I used 07 for the back plane, and 06 for the off marks.

The game was pretty fun even though i have no experience from the original gadget! The whole concept of remaking the original is really neat, too.
Re: Split Second
by on (#231112)
If you checkerboard it there will be artifacts in CRT displays. The best way to get flicker is what Macbee taught me. Get horizontal lines that alternate every frame. Looks smoother than full/empty display of the image.

Not having a black background is a good idea, though on second thought I guess I wouldn't use that brown. Keep it all in the red spectrum.
Re: Split Second
by on (#231120)
FrankenGraphics wrote:
If you want it even more faint, you could checkerboard the pattern. Since there's no scrolling, you won't get the "shimmer" effect that's mostly unwanted. The pattern won't be a checkerboard, but it could work, still. I did that on the lower left marks. Edit: Or you could flicker them like nesrocks said.

I used 07 for the back plane, and 06 for the off marks.

The game was pretty fun even though i have no experience from the original gadget! The whole concept of remaking the original is really neat, too.

I think I do like the "even more faint" option because I used the $06 color on the whole "plastic casing." I'm afraid it would all just look the same. When you say that I could checkerboard the pattern but that it won't actually be a checker board, is that just due to the CRT distorting the pattern - but different than the "shimmering effect?" Glad you had fun playing!

nesrocks wrote:
If you checkerboard it there will be artifacts in CRT displays. The best way to get flicker is what Macbee taught me. Get horizontal lines that alternate every frame. Looks smoother than full/empty display of the image.

This sounds good too. Unfortunately, as a consequence of using an NROM 128 mapper, I only have two 8K prg rom banks. One has 3 bytes free and the other has 37 bytes free. :lol: Not sure if I'd be able to pull this off in 40 bytes. Of course, I could always just convert the mapper to NROM 256....
Re: Split Second
by on (#231133)
Quote:
When you say that I could checkerboard the pattern but that it won't actually be a checker board, is that just due to the CRT distorting the pattern - but different than the "shimmering effect?" Glad you had fun playing!


yeah, the pattern might come across as a bit braided. You may also see a few bright or dark speckles from the borders between two neighboring colours, but this is mostly the case between colours of different brightness, not hue. Such artifacts will "shimmer" in a scrolling scene (change brightness depending on position) but aren't that much of a problem on most still screen scenarios since the artifacts aren't animated then. Here, where the're just a slight difference in hue and an almost neglible difference in brightness, the thing i think you need to consider the most is the distorted checkerboard pattern.

Here's a run through blarggs' ntsc filter tool with contrast and sharpness set to middle. A softer screen will look slightly better on checkerboard patterns (since they're smudged out into the blend we actually might want), and a sharper screen will look slightly worse, since the distortion of positions becomes more pronounced.

Attachment:
filtered.bmp
filtered.bmp [ 847.55 KiB | Viewed 5493 times ]


Quote:
Unfortunately, as a consequence of using an NROM 128 mapper, I only have two 8K prg rom banks.

-There's some space left in your chr rom banks. If you really wanted, i'm eyeballing that you could put some 500-600 bytes of data in there if you pack the tiles, freeing up prg rom

-If you haven't already, i think you could save some space by RLE compressing your screens. I think doing the RLE vertically instead of horizontally (as per normal) would save you more.
Re: Split Second
by on (#231135)
Be really careful with checkrboard dithering. That filter does not properly recreate what happens on NTSC CRT. Nasty diagonal lines will be created as artifacts.
Re: Split Second
by on (#231138)
Tried the game and it was interesting.

I don't think that I ever saw it as a kid but I would have been quite young too when it came out. Our first game were some dedicated pong like machine maybe made by radio shack then we had an odyssey 2(not sure the name, it had a keyboard on it).
Re: Split Second
by on (#231140)
One other thing that could work (with better clarity) is resuming the black back plane, then
-set the red emphasis bit (this will brighten all reds and dampen all others by degrees of non-redness)
-let inactive marks have colour $07 or $08 (depending on how much you want the marks to be faint)
-adjust the yellow buttons to $28 (which has a really nice warm yellow when red bit is set)

Pros:
-you don't need dither or flicker
-better playfield clarity
-less colour monotony.

Cons:
-You need to detect or manually set PAL/NTSC region since they swapped the R and G bits for the PAL version.
-Rare variant systems and consoles that have been hacked by enthusiats to have an rgb output (also rare) will look different*. But it's still playable.


I think this techique is probably the least invasive to your original expression if you can get a region detection in. It can also be combined with the brownish red backplane if you want better colour distinction yet prefer the backplane to have some colour.

The dithering is just there because i didn't change it from my last mockup. To the left is using colour $07 (a bit darker than the casing), and to the right is using $08 (markedly darker than the casing but also noticably colder - i think it looks quite nice that way personally).

Attachment:
redemphasis.bmp
redemphasis.bmp [ 360.05 KiB | Viewed 5464 times ]

Last edit:
The new "darker than 06" property through the red bit could perhaps be used for shading on the plastic shell or edge smoothing of the same, even if the minimalist approach is nice on its own.
Re: Split Second
by on (#231141)
Might be neat to have an option where you hold the controller sideways (vertical). It would resemble holding the original game.
Re: Split Second
by on (#231181)
The good news is that it was pretty easy to change the "clear_board" method to produce an off-colored board in color $07 instead of drawing an all black board. It looks pretty good as is - don't think I will need the alternating horizontal lines method or dithering this time around.

The bad news is that if I really go through with this... I'll have to re-write code in each of the 8 games and it would require me to upgrade to NROM 256 :( . For example, see in the screen shot how there is black around the ball and the space ship. The off-colored board gets erased when you move the ship around. Same thing with the other games. Would definitely like to try. But not sure if I will have the time in January. Will keep the group posted with any updates. Thanks for all the good suggestions!
Re: Split Second
by on (#231183)
The game is great as it is. And there is an endless path to perfection. If you feel it's done, you should call it done. I like it and I will definitely put it on my flashcard.
Re: Split Second
by on (#231189)
Yeah the game is already fun. Please think of my feedback as signs of enthusiasm.
Re: Split Second
by on (#231190)
Completely understood! I appreciate all the enthusiasm and constructive feedback!
Re: Split Second
by on (#231460)
I'd never heard of this device but its awesome how it definitely looks like a handheld and weirdly enough feels like your playing one even though you're on a console... which I'm guessing was the point so AWESOME job.

My only suggestion is it might be nice to give some sort of label/description to the game as you're choosing which one. So instead of having to know what games 1-8 are, have some info on screen about what it is. I could see the alternative argument that its a part of the handheld and therefore should remain as is, but I think this would be one improvement worth making and could be displayed outside the handheld itself.

I'd also second the suggestions around showing the dimmed led's when they're off, but saw your note about technical limitations. Those two nits aside, this seems to accomplish exactly what you wanted. Great job!
Re: Split Second
by on (#231551)
mitch3a wrote:
My only suggestion is it might be nice to give some sort of label/description to the game as you're choosing which one. So instead of having to know what games 1-8 are, have some info on screen about what it is. I could see the alternative argument that its a part of the handheld and therefore should remain as is, but I think this would be one improvement worth making and could be displayed outside the handheld itself.

I might be able to look into this! Thanks for the suggestion.

For the past week or so I've been playing around with different ways of showing the "off-color" on the game board. Some are OK. First, I tried adding the $08 off-color with the existing game screen border. See split_second_013.png.
Then I tried getting rid of the border all together. When I got rid of the border, I tried using a $07 background with a black off-color (see split_second_012.png), an $07 background with an $08 (dark greenish) off-color (see split_second_011.png), and then finally a black background with an $08 off-color (see split_second_010.png).

The one thing I haven't tried so far is any of the fancy flickering tricks or alternating horizontal lines each NMI due to development time constraints. But I'd still like to eventually give it a shot.

Also, after working on this for a week I accomplished two stretch goals:
    1) Enabled basic RLE compression on the background graphics. Thanks for the nudge @FrankenGraphics
    2) Added a slightly modified @tepples NTSC/PAL/DENDRY detector. (Modified because at the end of the algorithm I had to subtract by #$09 instead of #$0A to give me the right answer - would anyone off the tops of your heads know why??)

In the game, I was able to successfully detected the different TV regions. The timer in the game now works appropriately for NTSC and PAL. But I haven't had a chance to change the sounds / any color palettes etc. yet.
Re: Split Second
by on (#231563)
If you don't mind one more random guess for something that might work, here's a thought:
Attachment:
split_second_suggestion.png
split_second_suggestion.png [ 1.38 KiB | Viewed 3865 times ]


Looking at pictures of the actual device, the difference between "segment is off" and "there's no segment here" is very subtle, much more subtle than any pair of colors the NES really has.
Re: Split Second
by on (#233079)
In case people are curious, I added a new version of the ROM in the OP.

In this new version, I added in the background "off colors" as discussed in above posts. Hopefully this will help make the game more intuitive to first-time players. I also fixed some of the glitches that I found when testing on original hardware and made *an attempt* :) at enhancing the graphics.

Enjoy!
Re: Split Second
by on (#234738)
I just had a chance to try this out, it's a solid effort! Completing a round and improving your score is really satisfying. :D