나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-11-16 23:56:39

슈퍼 마리오 64/버그

파일:상위 문서 아이콘.svg   상위 문서: 슈퍼 마리오 64
원작 · 진동팩 버전

파일:sm64-logo-eng.png
슈퍼 마리오 64
리메이크
파일:sm64ds-lqlogo-kor.png
<colbgcolor=#ce0000><colcolor=#fff>스테이지 · 등장인물 · OST
유저
콘텐츠
스피드런 (대한민국) · 버그 · A 버튼 챌린지(64) · B 버튼 챌린지(DS)
유튜버 · 개조 롬 · Super Mario 64 Bloopers · So long, gay Bowser!
슈퍼 마리오 시리즈 · 슈퍼 마리오 3D 컬렉션

1. 개요2. 속도 버그
2.1. 뒤로 멀리뛰기
2.1.1. 옆방향 뒤로 멀리뛰기(Side BLJ)
2.2. HyperSpeed Flying2.3. Hyper Speed Walking(HSW)2.4. 속도 초기화 무시 버그2.5. 속도 보존의 법칙2.6. 기타
3. 디자인 버그
3.1. 투명벽 버그3.2. 벽 속의 스타 획득 버그3.3. 꽈당꽈당 통과 버그3.4. 김수한무 스킵 버그3.5. 로비 버그3.6. 이글루 뚫기 버그3.7. 기타
4. 게임 엔진 버그
4.1. 클로닝(Cloning)
4.1.1. 폭탄병 버그4.1.2. 코인 박스 버그4.1.3. 원리
4.2. HOLP 고정 버그4.3. 모자 복제 버그4.4. Pause Buffering HitStun4.5. 토끼 버그4.6. 투척병 버그4.7. 1인칭 버그4.8. 평행우주4.9. 버그성 벽차기4.10. 게임 충돌 버그4.11. 기타
5. 미해결 버그
5.1. 똑딱 시계 순간이동 버그
5.1.1. 똑딱 시계 오브젝트 이동 버그
5.2. 음악 삭제 버그5.3. 기타
6. 여담

1. 개요

슈퍼 마리오 64버그들을 모아 놓은 문서다. 초창기 3D 마리오 게임인만큼 버그가 정말 많다.
슈퍼 마리오 64의 버그를 전부 집대성한 문서를 보고 싶다면 여기로(영어).

2. 속도 버그

2.1. 뒤로 멀리뛰기

↑뒤로 멀리뛰기의 역사

Backwards Long Jump, 줄여서 BLJ라 불리며 국내에서는 무한뛰얏후, 무한멀리뛰기, 이야야야야야야야얏후 등으로 잘 알려져있는 버그다. 일본어로는 ケツワープ(엉덩이 워프)라고 불린다. 멀리뛰기 동작은 기본적으로 앞으로 튀어나가게 되나 모션 중에 뒤 방향키를 입력하면 속도가 느려지는데, 이 감속에는 제한이 없어서 점프 방향과 정반대로 뒤로 움직일 수도 있다. 그런데 초기판에선 마리오가 뒤로 움직이는 속도에 제한이 전혀 없었다. 정확히는 양(+)의 속도에서는 48의 속도 제한이 걸려있지만 음(-)의 속도에서는 속도 제한이 없었다. 물론 마리오를 뒤로 움직일 수 있는 조작은 매우 제한적이어서 일반적인 플레이 상황에선 문제가 없었으나, 이 뒤로 멀리뛰기를 통해 속도의 제한 없이 뒤로 가속할 수 있는 방법이 생겨나 버렸고, 이것이 2차적으로 무궁무진한 테크닉과 추가적인 버그를 만들어내었다.

슈퍼 마리오 64 TAS의 기본적이고 필수적인 버그 중의 하나로, 멀리뛰기를 뒤로 하면 할 때마다 속도가 1.5배로 증가하게 되는데, 이 속도가 줄어드는 데에는 시간이 걸리기 때문에 멀리뛰기를 하면서 속도가 점점 증가하여 엄청난 속도로 벽을 뚫을 수도 있는 버그다. 타임 어택에서도 매우 중요한데 이 버그가 없으면 120스타와 70스타 이외의 스피드런은 전부 불가능해지기 때문이다. 16스타와 1스타 0스타의 스피드런은 이 버그의 존재 때문에 성립된다. 진동팩 대응버전이 스피드런에선 지금도 찬밥으로 취급되는 이유다. 스피드런에서는 사실상 메이저 부문에 해당하는 5개 부문중 3개 부문이 이 버그가 없었으면 아예 나올 수도 없었을 정도니 이 버그가 마리오 64 스피드런에 끼친 영향은 어느정도인지 알 수 있다.

이 버그를 발생시키는 방법은 의외로 쉽다.[1] 대신 TAS 수준으로 세밀한 컨트롤이 아닌 이상 오직 계단이나 천장이 낮은 곳, 특수한 급경사로, 상승하는 발판 위에서만 가능하다.
타이밍만 잘 맞추면 하는건 크게 어렵지 않다. 뒤로 멀리뛰기 후 계단에 떨어져서 맞닿는 타이밍에 점프키가 정확히 눌린다면 BLJ는 쉬울 것이다. 물론 일반적인 게임 속도에서는 점프키를 연타하다 보면 어느 순간 타이밍이 맞아서 되는 것이다. 툴을 사용해서 게임 속도를 느리게 한 다음 타이밍 맞춰서 해보면 오히려 더 쉽다.

추후의 진동팩 대응 버전에서는 수정되어서 초기 북미판, 일본판에서만 사용 가능한 버그다. 그런데 특이하게도 버추얼 콘솔 북미판(버추얼 콘솔 일본판은 진동팩 대응 버전을 가지고 와서 사용 불가능하다)에서는 사용할 수 있다. 진동팩 대응 버전을 기반으로 한 슈퍼 마리오 3D 컬렉션에서도 이 버그가 막혔다.

그러나 스위치 온라인 추가팩으로 나오는 버전에서는 일판은 진동팩 대응 버전이나 그 외 지역에서는 초기버전으로 실행이 가능하기 때문에 버그 사용이 다시 가능해졌다.

2.1.1. 옆방향 뒤로 멀리뛰기(Side BLJ)


