Discussion
RAM Addresses
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.
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
Simple HUD script
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);