Modified number_geo to allow it to display orange numbers from 0 to 999.
Edited red coins/secrets code:
Added two fields in the Area struct: numRedCoins and numSecrets
The number of red coins/secrets in every area is computed during level script processing
Removed the useless global gRedCoinsCollected
These changes fix the following bugs:
Wrong sound effect played and incorrect number displayed when there is more than 8 red coins/5 secrets
Desynced red coins/secrets counter when going from an area to another
Remotely spawning red coins/secrets stars in other areas without collecting all red coins/secrets
Pausing the game now shows the correct number of collected red coins / the total number of red coins in the current area.
* Ukiki now steals Mario/Luigi hat correctly
* Klepto now steals Mario/Luigi hat correctly
* Mr. Blizzard now knocks off Mario/Luigi hat correctly
* Fwoosh now knocks off Mario/Luigi hat correctly
Co-authored-by: anzz1 <>
Since the second-player code was the first code I wrote, it was implemented
poorly. At that point, I didn't know the code base at all and the way it was
written would prevent anyone from ever adding to those parts.
The rewrite allows me to use the default geo.inc.c file for Mario, and removes
all of the geo2.inc.c files. I no longer do a bunch of bit shifting to figure
out which player is being drawn in the rendering code.
I'm also now able to remove tons of duplicate code that exists just for the
remote player. The main player code is generic enough to support both indices.
A side-effect of the rewrite is I was able to remove many assumptions in the
code where two-players is assumed, but many other parts of the code still
assume two players.
This is a fairly major change that, if all goes well, will be completely
unnoticed by the player. However, I do expect new bugs to pop up in strange
places. Time will tell.
Added Luigi model.
Renamed all previous references to 'Luigi' to 'Mario2' since player 1
isn't always mario, and player 2 isn't always luigi.
Now server is always mario and client is always Luigi.
Luigi model credits:
Original model by Cjes, converted by AloXado320, textures added/fixed by
SunlitSpace542.
All credits to zoinknoise, I found this at Romhacking: http://www.romhacking.net/hacks/5008/
"Thanks to the recent decompilation efforts, it’s now known that this texture is displayed in the wrong format by the game, resulting in
black garbage pixels. Since video game smoke of this era was often depicted with black garbage pixels, the mistake went unnoticed for over two decades. This patch corrects the error by displaying the texture correctly as proper transparent smoke. It does not add any new art; the texture has been inside the ROM all along.
At build time, this will compile the texture into IA16 format (correct) instead of RGBA16 (incorrect)."