멀리뛰기를 하면 생기는 옆방향 판정을 사용하는 뒤로 멀리뛰기다. 계단 지형에서만 사용할 수 있다. 계단의 방향에 완전히 수직으로 방향을 잡은 뒤, 방향을 아주 약간만 내려가는 쪽으로 조금 움직여서 뒤로 멀리뛰기를 하면 된다.(예를 들어 위 영상과 같은 곳에서는 스틱을 오른쪽+위로 잡아야 한다.) 이 상태에서 스틱을 올라가는 쪽의 45도 각도로 잡으면 연속으로 뒤로 멀리뛰기를 함으로서 속도를 늘릴 수 있다.[2] 하지만 RTA로 하기에는 상당히 어렵다. 원리가 기존 방식과 다르고 계단 블럭에 거의 정확히 맞춰야 하며, 각도를 맞춰도 연타를 기존 BLJ보다 훨씬 빨리 해야 하기 때문이다.[3] TAS에서는 프레임 단위 조작 및 정확한 방향을 사용하므로 쉽게 사용할 수 있다.[4]

결국 정방향 뒤로 멀리뛰기도 나오고 말았다

2.2. HyperSpeed Flying

먼저 날개모자를 먹은 뒤에, BLJ 등을 이용해 속도를 높인 다음, 잘 조작하여 3단 점프를 해서 날면 속도가 엄청나게 빨라진다. 너무 빨라서 느리게 해서 조작하는 방법 외에는 컨트롤이 어렵다.

영상을 직접 보자.

2.3. Hyper Speed Walking(HSW)

가파른 경사로에서 마리오가 뒤로 미끄러지는 이유는 게임에서 마리오에게 음의 방향의 속도를 가하기 때문이다. 특히 물에 잠겨있는 경사로에서는 항상 가속도가 마리오가 향하는 방향의 정반대로의 방향으로 가해진다. 따라서 마리오가 경사로의 기울기에 대해 완전히 수직으로 움직이게 되면, 경사로가 계속 있는 한 마리오는 그 경사로의 수평 방향으로 계속 가속도를 받을 수 있다. 이 버그에서 마리오는 뒤로 걷는 애니매이션을 가지기 때문에 hyper speed walking이라고 부른다.

경우에 따라서는 가속도를 무한히 받을 수 있는 경우가 있다. 만일 경사로 옆에 수평방향에 수직[5]인 벽이 있거나 마리오 바로 위에 천장이 있다면 마리오는 속도 때문에 다른 곳으로 튕겨지지 않는 한 계속 가속을 할 수 있다.

앞서 서술한 BLJ에 비해 가속도가 매우 작고 적용할 수 있는 범위가 매우 한정되어 있기 때문에 타임어택 TAS에서는 쓰지 않는 버그이나, 어떤 TASer가 올린 영상에서 속도를 무려 12시간이나 올리는 데 쓰여 화제가 된 적이 있다. 해당 항목 참조.

여담으로 리메이크인 슈퍼 마리오 64 DS에서도 고쳐지지 않은 버그다(...)

2.4. 속도 초기화 무시 버그

슬라이딩, 벽에 박기를 단 한 프레임만 하면 이로 인한 속도의 초기화(슬라이딩을 하면 속도가 최대 100으로 초기화된다.)가 이루어지지 않는다. 그리고 벽차기를 벽에 박자마자(벽에 박는 프레임에)하면 벽차기로 인해 생기는 속도 초기화가 발생하지 않기 때문에 이를 이용해서 약 400정도까지 스피드를 높일 수 있다. 첫프레임에 벽차기를 하는 것을 HSWK(Hyper Speed Wall Kicks)라고 부르며, firsty라고도 한다. 하지만 계속 하다 보면 어지러움을 느낄 수 있다.
첫프레임 벽차기의 현재까지 알려진 RTA에서의 최고기록은 52번이다. Frame Perfect[6]를 요구하기 때문에 매우 어렵다.

실제로 이 버그를 이용한 TAS도 있다. 진동팩 대응 버전[7] 1스타 플레이 영상

2.5. 속도 보존의 법칙

슈퍼 마리오 64의 속도는 일반 속도와 슬라이딩 속도로 구분되는데, 일반적인 상황에서는 일반 속도가 슬라이딩 속도를 덮어씌우고, 슬라이딩을 하는 상태에서는 슬라이딩 속도가 일반 속도를 덮어씌운다.

위 BLJ 등을 이용해 속도를 엄청나게 높인 후, 조작을 통해 물속에 들어가거나 나무, 봉에 매달리는 행동 등을 하면 즉시 일반 속도는 0이 되지만, 슬라이딩 속도는 기존의 속도가 유지된다. 따라서 거기에서 빠져나오는 순간 어떤 방식으로든 슬라이딩을 하면 0이 되기 전의 속도가 돌아온다. 보통 마리오가 땅에 착지하거나 하면 일반 속도가 슬라이딩 속도를 덮어씌우지만 위같은 몇몇 동작은 일반 속도가 슬라이딩 속도를 덮어씌우지 않음으로서 그 동작이 해제될 때까지 계속 유지한다. 여기서 공중으로 떨어지면 가속도가 다시 발동해 가속도의 방향[8]에 따라 붕 뜨거나 미끄러지게 된다. 펀치 같은 동작 또한 마리오가 땅에서 가속도를 유지시키며 이동할 수 있게 한다.

또한, 메탈 마리오 상태로 물속에 들어간 상태에서도 똑같이 작용한다.

여담으로 디버그 치트를 이용해 저장된 속도를 확인할 수도 있으니 참고바란다.

2.6. 기타

이외에도 꽤 많다.

3. 디자인 버그

3.1. 투명벽 버그


투명벽 버그 설명 영상.

투명벽 버그는 통칭으로, 여기서 말하는 투명벽은 사실 대부분 천장 판정이며 일부 스테이지 바깥 판정도 있다.

슈퍼 마리오 64의 물리엔진상에서 천장 또는 스테이지 바깥 판정은 위로 무한히 뻗어나가며, 바닥을 만나면 해당 판정이 없어진다. 때문에 천장 또는 스테이지 바깥 부분 위에 바닥이 있는 경우, 바닥 위에서는 해당 판정들이 없어야 정상이지만, 맵 디자인 오류나 부동소수점 오류로 인해 해당 판정들이 바닥의 미세한 틈을 뚫고 나오는 경우가 생긴다.

