View Page Source

Revision (current)
Last Updated by brunovalads on 1/15/2016 11:10 PM
Back to Page

The purpose of this page is to start the TAS research on The Flintstones (SNES), a game that was not explored at all until now. It was launched in 1995, based on the [http://en.wikipedia.org/wiki/The_Flintstones_(film)|homonym movie launched in 1994].

The content of this page is updated according to [http://github.com/brunovalads/the-flintstones-snes|BrunoValads' research on GitHub].

%%TOC%%
----
!!!Basic Information

* It's assumed that this game works with 256 subpixels per pixel.
* Fred's max speed is 2 pixels/frame (high byte of his x speed), and it doesn't oscillate.
* His speed is increased by 25 subpixels/frame (low byte of his x speed) each frame the player holds forward, and is decreased by 23 subpixels/frame when released. So, he reaches max speed in 21 frames (starting from zero).
* His max falling speed is 8 pixels/frame.
* There are 29 sprite slots, and 4 extended sprite slots.
* Extended sprites are Fred's projectiles (stones and bowling balls).

!!!Passwords

||Password||Result||
|MS STONE MAKES WEIRD JELLY|Invincibility
|BETTY PICKS BLUE RIBS|Starts in Bedrock 1
|BAM BAM MAKES SMALL ROCKS|Starts in Jungle 1
|CLIFF HIDES HOT JUICE|Starts in Volcanic 1
|ORANGUTAN DRAWS HAIRY FRUIT|Starts in Machine 1
|BARNEY GRABS BLUE TREES|Stage Skip (pause game, press X to activate)
|TIGER MIXES MAGIC JUICE|Changes trophies into "Game Players" icon
|DICTABIRD DRAWS WIERD TREES|Changes trophies into OCEAN logo
|HOAGIE TAKES COLD TREES|View Credits

!!!RAM Map

__Notes before reading:__
* This is an abridged version, with the useful info for a TAS. For the (current) complete map check [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map.md|this page].
* The sprites and extended sprites table sizes are doubled: 58 bytes (or 29 words) table for 29 sprites, 8 bytes (or 4 words) table for 4 extended sprites. The "high byte" of the pair is often unused, I guess the producers made the tables according to the X/Y position tables, that indeed use the second byte of the pair.
||Address||    Size       ||Description||
|$7E001C|2-bytes|Camera X position.
|$7E001E|2-bytes|Camera Y position.
|$7E0040|2-bytes|Game mode.  A list of valid values can be found [https://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].
|$7E008C|2-bytes|Frame counter, maybe[#1]. Resets to zero during screen transitions, and pauses when the game is paused.|
|$7E0622|1-byte|Stage skip password flag.
|$7E0624|1-byte|Invincibility password flag.
|$7E0636|1-byte|Is paused flag.
|$7E0725|1-byte|Fred's graphical direction, maybe[#1]: #40 = facing right, #104 = facing left. It's controlled by the effective direction ($7E0CB9).
|$7E0944|1-byte|Fred is loaded flag. #$01 = Fred is loaded, in levels, cutscenes, Password screen, Ocean intro. Also is #$02 when is walking in cutscenes and #$03 when jumping in cutscenes.
|$7E0946|58-bytes|Sprite type table. Can be interpreted as a status sometimes. You can check [http://github.com/brunovalads/the-flintstones-snes/blob/master/Sprite-List.md|this complete list of sprites].
|$7E0980|8-bytes|Extended sprite type table. Uses the values #$10, #$11, #$14 and #$15 from the sprite type table. Can be interpreted as a status sometimes. You can check [http://github.com/brunovalads/the-flintstones-snes/blob/master/Sprite-List.md|this complete list of sprites].
|$7E0988|2-bytes|X position.
|$7E098A|58-bytes|Sprite X position table.
|$7E09C4|8-bytes|Extended sprite X position table.
|$7E09CC|2-bytes|Y position.
|$7E09CE|58-bytes|Sprite Y position table.
|$7E0A08|8-bytes|Extended sprite Y position table.
|$7E0A11|1-byte|Accumulated X subpixels.
|$7E0A13|58-bytes|Sprite accumulated X subpixels table.
|$7E0A4D|8-bytes|Extended sprite accumulated X subpixels table.
|$7E0A55|1-byte|Accumulated Y subpixels.
|$7E0A57|58-bytes|Sprite accumulated Y subpixels table.
|$7E0A91|8-bytes|Extended sprite accumulated Y subpixels table.
|$7E0A98|2-bytes[#1]|Fred's animation poses. A list of valid values can be found [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].
|$7E0A9A|58-bytes|Sprite animation table, maybe[#1].
|$7E0AD4|8-bytes|Extended sprite animation table, maybe[#1].
|$7E0CB9|1-byte|Fred's effective direction, maybe[#1]: #00 = facing right, #64 = facing left.
|$7E0D84|2-bytes|X speed. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0D86|58-bytes|Sprite X speed table. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0DC0|8-bytes|Extended sprite X speed table. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0DC8|2-bytes|Y speed. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0DCA|58-bytes|Sprite Y speed table. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0E04|8-bytes|Extended sprite Y speed table. The low byte is the subspeed, in subpixels/frame, and the high byte (__signed__) is the speed, in pixels/frame.
|$7E0E94|1-byte|Is on ground flag. #01 = yes, #00 = no.
|$7E0FF0|2-bytes|Last valid X position to respawn (if the player falls on a pit).
|$7E0FF2|2-bytes|Last valid Y position to respawn (if the player falls on a pit).
|$7E0FF6|1-byte|Fred's status. A list of valid values can be found [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].
|$7E1000|1-byte|Is smashing flag. When #01, Fred hits enemies and smashable rocks.
|$7E1485|2-bytes|Width of the current level, in blocks. $7E15B6 seems like a mirror of the low byte.
|$7E1487|2-bytes|Height of the current level, in blocks.
|$7E1D51|1-byte|Invincibility timer. The player has 120 frames of invincibility after being hit or falling in a pit.
|$7E1D5B|1-byte|Current level. A list of valid values can be found [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].
|$7E1D65|2-bytes|Lives.
|$7E1D69|2-bytes|Health (Fred faces in the life counter, #02 = normal, #01 = tongue out, #00 = tongue out and spiked hair).
|$7E1D6D|2-bytes|Stones.
|$7E1D71|2-bytes|Bowling balls.
|$7E1D75|2-bytes|Score. The maximum score you can see is 042767, which corresponds to $1D75 = 15 and $1D76 = 167, any point further the addresses are updated normally, but the counter becomes 000000,%%%and you won't get in the Hiscores. Note: the first digit on the counter is never used, there isn't an address for it, apparently.
|$7E1D8D|2-bytes|Time. Each game second takes 64 frames, so in NTSC (60Hz), 16 game seconds = 15 real seconds.
|$7E1DD5|2-bytes|Counter for how long you're holding a stone to throw (holding X). When hits #120 you burn you hand and waste the stone. This determines how far the stone can go.%%%E.g.: if you hold for 20 frames the stone will float without y speed for 20 frames. The high byte is never used, but is updated if you poke a value bigger than #120.
|$7E1DD7|2-bytes|Idle timer. It's #300 when player is acting, then decrements whenever the player is idle. When reaches #00, activates the idle animation.
|$7E1ED6|1-byte|Boss HP. The Caveman boss (Quarry 3) has #15, the Tiger boss (Jungle 4) has #5.
|$7E2000|2-bytes|Width of the level loaded, in blocks. Is set during the level loading/name screen.
|$7E2002|2-bytes|Height of the level loaded, in blocks. Is set during the level loading/name screen.
|$7E2004|?-bytes[#1]|Map16 table of tiles (low byte). It's more like the ID of the tile, e.g.: #$9f = blank tile. A list of valid values can be found [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].
|$7E2005|?-bytes[#1]|Map16 table of tiles (high byte). It's more like the properties of the tile. A list of valid values can be found [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Map_Extra_Info.md|here].

[1]: These addresses need further research to be determined correctly.

!!!Glitches and Tricks

- Hold a stone on hand until it starts to burn, then you jump. Fred's face gets weird, and if you're still in the air when the stone overheat, the animation (overheat animation) happens way faster if you keep jumping. That's because the address $7E1DD5 (counter for how long you're holding the rock) is not reset to zero while in air.%%%
[http://i.imgur.com/AnDWVbc.gif]

- Throw cancel: release the X button right when you're about to land on ground, Fred won't throw the stone. There's a 22 frame window for this trick, and the only other way to cancel a throw is getting damage.%%%
[http://i.imgur.com/rC3dUYI.gif]

- Jumping to a ledge from behind you hit an invisible solid block.%%%
[http://i.imgur.com/FCUrfs7.gif]

- In Jungle 1, right after the 2 bridges, there's a Gorilla that spawns bellow the platform and falls down, in the pit on the right.%%%
[http://i.imgur.com/VRROVaf.gif]

- If you're on the right ledge on the top of a Springboard contraption facing its center, you can activate it using a bowling ball. Fred's x pos must be > than springboard x pos + 12 for this trick to work (and < than springboard x pos + 25, leading to a 12 pixels window). Also, sometimes the accumulated x pos is reseted to zero with this trick.%%%
[http://i.imgur.com/ftVs1n6.gif]

- In the Password screen, Fred creates the dust from walking, but it's invisible, static, and lasts forever.%%%
[http://i.imgur.com/AVuWqDc.png]

- Throwing a stone when sticked to a wall makes it falls straight down and passing through the floor. You can do this from sticked to the wall to 12 pixels away from it.%%%
[http://i.imgur.com/sc0MY1n.gif]

!!!Utilities

!!Lua Script

BrunoValads made a [http://github.com/brunovalads/the-flintstones-snes/blob/master/The-Flintstones-Utils.lua|lua script for Lsnes], based on Amaraticando's [http://github.com/rodamaral/amaraticando-tas/blob/master/Tools/lsnes/lsnes.lua|generic Lsnes script]. It contains:
* Fred's basic info
* Level info
* Sprites and extended sprites info
* Stone trajectory based on power
* Frame and lag frame counters
* Input display with frames (on the left)

!!RAM Watch

You can use this [http://github.com/brunovalads/the-flintstones-snes/blob/master/RAM_Watch.wch|.wch] file to see the basic info on Snes9x or BizHawk.