Bro-in-one

A place where you can keep others updated about your NES-related projects through screenshots, videos or information in general.

Moderator: Moderators

Post Reply
User avatar
norill
Posts: 21
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Bro-in-one

Post by norill » Sun May 03, 2020 5:07 pm

Hi, a while ago i got interested NESdev and decided i wanna try it. I didn't want to make a whole game because that's pretty difficult and i didn't have much experience in asm programming. So i figured i would just make a custom multicart. It was going to be a compilation of 2 player games. I named it Bro-in-1 and intended to give it to my friend for his birthday. I asked him what were his top 3 favourite NES games for 2 player and he named:
  • Battle City
  • Contra
  • Balloon Fight
I planned to make a dedication screen, a title screen and game select screen consisting of 3 panels with artworks for each games. I would use a mapper 15 cart, which is well suited for multicarts containing UNROM and NROM games. Mapper 15 carts were included with Pegasus famiclones sold in Poland, so the supply was quite big. Pegasus is also my target platform.

I started working in december 2016. I had a lot of fun making the first screen. Took me about 20 days to finish it. I posted a teaser THD forums, which sparked some interest.
Image

One of my friends on that forums even volunteered to draw the title screen for me. A nice collaboration ensued. He quickly came up with a first concept sketch:
Image

It has been then refined a few times and adapted to NES limitations
Image

Image

Image

Image

Image

Image

After around 10 days the final version emerged:
Image

I have finished programming that screen soon after. And my friend also drew a great panel for Battle City, but was unable to draw one for Balloon Fight. For Contra we just used ripped game assets. But then i encountered a problem when attempting to test it on hardware. Motivation plummeted, development slowed down. I tried to finish it for my friend's birthday, but there was still to much to do and the issue with hardware tests was still unresolved. The project died.

I've revived it in late 2019. With the help i got from folks from here i managed to solve my issue, patching a few emulators in the process. I have arduously compressed the title screen nametable by hand to save like 20 bytes compared to compressing it using "that should be ok" algorithm.
Image

The fact that i still didnt have a panel for Balloon Fight was starting to block me. This was all i got:
Image

I started to look for artists, with some success, but i ended drawing that missing panel myself. It was a painful process full of self-doubt, obscenities and tears, and the outcome was terribad, but considering my nonexistent art skills im still proud of it:
Image

Image

The project in nearing completion, however i still miss some critical features, as well as optional ones. That's one of the reason for this post. Most important matter for me now is that i need music (and sfx). I thought i would be able to convert a track from MIDI, but getting a result of acceptable quality was still way beyond my skills. So if there is anyone willing to transcribe a track or maybe even compose a new one for this project, please contact me.

Another issue is that i still have a lot free space on the cart and decided that i should add more games that would be selectable from a (perhaps hidden?) simple game list screen similar to those on most multicarts. So i'm looking for suggestions for good 2 player games (either commercial or homebrew) that can be put on mapper 15 cart without much problems (mostly NROM and UNROM).

I also wanna add some quirky features and easter eggs to make this cart more interesting. One idea is to a put 2 diodes inside the cart, hidden behind the front label picturing waterfall level boss from Contra (the one seen above). Those diodes would be where the boss's eyes are and during that boss fight they would blink in sync with the eyes on TV screen. That would require hacking Contra to add logic to signal the blinks to the cart by writing to $6000, which is quite simple and i've already done that. But it also requires adding logic on the mapper side and i would prolly need help with designing that logic, because i dont have much experience with electronics.

Another feature that involves hacking ROMs was adding "life borrowing" mechanism (same as that present in Contra) to BF and BC. That was quite challenging in case of BF due to lack of enough free space. But i somehow managed to squeeze it in together with a feature of bonus lives every 100k points.

I wanted to change the names on game title screens to Brontra, Bro City and Balloon Bros. In case of BC that's just a matter of changing 6 bytes in the ROM, but for BF and Contra it would be pretty difficult and i'm not sure if it's worth it.

Similar in vein was my idea replace death sounds with Wilhelm scream. I doubt it would be possible in BF because of the mentioned tight space and it would make no sense in BC, but i'm still considering adding it to Contra.

As for the easter eggs - i came up with some actions what would trigger them, but i have trouble thinking of what could they be. Among my trigger ideas were: konami code, resetting the console 7 times (or maybe 10% chance per reset for something to occur), stuffing a microphone inside the cart and having to yell "BRO IN ONE" while holding select, and lastly mounting an inertial switch in the cart that would require yanking the cart sideways to activate it.

I'll gladly welcome your ideas for easter eggs and ways to trigger them. I was considering having certain easter eggs alter the behavior of the games (like only changing title screens to their BROified variants only if BRO mode has been activated, same with Wilhelm scream), but that might not be feasible.

And last issue: i need a front and back label for the cart. I might be able to design it myself despite being artistically challenged, but if someone was willing to make it, then i would be very grateful.

To sum up - i need:
  • someone that would help with music done!
  • someone that would design front and back label for the cart
  • recommendations of good 2 player games that i could include in this multicart
  • your ideas for easter eggs and features to implement
Sorry for the long post and thanks for reading :)
Attachments
Bro-in-one demo.nes
stripped down demo of multicart menu
(16.02 KiB) Downloaded 68 times

User avatar
qbradq
Posts: 951
Joined: Wed Oct 15, 2008 11:50 am

Re: Bro-in-one

Post by qbradq » Sat May 09, 2020 9:50 am

Wow, this looks great! And it's a very interesting way to get your feet wet with NES development. Great work!

User avatar
norill
Posts: 21
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Re: Bro-in-one