이 버그로 악명높은 스테이지가 높고 높은 마운틴의 통나무 구간과 똑딱 시계의 시계추 위 구간으로, 유독 이 버그가 발생하는 지점이 많아서 수시로 터져나오는 억까로 유저들의 혈압을 올리고 있다.

3.2. 벽 속의 스타 획득 버그

꽈당킹의 요새에 있는 미션 중에 벽을 부숴서 스타를 획득하는 미션이 있다. 원래는 대포를 이용해 벽을 부순 다음 스타를 먹어야 하지만, 스타의 히트박스가 벽보다 더 크기 때문에 위치를 잘 맞추고 벽에 닿으면 대포 없이도 먹을 수 있다. #[10]

3.3. 꽈당꽈당 통과 버그

꽈당킹의 요새에 있는 꽈당이들을 쉽게 죽일 수 있는 버그다. 초보자들도 쉽게 해낼 수 있을 정도로 방법은 간단하다. 꽈당이가 넘어지기 직전에 점프+엉덩이 찍기 콤보를 하면 된다. 그러면 꽈당이는 마리오를 뚫고 넘어진다.
이 버그를 사용하는 좋은 예시: #

3.4. 김수한무 스킵 버그

스토리를 처음 시작하고 성 입구 바로 앞의 다리로 가면 카메라맨인 김수한무가 성 입구 문에서 나타나서 카메라 조작 관련 설명을 해주는데, 바로 옆 다리 난간으로 멀리뛰기를 해서 넘어가면 김수한무를 만나지 않고 바로 스킵할 수 있다.[11] RTA에서도 쓰이는 버그이다. TAS에서는 슬라이딩을 이용해 속도를 높여서 2단 점프로 그냥 넘어가는데, 다리에 닿지 않고 문 앞까지 바로 넘어가면 김수한무가 안 나온다. 그러나 이 루트는 1 Key 카테고리의 개발과 함께 바로 성의 지하로 입장하게 되어 TAS에선 더 이상 쓰이지 않는다. 버그 원리 설명


멀리뛰기를 이용해 스킵하는 영상.

3.5. 로비 버그


피치 성 메인 로비에서 할 수 있는 버그 중 하나이다. 성에 처음 들어와서 가운데 계단 양 쪽에 있는 나무 문으로 들어간 뒤에 오른쪽+앞쪽을 눌렀다가, 착지하기 직전 오른쪽을 떼고 대신 왼쪽을 누르면 된다.

파일:lobby_w.png
또는 사진과 같은 비슷한 위치에 서서 2단점프를 하면 아래 사진과 같이 올라올 수 있다. 또는 어렵지만 옆돌기 점프를 통해서도 올라올 수 있다. TAS에서는 문으로 들어오고 바로 떨어져서 땅에 착지 후 바로 점프하면 2단 점프가 되는 것을 이용해 올라간다. RTA에서도 가끔 쓰기는 한다.
파일:lobby.png
반대쪽도 같은 방법으로 하면 되며, 위 사진 속 위치에서 멀리뛰기를 해서 BLJ도 할 수 있다. 실제로 구 TAS 타임어택에서 쓰였던 버그. 이후의 TAS 루트는 조금 바뀌어서, 0/1스타 2 Key 카테고리에서는 폭탄병의 전쟁터로 들어가는 문 바로 앞의 계단에서 Side BLJ를 해서 바로 암흑 세계의 쿠파로 이동한다. 그러나 RTA에선 시점 때문에 계단에서 BLJ가 매우 어려워서 위의 방식을 사용한다.

3.6. 이글루 뚫기 버그

스노우맨 랜드의 이글루는 이글루 안으로 기어들어가야 들어갈 수 있다. 그러나 이글루를 막는 배리어 바깥으로 워프 존의 판정이 살짝 튀어나와 있어, 이 판정을 이용하면 이글루를 뚫고 이글루 안으로 들어갈 수 있다.

3.7. 기타

4. 게임 엔진 버그

4.1. 클로닝(Cloning)

들어올림과 파괴가 모두 가능한 오브젝트를 파괴되기 직전에 잡아올리는 버그다. 일반적으로 오브젝트를 잡는다고 판정하는 시간은 0프레임으로 즉발하지만 유일하게 펀치하여 잡는데에는 2프레임이 소요된다. 즉 그 2프레임안에 파괴된 오브젝트를 들어올림으로 발생하는 버그다.

4.1.1. 폭탄병 버그

대부분의 TASer나, 유저들은 다 아는 버그다.

먼저 폭탄병을 집은 후, 폭탄병이 어떻게든 터지기 직전에 다시 집으면 타이밍에 따라 두가지의 경우가 생긴다.
파일:sm64_bug_bomb_1.png
파일:sm64_bug_bomb_2.png
위와 같이 다양한 오브젝트들을 들 수 있다.

4.1.2. 코인 박스 버그

작은 박스를 이용해 위의 폭탄병 버그처럼 할 수 있는 버그.

하는 방법은 간단하게 박스가 없어지기 직전에 다시 집으면 된다. 폭탄병 버그와 같지만 타이밍이 더욱 중요시되며 방법은 세부적으로 두가지로 나뉜다.

마찬가지로 각종 오브젝트로 만들 수 있다.

4.1.3. 원리

Vacant Slot #n, 일반적으로 물리적 형체가 있는 데이터를 오브젝트(개체)라고 부르며 이러한 오브젝트들을 인게임에 반영하게 할 수 있는 시스템을 오브젝트박스(OBJ)라고 부른다. 오브젝트는 일정 범위 내에 마리오가 존재할 때 스폰 또는 리스폰이 되는데, 이때 스폰된 오브젝트를 오브젝트박스가 관리하게 된다. 오브젝트박스의 관리할 수 있는 최대 오브젝트 수는 240이며 이를 넘겨 오브젝트가 더 로드되려 하면 게임이 튕기게 된다. 따라서 마리오으로부터 일정한 거리에 있는 오브젝트를 온오프함으로 게임의 부담을 줄여주는 역할을 하며 상기했듯 리스폰의 역할도 한다. 또, 물리값이 없는 시각적인 오브젝트[17] 또한 관리한다.

