It is currently Tue Nov 13, 2018 8:37 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 33 posts ]  Go to page Previous  1, 2, 3  Next
Author Message
 Post subject:
PostPosted: Mon Apr 07, 2008 2:57 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3155
Location: Brazil
Battletoads & Double Dragon... plus a few others.

_________________
Zepper
RockNES developer


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 3:04 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10959
Location: Rio de Janeiro - Brazil
Sure, many games have 2-player scrolling, but this is not a matter of copying those games' systems, it's a matter of modifying the existing SMB code (as little as possible) to do it.

Maybe the camera could be pushed as usual, by either player, but if the other player is far too much to the left, he'd prevent the camera from moving. Something like that.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 5:04 pm 
Offline
Formerly Fx3
User avatar

Joined: Fri Nov 12, 2004 4:59 pm
Posts: 3155
Location: Brazil
- Can the palette be virtualized into RAM?

_________________
Zepper
RockNES developer


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 5:27 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20761
Location: NE Indiana, USA (NTSC)
Fx3 wrote:
- Can the palette be virtualized into RAM?

It already is, to an extent. Notice that the game never throws more than two different colors of enemies at the player at once, and if you can run SMB1 in Nintendulator, watch how the palette RAM changes right before the red turtle in 1-2. If you want to put more than four palettes on the screen at the same time, you get even more flicker than what SMB1 already does to fit one 16-pixel-wide player, five 16-pixel-wide enemies, one powerup, two fireballs, and several hammers on the screen at once.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 5:31 pm 
Offline
User avatar

Joined: Fri Jun 29, 2007 10:25 pm
Posts: 324
Location: Earth, Milkyway Galaxy, The Universe, M-Theory
I'm too lazy to read to see if this is already mentioned, but don't forget that you'd have to rewrite the collision subroutine to check if you've hit the other player or not, otherwise you'll die from touching your brother (either appropriately or inappropriately).

Furthermore, how exactly would real-time co-op appeal to someone? It will only slow things down on a game programmed for one player.

_________________
Code:
          *=$0000
loop      JMP loop
          .eof


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 5:58 pm 
Offline

Joined: Thu May 03, 2007 3:07 pm
Posts: 155
tepples wrote:
It already is, to an extent. Notice that the game never throws more than two different colors of enemies at the player at once, and if you can run SMB1 in Nintendulator, watch how the palette RAM changes right before the red turtle in 1-2.

When I tried doing this (with FCEUxD, which also has palette and hex viewers), this doesn't happen at all. However, it does happen whenever an ax rendered to change one of the palettes to the green palette, used in-game for Bowser. Also, just a little nitpick, but the game can render at most three different palettes for enemies - an actual occuring example in-game would be a Blooper, a Grey Cheep-Cheep, and a Red Cheep-Cheep. :P


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 6:26 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20761
Location: NE Indiana, USA (NTSC)
strangenesfreak wrote:
Also, just a little nitpick, but the game can render at most three different palettes for enemies - an actual occuring example in-game would be a Blooper, a Grey Cheep-Cheep, and a Red Cheep-Cheep. :P

Are there any examples in levels that contain bumpable blocks (that is, not water levels)?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 6:53 pm 
Offline

Joined: Thu May 03, 2007 3:07 pm
Posts: 155
tepples wrote:
Are there any examples in levels that contain bumpable blocks (that is, not water levels)?

Well, you might also need to consider the mushrooms. Specific colors are necessary for them to be differentiated and identifiable - otherwise, it could be confusing to identify what's a Super Mushroom (red) and what's a 1UP mushroom (green or cyan+brown). I wouldn't be surprised if you can encounter a Goomba, Green Koopa, and Red Koopa all at once. Other palette conflicting stuff (jump springs, hammers, fireballs, platforms, beanstalks, coin block hits, flagpoles, and brick animations) could change their palettes during different level/level types, but I think mushrooms (at least 1 kind, the Super Mushroom in this case) need to have specific palettes.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 6:59 pm 
Offline

Joined: Mon Apr 07, 2008 6:08 pm
Posts: 333
Location: Missouri
BMF54123 wrote:
You'd have to patch every single routine that handles player/object collisions--including potentially complex things like the flagpole and end-of-world sequences--to handle two different sets of player variables.


It would probably work if there's a double set of player variables and every routine handling the player's collision or physics ran twice with the player id passed as a parameter.

atari2600a wrote:
you'd have to rewrite the collision subroutine to check if you've hit the other player or not, otherwise you'll die from touching your brother (either appropriately or inappropriately).