Post by norill » Sun May 31, 2020 8:39 am

so i was wondering how should i go about making blinking diode eyes in the cart. initially i thought about writing to $6000-$7FFF to control the diodes, but i would have to add hardware for address decoding and a flip flop to remember the state. but as i was inspecting the mapper schematic i noticed that the flip flop holding banking mode uses only 2 bits, and 4 are left unused. so i can simply connect address lines to that flip flop and make it control the diode eyes by writing to $8000-$8020 instead. but i still have one problem: i want the diodes to have 3 states: off, fully on, and partially on (50% brightness). i'm not sure how to achieve that. best i could come up with is this:
dfułu.png
dfułu.png (4.01 KiB) Viewed 1089 times
when Q3 and Q4 are high the diode is fully on, and only when one of them is high then the diode is partially on. but im not sure if it's safe to have Q3 high and Q4 low if they are connected to each other by 2 resistors. i wouldnt want to damage the flip flop. can someone suggest the best way to achieve my goal?

lidnariq
Posts: 9379
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Bro-in-one

Post by lidnariq » Sun May 31, 2020 10:39 am

norill wrote:
Sun May 31, 2020 8:39 am
when Q3 and Q4 are high the diode is fully on, and only when one of them is high then the diode is partially on. but im not sure if it's safe to have Q3 high and Q4 low if they are connected to each other by 2 resistors. i wouldnt want to damage the flip flop. can someone suggest the best way to achieve my goal?
It is safe to do that, as long as the resistors you use are large enough.

If you choose two different values of resistor, you'll be able to get four different brightnesses instead of three.

User avatar
norill
Posts: 21
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Re: Bro-in-one

Post by norill » Sun May 31, 2020 10:50 am

lidnariq wrote:
Sun May 31, 2020 10:39 am
norill wrote:
Sun May 31, 2020 8:39 am
when Q3 and Q4 are high the diode is fully on, and only when one of them is high then the diode is partially on. but im not sure if it's safe to have Q3 high and Q4 low if they are connected to each other by 2 resistors. i wouldnt want to damage the flip flop. can someone suggest the best way to achieve my goal?
It is safe to do that, as long as the resistors you use are large enough.

If you choose two different values of resistor, you'll be able to get four different brightnesses instead of three.
oh, you are right, thanks for pointing that out :D i only need 3 brightnesses for keeping the diodes in sync with waterfall boss eyes in contra, but i might use 4 in some easter egg 8-)

User avatar
Fisher
Posts: 1065
Joined: Sat Jul 04, 2015 9:58 am
Location: -29.794229 -55.795374

Re: Bro-in-one

Post by Fisher » Sun May 31, 2020 1:20 pm

As a suggestion of 2 nice UNROM games wich support 2 players simultaneously I leave Jackal and Life Force.
I loved to play these 2 games with friends as a kid. :-)

User avatar
norill
Posts: 21
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Re: Bro-in-one

Post by norill » Sun May 31, 2020 1:38 pm

Fisher wrote:
Sun May 31, 2020 1:20 pm
As a suggestion of 2 nice UNROM games wich support 2 players simultaneously I leave Jackal and Life Force.
I loved to play these 2 games with friends as a kid. :-)
i am very happy to hear that u suggest those, because they are already on my list :D that means my choice was good

here is my premiminary list of additional games

Code: Select all

ice climber			nrom	 24
mario bros			nrom	 24
jackal				unrom	128
marble madness?			anrom	128
battletoads			anrom	256 
Legendary Wings 		unrom	128
LifeForce 			unrom	128
though including anrom games on mapper 15 cart is tricky and i would have to modify it to disable CHR protection

User avatar
Fisher
Posts: 1065
Joined: Sat Jul 04, 2015 9:58 am
Location: -29.794229 -55.795374

Re: Bro-in-one

Post by Fisher » Sun May 31, 2020 4:59 pm

norill wrote:
Sun May 31, 2020 1:38 pm
i am very happy to hear that u suggest those, because they are already on my list :D that means my choice was good
Of course!! That's amazing!! LOL
I would recomend Legendary Wings too, but I think it's 2 players taking turns.
Altough I like Battletoads, I find Battletoads & Double Dragon easier to find someone to play with, since the original has added dificulty on 2 players mode.
Hope you can finish this project soon and have lots of fun playing it with your friends. :-D

User avatar
norill
Posts: 21
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Re: Bro-in-one

Post by norill » Tue Jun 16, 2020 5:33 pm

Progress Report :D

i came across some difficulties when testing the game selection screen on my good ol' pegasus. i thought initially that i messed something up, probably CIRAM chip, when i tweaked the reset detection circuit on the cart or when i wired address lines to unused flip flop inputs. but after further testing i concluded that my nmi routine had too much work to do when switching through selected games and it was spilling over to the next frame. it didnt occur on emulator, because i incorrectly selected PAL mode, which has a longer vblank time. and pegasus hardware is closer to dendy, not PAL. that means it's vblank is same as NTSC, but it also has a very long post-render time. i found a way to run nmi routine in the post-render time, way before the non-maskable interrupt gets signalled, thus greatly extending the time i could use for screen updates. it boiled down to a sprite-0 hit (that i already relied on for pattern table switching) plus a delay loop. also fixed various little bugs and visual artifacts related to screen transitions.

i have also finished coding a routine in contra that would control the blinking diode eyes. this means i finished the "core" functionality and now only "strech goals" remain. the biggest one is to add a "hidden" secondary games selection screen and hack those secondary games in.

and by the way, im still looking for some good soul that would design front and back labels for me :)

Post Reply