위 오브젝트들이 오브젝트박스에 추가되는 것을 로드, 오브젝트가 없어지는 것을 언로드라고 한다. 여기서부터 클로닝의 핵심이 시작된다. 5개의 오브젝트를 로드했다고 하자. 이때 오브젝트박스가 사용하는 칸은 로드한 순서대로 5칸이 된다. 이때 오브젝트를 3개 제거(언로드)했을 경우 사용하는 칸은 2칸이 된다.[18] 그렇다면 나머지 3칸은 어디로 갔을까? 바로 이것이 핵심. 언로드 된 후의 빈 박스는 그 자리에 계속 있는 게 아니라, 사용되고 있는 박스의 마지막자리의 바로 뒷자리에 한꺼번에 역순으로 묶인 채 옮겨진다. 박스를 숫자로 표현해보자면, 순서대로 로드된 박스 12345에서 235를 언로드 했을 때 박스 순서는 14|532가 된다. 물론 박스 자체에 주어진 이름은 없지만 그렇다고 가정해본 것이다. 위와는 별개로, 빈 오브젝트박스의 순서를 위해 붙여진 임시적인 박스의 이름을 VS#n라고 한다. VS#의 n은 활성화된 마지막 오브젝트박스의 다음 박스를 기준으로 오름차순으로 결정되고 이는 가변적이기 때문에 오브젝트의 활성화에 따라 얼마든지 변할 수 있다. 그 예로 활성화된 박스를 ■, 비활성화된 박스를 □로 표현한다고 하면, ■■■□□에서 마지막 박스의 n값은 2이고, ■□□□□에서 마지막 박스의 n값은 4다. TAS를 다루는 분이라면 이 원리를 먼저 인지하도록 하자.

도입에서 기술한 내용으로 진행해 보자. 그 방법으로 마리오가 무언가를 들어올린 상태는 그 오브젝트를 담당한 오브젝트박스의 VS#에 저장이 된다. 여기서 클로닝이 시작된다. 마리오가 들어올린 오브젝트의 스폰범위의 바깥으로 나가면 들고 있는 오브젝트가 완전히 언로드되어 해당 오브젝트의 VS#박스는 빈 상자가 되고[19], 마리오가 들고 있는 오브젝트박스는 언로드 되었기 때문에 박스의 순서가 뒤로 밀려난다. 만일 일정거리 갔다가 다시 되돌아간다면 없어야 할 오브젝트가 멀쩡히 있다. 마리오가 들고 있는 오브젝트는 파괴되는 과정을 둔 원래의 오브젝트와 같으면서도 독립적인 존재이기 때문에 이런 일이 발생하는 것이다[20]. 이렇게 하면 클로닝의 첫 단계를 성공한 것이다.

이제 빈 오브젝트박스를 들고 있는 마리오가 이동하여 순서에 맞춰 굼바가 로드되었다면 들고 있는 오브젝트박스에 굼바가 추가됨으로써 마리오는 굼바를 가지고 있는 것으로 판정하게 된다. 들고 있는 것으로 판정된 원래 굼바는 제 자리에서 정상적으로 잘 돌아다니고 있다.[21] 이때 마리오가 오브젝트를 던지(오브젝트박스에서 해제하)는 순간 돌아다니던 굼바가 갑자기 던진 위치(HOLP)로 순간이동하더니 형체와 조건부 물리값만 남긴 채 그 위치에 1회용으로 존재해버리게 된다.[22] 실은 오브젝트에도 마리오가 던진 후의 상태고유값이 있는데 굼바나 코인 등은 들어올릴 수 없으므로 이러한 현상이 발생하는 것이다. 이렇게 클로닝의 첫 루프 끝. 오브젝트박스의 칸이 한계치까지 가기 전까지 무한정 복사할 수 있다.

하지만 먼지 등의 요소 때문에 원하는 복제를 위해서는 계산을 잘 해야 하는 것을 요한다. 대신 특정한 행동이나 이펙트마다 오브젝트박스 고유요구량이 있으니 크게 문제될 변수는 없다. 직접 연구해보자.

여담으로 클로닝은 엄밀히 말하면 오브젝트를 먹거나 사용하지 않았다고 속이면서 바꿔치기하는 버그다. 예를들어 코인. 무더기로 있는 코인의 경우에는 먹었다고 판정하는 신호가 제 위치 밖에서는 인식되지 않아서 바꿔치기 후 리스폰시키면 원래대로 되돌아가는 것을 볼 수 있다. 다만 레드코인의 경우에는 그 자체로 고유하기 때문에 바꿔치기로 먹어도 2코인만 얻을 수 있고 레드코인 카운트가 추가되지는 않는다. 또한 오브젝트박스에 기본적으로 항시 로드되어있는 오브젝트들[23]을 위 방법으로 바꿔치기 하면 인터페이스 자체가 이동하고, 언로드 개념이 없는 오브젝트이기 때문에 범위 밖으로 들고나가도 제기능을 잃지 않으며, 던지면 클로닝으로 다시 옮기거나 맵을 나갈 때까지 그 자리에 영원히 고정된다.

이 클로닝 버그로 무한 코인 파밍을 하거나 코인 없이 클리어를 하거나 점프 없이 슈퍼 스타를 먹거나 굼바를 복제하여 간이 점프대를 만들거나 하는 등 꽤나 많은 응용법이 존재한다. 물론 작정하고 그러한 도전을 하려는 것이 아니라면 그런 것도 있구나 하는 재미용으로만 알아두는 것이 좋다.

그 외 자세한 사항은 여기(영어)에서 확인하자.

4.2. HOLP 고정 버그

위의 복제와 많이 엮이는 버그다. 오브젝트를 잡아도 특정한 조건을 만족하면 HOLP가 업데이트가 되지 않는 버그다. 이것을 이용해서 가짜 물체들을 원하는 곳으로 이동시킬 수 있다. 이 '특정한 조건'은 아래와 같다.

1. 모자 복제 버그를 사용하고 있다.
2. 카메라 화면에서 마리오가 보이지 않는다.
3. 오브젝트를 잡자마자 오브젝트를 놓았다.
4. Pause Buffering HitStun을 사용하고 있다.
5. 카메라 화면에서 아주 멀리 떨어져 있다.

3번의 경우를 예로 들면 마리오가 폭탄병을 잡으면서 벽에 부딪힐 경우 폭탄병은 원래 있었던 HOLP의 위치에서 나타난다.

4.3. 모자 복제 버그

