View Page Source

Back to Page
Revision 14 (current)
Edited by adelikat on 9/2/2023 2:59 PM
! Discussion
[Forum/Topics/10235]

! RAM Addresses
BizHawk .wch file: [UserFiles/Info/637936906465355189]

! Weight system
The color of the Nibly-pibbly you eat determines how how much weight you'll put on: 

*Blue: 1 point for red snake, 2 for blue 
*Red: 1 point for blue snake, 2 for red 
*Yellow: 3 points for both 

You need 4 points for each body piece you put on. The scale at the end of the levels doesn't count the exact number of points, though, to determine if you're heavy enough. It instead just counts the number of body pieces that you have (excluding the head). In the first and second levels you need 4 body pieces to ring the bell. In all levels between 3-9 that have scales you need 5 body pieces. In level 10 you need 6.

! Facing the opposite direction that you're moving: 
If you build up velocity in the certain direction and immediately push in the opposite direction you'll deaccelerate while still facing the same way. But if you have one frame of no input before pushing in the other direction, you'll face the way in which you're breaking. 

! Getting ejected up platforms and double jumping: 
If you push yourself against a platform and jump up on it, it'll be enough if your position - in the jumping dimension - is less 6 pixels under the platform you're aiming for. Then you'll get ejected the last pixels. The most useful thing about this is a related bug that works in such a way that if you push the jump button at the frame when you're getting ejected, you'll immediately jump again.

! Game map
http://www.vgmaps.com/Atlas/NES/SnakeRattleNRoll-Map.png

! Simple HUD script
%%SRC_EMBED sh
dim1speed = 0
dim2speed = 0
xspeed    = 0
xsubspeed = 0
yspeed    = 0
ysubspeed = 0
function stuff()
	xspeed    = memory.readbyte(0x417)
	xsubspeed = memory.readbyte(0x419)
	if (xspeed == 255) then xspeed = -1 end
	
	yspeed    = memory.readbyte(0x41b)
	ysubspeed = memory.readbyte(0x41d)
	if (yspeed == 255) then yspeed = -1 end

	gui.text(1,9 ,"L:"..memory.readbyte(0x67) % 16) -- left axis
	gui.text(1,19,"R:"..memory.readbyte(0x69) % 16) -- right axis
	gui.text(1,29,"H:"..memory.readbyte(0x6b) % 16)	-- height axis
	gui.text(30,9, "LVel:"..(xspeed * 256) + xsubspeed + (yspeed * 256) + ysubspeed)
	gui.text(30,19,"RVel:"..(xspeed * 256) + xsubspeed - (yspeed * 256) - ysubspeed)
end
emu.registerafter(stuff);
%%END_EMBED