From going over the collision code in Doppleganger's commented disassembly, it doesn't look like that's an issue as long as both players have their own data separate from the enemy object data. As is, both players and their fireballs should just pass through each other much as the hammers ignore the breakable blocks. And they have to, or a few jumps in the game will be impossible.

Of course, there's some other issues that haven't been mentioned yet:

-what happens when one player cuts the bridge with the other guy far behind? If the hacker lets the poor sap fall in the lava that would be pretty funny.
-what if one player takes the lower path in 4-4 and the other takes the middle path which turns out to be a deadend?
-who gets the power-ups? Maybe a player who already has a fire flower shouldn't be able to get another one.
-will a dead player respawn in the same place ala Contra?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Apr 07, 2008 11:19 pm 
Offline
User avatar

Joined: Thu Sep 07, 2006 1:08 pm
Posts: 574
Location: United States
Quote:
-will a dead player respawn in the same place ala Contra?

You could use the same technique they use in Battletoads. :twisted:


Top
 Profile  
 
 Post subject:
PostPosted: Tue Apr 08, 2008 10:11 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20761
Location: NE Indiana, USA (NTSC)
Super Smash Bros. Brawl's co-op adventure mode handles it in the fairest way I've seen: the player can respawn only at certain relatively safe X coordinates, and it seems to wait for one of those to scroll onto the screen before respawning.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 10, 2008 2:24 am 
Offline

Joined: Thu Jul 10, 2008 1:18 am
Posts: 1
This thread is a few months old, but oh well...

I don't want to kill the authenticity of the project, but perhaps we are looking at this all wrong. Maybe the best(and possibly the least daunting) way to achieve 2p Co-op SMB is to make an engine for the PC that closely, if not precisely, recreates the physics and graphics of the original, with the addition of a 2 player mode. I would imagine that it should look something like this:

Image

Image

Image


On a PC, it's 320x240 resolution also is better, because it gives more room for 2 players to move around in, compared to the 256x225 of the NES. Also, the reserve item would have the option of being disabled, for those who are looking for more authentic gameplay.

Someday, I will make this... when I finally get around to becoming a programmer. :)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 10, 2008 3:53 am 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10959
Location: Rio de Janeiro - Brazil
PC recreations are just so... uninteresting! Personally, I get a real kick out of the challenge that is making things possible on the NES. With current PC's, almost everything is possible, and, in my opinion, that makes the development of retro games for it pretty dull.

The casual gamer probably doesn't care, as long as he's got a playable game. A lot of people around here, including NES programmers, apparently feel like that too.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 10, 2008 4:27 am 
Offline

Joined: Mon Apr 07, 2008 6:08 pm
Posts: 333
Location: Missouri
Would it even be possible to add code to the SMB ROM without bank switching?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 10, 2008 7:01 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 20761
Location: NE Indiana, USA (NTSC)
tokumaru wrote:
PC recreations are just so... uninteresting!

But a lot more people have a PC capable of running Allegro games than an NES and a PowerPak or other copier. Heck, there are probably more PCs connected to an SDTV or HDTV than NES systems with an NES copier. As Bananmos might put it, if you are writing a program to be run in RockNES, an emulator written in C with the Allegro library, why not just code for Allegro itself?

tokumaru wrote:
Personally, I get a real kick out of the challenge that is making things possible on the NES.

The first problem with 2-player SMB style game would be palettes:
  • $3F11: colors for Mario and red Koopas (peach, red, brown)
  • $3F15: colors for Luigi and green Koopas (peach, green, brown)
  • $3F19: colors for power-up
  • $3F1D: colors for only ONE more type of enemy
It's also part of why there weren't a lot of four-player games for the NES, as everything needed to use one of the players' palettes. There wasn't as much of a problem on the Super NES, which had eight palettes that were commonly divided into 2 sub-palettes each.

The second problem would be horrible sprite flicker when Mario, Luigi, and several Goombas are on platforms of equal height.

strat wrote:
Would it even be possible to add code to the SMB ROM without bank switching?

Probably not. But if I were expanding SMB1, I'd rearrange it into UNROM based on the published disassembly. The problem with expanding an NES rom, of course, is that no commonly used patcher (e.g. IPS, NINJA, UPS) supports the kind of rearranging that would result from disassembling and reassembling a rom.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 33 posts ]  Go to page Previous  1, 2, 3  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: Google [Bot] and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group