보통 한 스테이지에서 모자는 한 번에 하나씩만 먹도록 설계되어 있지만, 모자 2개를 이동하면서 동시에 먹거나 모자가 생기는 타이밍, 그리고 !박스가 생기는 타이밍을 잘 이용하면 모자 2개를 먹을 수 있게 된다. 이 경우 마리오는 모자를 손에 들고 있는 상태가 된다. 레벨을 나가거나, 텔레포트를 타거나, 아무 모자를 먹는 등의 액션으로 모자를 다시 쓰게 할 수 있다.

이 상태가 되면 HOLP는 업데이트되지 않으며, 등시에 해당 모자의 능력(투명모자의 경우 무적 및 특수한 벽 통과 등)을 쓸 수 있고, 데미지는 모자를 쓰지 않았을 때만큼 받고, 모자를 절대 잃어버리지 않게 된다.

4.4. Pause Buffering HitStun

일시정지를 하면 일시정지된 시간 동안 Start 버튼 외에는 아무런 조작이 먹히지 않는다. 이를 이용해 특정 버튼을 일반적으로 연타하는 것의 최대 속도(15회/초)의 최대 2배까지 연타 속도를 늘릴 수 있다. 그리고 데미지를 입으면 무적시간[24]이 주어지면서 마리오가 깜빡거리는데, 이때 일시정지를 한 프레임 단위로 계속 사용하면 마리오를 투명한 상태로 유지할 수 있다. 이때는 데미지를 주는 적이 마리오를 지나갈 경우 무적시간이 줄어들지도 않는다.

4.5. 토끼 버그

말 그대로 토끼를 이용한 버그. 지하에 나타나는 토끼를 잡고 문에 딱 달라붙어서 놓으면 마리오가 문을 통과함과 동시에 토끼도 문에 낀다.[25] 그 상태로 다시 토끼를 잡을 수 있으며, 그 버그를 이용해 30 스타를 모아야 갈 수 있는 스타문도 뚫을 수 있다.

한 때 슈퍼마리오 64 TAS에서 필수적으로 써야 했던 버그였지만, 더 빠른 파훼법의 발견으로 인해 최단기록 타임어택에서는 더 이상 사용되지 않으며, 지금은 16스타 카테고리, 그리고 120스타 TAS에서 문 여는데 소요되는 시간을 아끼는 데 주로 사용된다. 자세한 설명은 타임어택 문단 참고.

이 버그는 슈퍼 마리오 64 DS에서도 비슷한 형태로 나타나며, 나오는 토끼가 더 많아서 많은 곳에서 쓸 수 있다. 64 DS 타임어택에서는 평행세계를 가기 위해 필수적으로 써야 했었으나 DS 버전 역시도 더 빠른 파훼법이 나와서 이 버그를 사용하지 않는다.

4.6. 투척병 버그

투척병(Chuckya)은 원래 마리오가 멀리 있거나, 바로 앞이 낭떠러지일 때는 따라오지 않는다. 또한 집어서 던지거나 해서 땅에 닿게 하면 바로 죽어버린다. 이 버그는 물바다 시티 및 거대 꼬마 아일랜드, 높고 높은 마운틴에 있는 투척병을 바닥까지 내려오게 하는 버그이다. 먼저 투척병을 든 후, 끝 모서리까지 간 다음 타이밍에 맞추어 점프하고 투척병에게 떨어지면 투척병이 떨어지기 직전에 잡아서 던진다. 그럼 투척병은 죽지 않고 계속 살아있게 된다. 물바다 시티의 경우 버그가 더 많은데, 바로 위에 있는 물 높이 조절 다이아몬드를 이용해 물 높이를 높인 다음, 투척병을 잡은 채 물에 들어가면 아래의 사진과 같이 된다.
파일:sm64_chunkya_bug.png
이렇게 된 상태에서는 마치 다른 오브젝트를 든 것 처럼 조금 빠른 속도로 움직이고, 점프할 수 있다.[26]영미권에선 이 상태를 Portable Chunkya 또는 Light Chunkya(가벼운 투척병)이라고 한다. 이 버그를 이용해 위의 폭탄병 버그 사용 시에 나타나는 현상도 나타나게할 수 있다. 다만 이 버그는 슈퍼플레이[27] 용으로, 타임어택에서는 쓰이지 않는다.

4.7. 1인칭 버그

정확히는 마리오가 투명해지는 버그이나, 이 버그를 사용했을 때 마치 1인칭 플레이를 하는 것 같아서 많은 사람들이 1인칭 버그(First-Person Glitch)라고 부른다. 이 버그를 사용하는 방법은 2가지가 있는데, 하나는 위의 투척병 버그를 이용하는 방법, 하나는 Astral Projection을 이용하는 방법이다. 2종류 다 투척병이 필요하다.

투척병 버그를 이용하는 방법은 투척병을 위의 가벼운 상태로 만들고 이를 이용해 물에 잠기게 한 다음, 물 속에서 투척병에게 걸리는 걸 2번 반복하면 마리오가 투명해지고, 실제 마리오의 형체는 투척병에게 잡힌 채로 고정되어 있게 된다.

Astral Projection을 이용하는 방법은 100코인 스타나 쿠파맵의 레드코인 스타를 복제해서 그걸 먹는 동시에 투척병에게 걸리고 그 상태에서 B로 투척병을 잡으면 투척병과 함께 마리오의 모델이 날아가고 실제 마리오는 투명한 상태로 있게 된다.예시

4.8. 평행우주

5차원을 증명하는 방법
광속에 가까워지면 시간이 느려지지 않고 평행우주로 간다

PU (Parallel Universe).앞서 설명한 BLJ나, 마리오가 특정 지점에 낀 채로 계속 걷는 HSW(Hyper Speed Walking) 등을 이용해 속도를 엄청나게 쌓으면 마리오는 평행우주로 가게 된다.

실제 닌텐도 64에서 다음 행동을 하면 게임은 즉시 튕기지만, 특정 에뮬레이터버추얼 콘솔은 튕기지 않는다.
마리오의 속도와 실질 좌표는 부호 있는 32비트 실수값을 사용하지만 물리좌표에서는 부호 있는 16비트 정수값을 사용해서 벌어지는 버그다. 풀어보면 좌표의 한계치는 -32768~32767. 그런데 마리오가 이 좌표를 뚫고나가버리면 좌표는 자동적으로 65536을 더하거나 빼게 된다. 즉, 마리오는 아무것도 없는 세계에서 원래맵의 지형을 그대로 받는 평행세계에 도착하는 것이다.

다시 말해, 마리오가 평행세계에 도달하기 위해서는 최소한 65536의 스피드를 내야 한다. 그런데 이 마저도, 마리오의 경로는 이동 전후의 결과에다가 4등분을 하여 판정하는 중간단계가 있어서[30] (일반적으로)마리오가 내야 하는 최소 속력은 262144로 엄청나게 불어나게 된다. 끝이 아니라, 평행세계에 도달한 이후로는 마리오가 가속도를 낼 수단이 없어지고, 지형의 굴곡까지 영향을 받아서 실제 이동경로의 거리가 감소하는데다 위의 튕기는 조건까지 영향을 받기 때문에 안전하게 평행세계를 배회하기 위해서는 최종적으로 약 40~50만(...)의 속력을 내야 한다. 또 평행세계에는 오브젝트가 없기 때문에 원래세계에서 상승하는 발판 등을 타거나 스타 등을 먹기 위해서는 되돌아와야 하기까지 한다. 이 때문에 평행세계의 몇행/몇렬에 있는지 파악하게 해주는 가상의 개념인 PU map이 도입된다. 원점은 오브젝트가 있는 원래세계가 기준.

보다시피 조건이 엄청나게 많아서 이러한 개념을 사용하려면 선행계산이 꽤나 많이 필요할 뿐더러 제대로 사용할 수 있는 방안도 적다. 하지만 2016년 10월 경 나온 4분컷 TAS에서는 이러한 원리를 이용해 용암 세계의 2,3층 돌파는 물론 암흑 세계의 쿠파맵을 아예 입장조차 하지 않고 모조리 스킵(1key)해버리는 위엄을 보여주었다. 잠재용도가 굉장히 높은 버그로 이후 더 많은 기록이 개선되었다. 4분짜리 플레이에 15만 번의 재시도가 있었다는 것에 경의를 표한다

얼마 뒤, 수직 평행우주라는 게 발견되었다. 수직 평행우주는 수평 평행우주와 전혀 다르게 작동하며, 원래 세계 밑에 있는 수직 평행우주 안에서는 바닥에 닿았을 때 PU map상의 원래 세계의 Y좌표로 순간이동하며, 반대로 원래 세계 위에 있는 수직 평행우주 안에서는 천장에 닿았을 때 PU map상의 원래 세계의 Y좌표로 순간이동한다. 덕분에 평행우주를 통해 높이 차이가 심하게 나는 지형을 오고 가는 게 가능해졌다.

4.9. 버그성 벽차기

Glitchy Wall Kick(GWK)

마리오의 이동은 1/4프레임당 한 번씩 일어나는데, 이 버그는 한 프레임에 마리오가 서로 다른 2개의 벽[31]에 닿았을 때 만들어지는 버그다. 이 상태에서 A를 누르면 게임은 2개의 벽 중에서 1개에 벽차기를 하게 해야 하는데, 게임은 마리오가 어느어느 벽에 부딪혔는지 하나하나 다 기억하지 않고, 대신 마지막으로 부딪힌 벽과 입사각만을 저장한다. 이를 이용해 정확한 1/4프레임에 2개의 벽에 순서대로 박은 다음 벽차기를 하면 벽에 입사각이 2번째 벽에 대해 아무리 높더라도 1번째 벽에 먼저 부딪혔기 때문에 벽차기가 먹히고, 벽차기 자체는 2번째 벽에서 나오게 된다.

이때 두 벽이 평행할 경우는 버그성 벽차기를 할 때 진행 방향이 바뀌지 않고 그냥 벽을 뚫고 벽차기를 하게 된다.

일부 벽의 경우 마리오가 그 쪽으로 무한정 달릴 수 있는데, 그곳에서도 버그성 벽차기가 된다. 이때 벽차기의 각도는 벽을 향하게 된다.

위의 경우 중, 희귀하게 두 벽의 각도가 90도 초과, 120도 미만일 경우 한쪽 벽이 마리오를 바깥쪽으로 밀어내기 때문에 버그성 벽차기를 계속 하면서 위로 올라갈 수 있다.

또다른 발동 방식은 마리오가 벽에 박은 다음 벽차기를 할 수 있는 5프레임 이내에 또다른 벽에 박으면 된다. 이렇게 하면 위의 경우와는 반대로 1번째 벽에 벽차기를 하게 된다. 이 경우는 무조건 2개의 벽에 박는 동안 한 프레임이 지연돼야 하기 때문에, 첫프레임 벽차기와 병행이 불가능하다.


버그성 벽차기의 예시.

4.10. 게임 충돌 버그

초창기 게임인 만큼 게임 충돌 버그도 정말 많다. 평행우주 충돌 버그는 해당 항목 참조.

참고로 마리오를 포함한 오브젝트의 속도, 위치는 모두 float(4비트 실수 자료형)을 사용한다.

4.11. 기타

5. 미해결 버그

5.1. 똑딱 시계 순간이동 버그

DOTA_Teabag의 버그 발생 시점 플레이 화면
이른바 TTC(Tick Tock Clock) Upwarp. 2013년 9월 21일, 스피드러너였던 DOTA_Teabag와 MidBoss가 70스타 타임 어택 대결을 하던 도중, 똑딱 시계에서 우연찮게 마리오가 순간이동을 하는 버그를 목격했다. DOTA_Teabag이 레드코인을 수집하기 위해 점프를 하고 착지한 순간 몇 단계나 되는 플랫폼을 스킵하고 위로 순간이동하는 버그였는데, 당시에는 큰 화제가 되지 않았지만 2015년에 스피드러너 kym4n가 해당 클립을 발견하면서 이 버그를 재현하려는 시도가 시작되었다.

이후 2015년 8월 5일, pannenkoek2012가 이 미해결 버그를 재현하는 유저에게 현상금 $1000을 주겠다는 발표를 하면서 버그 원인 탐색은 더욱 가속화 되었다. 원인을 찾아내면 기존 스피드런 기록들이 모조리 갈아엎어질 수 있는 버그였기 때문에 전문 코더들까지 합세해서 원인 분석을 했으며, 이 과정에서 비트플립 현상이 지목되기도 했으나, 불행하게도 현재까지 해당 버그를 똑같이 재현하는 데 성공한 유저는 없다.

이후 2024년 현재에 이르러 DOTA_Teabag의 플레이에서 버그가 발생한 원인이 두 가지의 가설이 나뉘어 가장 유력한 원인으로 추측되고 있다. 그러나 두 가설 모두 실제로 재현하는 것은 거의 불가능에 가까운 것으로 보인다.
  1. 우주 방사선이 일으킨 단일 이벤트 뒤집기(Single-event upset)
    2021년부터 확산된 가설. DOTA_Teabag이 플레이하고 있던 기기에 우주 방사선이 메모리를 통과하여 비트플립이 발생하면서 플레이어의 Z축 데이터를 바꿔[37] 마리오가 순간이동되었다는 가설. 2015년 제기된 비트플립 현상이 발생한 원인을 우주 방사선으로 지목하여 생긴 가설이며 가장 널리 알려진 가설이다.[38]
  2. 카트리지의 결함이나 잘못된 연결 혹은 하드웨어에 가한 물리적인 충격
    닌텐도 관련 유튜버 LunaticJ가 2024년 1의 가설을 반박하면서 주장한 원인. # 그 근거로 마리오가 갑작스레 순간이동했던 두 가지의 사례를 들었다. 첫 번째는 스피드러너 dumpdome64가 발견한 오브젝트 이동 버그, 두 번째는 스피드러너 Ian_1243가 타임 어택 도중 불바다의 쿠파에서 마리오가 밑으로 꺼지는 현상이 발생한 사례.[39] 다른 근거로 카트리지의 결함으로 인해 하늘이 기괴한 텍스처로 바뀌거나, 닌텐도 64에 물리적인 충격을 주어 버그가 발생한 사례를 근거로 들며 가설 1을 반박했다.

5.1.1. 똑딱 시계 오브젝트 이동 버그

dumpdome64의 플레이 도중 버그가 발생한 순간 풀버전
2020년, 스피드러너 dumpdome64가 100스타 타임 어택 연습 도중 똑딱 시계의 움직이는 장애물이 갑작스레 이상한 위치로 이동한 버그. 이 버그 말고도 알 수 없는 그림자가 등장하는 등 그의 게임에는 여러 버그가 있었고[40], 이 버그 역시 원인이 밝혀지지 않았다. 위의 장면을 분석한 문서

5.2. 음악 삭제 버그

말 그대로 음악이 모두 없어지는 버그. 원인은 레벨 로딩 등의 특정한 행동을 할 때 오디오 스레드가 충돌하는 것으로 보인다. 현재까지 7번 걸렸지만 의도적으로 걸리게 한 적은 초기 일본판에서만 발생하는 오브젝트가 카메라에서 매우 멀리 떨어진 경우를 제외하면 없다.

오디오 재생 타입을 '모노'로 바꾸면 걸릴 확률이 크게 줄어든다고 한다. N64 실기에서는 렉 또한 줄여주니 스피드러너라면 이 방법을 써보자.[41]

5.3. 기타

이외에도 정말 뜬금없이 튕기는 경우(#1#2)나, 에뮬레이터에서 워터랜드에 있는 잠수함을 로드할 때 튕기는 경우(#1#2), 잠깐 튕겼다가 도로 정상이 되는 경우(#1#2)도 존재한다.

6. 여담

슈퍼 마리오 64 TAS에서는 대부분 Mupen64 라는 에뮬레이터를 사용한다. 이 툴은 기본적으로 게임 속도 조절 기능이 있으며, 세이브/로드와 무비 녹화도 할 수 있는데, 이 무비 녹화는 세이브/로드를 막 사용해도 자동으로 이전 프레임을 저장해서 처음부터 끝까지 매끄럽게 녹화할 수 있다. 이 Mupen64 녹화 파일의 확장자는 .m64이다. TASVideos 같은 사이트에서도 타임어택 마다 이 파일을 같이 배포하고 있다. 이 툴로 녹화한 파일을 불러오면 마치 직접 플레이하고 있는 것 처럼 녹화할 때 눌렀던 키들이 그대로 적용되어서 보여진다. 무비를 재생하는 중간에도 끊어서 그 시점부터 직접 플레이할 수 있다. 또, 이 무비를 재생하고 AVI 캡처도 해 놓으면 .avi 형식의 영상도 같이 만들 수 있다. TAS를 할 때 대부분 TAS Input(TASDI.dll)[42]이라는 입력 플러그인을 사용한다. 같은 N64 에뮬레이터인 Project64에서도 쓸 수 있다.

[1] 옛날 만화잡지인 보물섬에서 슈퍼마리오 64 정식발매 시 공략을 게재했을 때 사용 가능한 기술로 실려있었을 정도다.[2] 마리오가 계단에서 다음 계단으로 내려갔을 때, 멀리뛰기를 해서 다시 계단으로 올라가는 원리다.[3] 익숙해진 사람들은 어렵지 않게 사용한다. 이를 이용해 위 영상과 같이 30스타 문을 뚫을 수 있다.[4] 실제로 TAS에서 기본 루트 중 하나가 암흑 세계의 쿠파 맵에서 열쇠를 얻고 난 후, 이 버그를 이용해 바로 지하층 문으로 가는 루트다.[5] 수직이지 않으면 벽이 마리오를 벽에 수직인 방향으로 밀기 때문에 마리오의 위치가 어긋나게 된다.[6] 이 게임이 30프레임으로 돌아가므로 여유 시간은 0.033초다. 다른 게임에서 Frame Perfect니 뭐니 하는 게 보통 0.016초인 것에 비하면 널널하지만 그래도 만만하게 볼 타이밍은 아니다.[7] 뒤로 멀리뛰기가 불가능하다[8] 마리오가 음의 방향의 속도를 가졌어도 보존된 속도를 사용하는 순간 마리오의 위치 및 방향에 따라 이게 양의 속도로 뒤바뀔 수도 있다.[9] 에뮬레이터 등을 컨트롤러와 연결해서 3D 스틱을 십자키로 매핑시키면 컨트롤러도 충분히 가능하다.[10] 잘 보면 벽의 미세한 경계 사이로 노란색이 보인다.[11] 사실 굳이 멀리 뛰기를 안 해도 다리 난간 끝으로만 가면 된다. 다리 난간 끝으로 그냥 걸어가도 김수한무는 오지 않는다. 또는 다리 난간 끝에서 숙인 채 움직여도 안 온다. 하지만 그 끝에서 조금만 벗어나면 온다.[12] 게임 오브젝트 내 삼각형의 법선 단위벡터의 연직 윗방향 성분에 따라 천장, 바닥, 벽이 결정되는데, 성분이 -0.01보다 크거나 같고 0.01 보다 작거나 같아야 벽이 된다. 즉, 오브젝트 내 삼각형의 경사 각도가 89.99 이상 90.01 이하이어야 벽이 된다는 것이다. 쉽게 말해 평면 대비 완벽히 수직이어야만 벽이 된다는 것이다.[13] 마리오가 커진 폭탄병의 판정을 그대로 받기 때문에.[14] 대표적으로 폭탄병의 전쟁터의 '멍멍이 집으로' 미션에서 말뚝을 부수지 않고 이 버그를 이용해 철창을 통과하여 스타를 얻는 루트. RTA에서도 기본 루트 중의 하나이다.[15] 예를 들어 굼바 3마리가 나타나는 곳에 접근해 굼바가 로드된다면 손에 굼바를 들게 된다. 코인, 스타, 플랫폼 등 온갖 오브젝트에 사용 가능하다. 다만 이런 식으로 들게 된 오브젝트를 놓으면 제기능을 못하는 것도 많다. 예를 들어 이 방법으로 생긴 플랫폼 같은 경우에는 물리적 성질을 가지지 않아 쓸모가 없다. 자세한 것은 후술.[16] 웅크리면 들어올린 오브젝트를 놓을 수 있다. 물론 아기팽귄이나 폭탄병도 이렇게 할 수 있다. 곧 터지겠지만.[17] 먼지나 스포너나 폭발 등. 이외에도 굉장히 많다.[18] 당연한 소리지만 짚고 넘어가야 할 요소다. 3칸을 제거하고 난 후의 빈 박스(칸)들은 어떻게 되는가? 만약 데이터가 고정되어 있다면 오브젝트박스가 사용하는 칸은 여전히 5칸이 되어야 한다. 다시 말하지만 언로드 후 사용하는 칸은 2칸으로 변했다.[19] 이 상태에서 마리오가 들고 있는 오브젝트를 가짜(Fake)오브젝트라고 한다. 즉, 이때는 갑자기 들고 있는 오브젝트가 달라지거나 없어지는 것을 볼 수 있다. 가짜오브젝트는 던져도 던지는 모션만 취하듯 아무런 효과가 없다.[20] 비고로 해당 오브젝트의 스포너의 범위 안 또는 바깥에 따라서, 그리고 몹의 종류에 따라서 마리오가 들어올리는 VS#박스의 순서 또한 달라진다. 스포너의 활성화 유무와 몹의 처치 시 발생하는 더미오브젝트의 수가 제각각이기 때문. 자세한 내용은 후술한 링크에.[21] 만약 활성화된 오브젝트를 들고 있다면 오브젝트 활성화 유무에 상관 없이 VS#가 뒤로 밀려나기 때문에 영향을 받지 않으므로 안심해도 좋다.[22] 참고로 마리오 자체도 이런 방식으로 만들어버릴 수 있다. 투척병 버그 문단 참조.[23] 특히 npc(빨간 폭탄병), 스포너 스팟, 텔레포트 스팟, 나무, 멍멍이 등.[24] 무적시간은 1초로 짧지만, 그 1초 동안 물건을 잡고 던져도 0.13초나 남는다.[25] 가끔 토끼는 안끼이기도 하는데 이는 박치기를 이용해 문에 끼이도록 하면 된다. 그리고 마리오가 낄 확률이 부족하다.[26] 또는 절벽 끝에서 재빠른 펀치+다이브로 투척병을 잡으면 이렇게 된다.[27] 공교롭게도 둘 다 약자가 TAS다.[28] 출발 상태와 도착 상태 중 어느 하나라도 공중에 떠 있으면 성립되지 않는다.[29] 단, 완전한 한 프레임 동안 움직인 후 다음 프레임의 이동이 취소되는 건 괜찮다.[30] 만일 3번째 이동경로가 천장 판정이라면 2번째 경로에서 멈추게 된다.[31] 참고로 1번째 벽은 그냥 벽차기가 먹히기 위한 매개물일 뿐이고 벽차기 자체는 2번째 벽에서 나오므로 첫번째 벽은 벽 대신 천장 또는 경계 밖이어도 된다.[32] 점프 한 번으로 넘어갈 만한 거리만큼 떨어져 있어도 로드되어 있지 않은 것으로 인식한다![33] float에서 int로 변환할 때 float가 int가 가질 수 있는 값의 범위를 넘어선 값을 가지게 되는 경우[34] 부끄부끄의 호러하우스에서 쓰이는 바닥으로, 오브젝트와 관여할 수 없으며, 마리오의 위치에 따라 맵의 지하와 지상 중 어느 부분을 로드할지를 결정한다.[35] 맵 한구석에서 반대쪽을 바라봐서 다량의 삼각형을 로드하려고 해도 게임은 마리오로부터 먼 삼각형부터 로딩을 하지 않는다.[36] 참고로 시작 지점의 높이는 -2000을 한참 넘는다.[37] 2015년에 UncommentatedPannen이 분석한 영상을 근거로 Z축 데이터가 C5837800에서 C4837800으로 바뀌었다고 보는 이들이 많다.[38] 이 버그가 우주 방사선 때문이라고 결론 지어졌다고 생각하는 사람들이 많은데, 이는 이 가설이 유튜브나 여러 커뮤니티에서 퍼지고 퍼지다가 결국 해결된 것이라고 과장되어서 잘못 알려진 것이다. 이 버그의 정확한 원인은 아직까지 판명 나지 않았다.[39] pannenkoek2012의 증언으로 꺼질 때 좌표값이 비트플립으로 발생하는 정숫값이 아니었다는 것을 근거로 들었다.[40] 위 문단의 가설 2에선 여러 버그가 있었다는 점을 비트플립이 여러 번 발생한 것이 아니라 단순히 게임이나 기기의 결함이라고 추측했다. 그도 그럴 것이 우주 방사선이 기기를 여러 번 통과해 비트플립을 발생시켰다기보단 단순 게임 결함으로 데이터값이 여러 번 바뀌었다는 게 더 가능성이 높다.[41] 특히 초기 일본판으로 N64 실기 플레이를 할 경우 이게 걸리면 다음 로딩에서 게임이 멈추기 때문에 반드시 피해야 한다.[42] 파일:tasinput.png