문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 포켓몬스터/버그 (문단 편집) ==== 유석열매 버그(글리처 팝핑) ==== 영어로 Pomeg Glitch라고 하며, 4세대까지 가능한 버그다. 유석열매는 사용 시 포켓몬의 체력 노력치와 함께 체력이 깎여나간다. 최대 체력보다 현재 체력이 넘치는 상황을 방지하기 위함인데, 이를 이용해 유석열매로 깎일 체력 이하의 체력에서 유석열매를 사용하면 체력이 [[오버플로우]]되면서 현재 체력이 -65535로 까이는 버그가 발생한다. 이 때 피해를 입으면 최대 체력까지 떨어지므로 의미 없어보일 수 있으나, 만약 오버플로우 상태에서 회복약을 쓸 경우 체력이 0이 되면서 기절하게 되고, 이를 통해 엔트리 전원을 기절 상태로 만드는 것도 가능하다. 이 버그를 응용하면 이차적으로 엄청난 버그를 일으킬 수 있다. 우선 멀쩡한 포켓몬을 배틀에 마지막으로 내고 배틀이 종료되면 박스에 맡긴 뒤 그 자리에 알을 놓는다. 그 후 오버플로우된 포켓몬을 회복시켜 모든 포켓몬을 기절 상태로 만들고 배틀을 시작할 시 '''알이 배틀에 튀어나온다!'''(정확히는 알 속의 포켓몬 형태로 나온다. 색은 알 상태 그대로.) 이 알은 기술 사용이나 [[선행학습|가르치기, 레벨업과 진화]] 등 웬만한 행동은 다 가능하다. 물론 정상적이지 못한 상태이므로 뭐만 하면 얼마 안 있어 눈앞이 깜깜해진다. 알이 나온 뒤 다른 포켓몬을 회복시키면 정상적으로 위의 행동을 할 수 있다. 더욱 경악스러운 점은, '''[[불량알]]도 이러한 방식으로 꺼낼 수 있다!''' 모습은 비정상적인 포켓몬이라 그런지 일반 알과는 달리 알 모습 그대로 나온다. 이렇게 꺼낸 불량알은 비정상 데이터고 뭐고 그대로 사용이 가능하므로, 액플이나 치트로 불량알이 되어버린 포켓몬을 꺼내 무쌍을 찍는 것도 가능하다. 만약 여기서 멀쩡한 포켓몬이 있던 자리에 아무것도 존재하지 않고 기절 상태 포켓몬만 있다면 [[미싱노|결번]][* 1세대의 미싱노와 같이 색인번호 0번을 참조하거나 배틀이 끝나는 트리거가 발동되지 않았는데 포켓몬이 남지 않았을 경우 배틀을 정상적으로 끝내기 위해 참조하는 [[예외 처리]]이다.]이 나타난다. 이 상태에서 기절 포켓몬의 상태를 확인한 뒤에 1번째 포켓몬 위로 올라가보면 6마리 너머의 포켓몬 일람으로 이동할 수 있게 된다! 이 행동은 온갖 데이터를 헤집어놓으면서 대참사를 일으키는데, 이러한 데이터의 조작 원리는 얄궂게도 비정상적 데이터를 잡으려 만들어진 [[불량알]]의 검사 매커니즘에 있다. 모든 포켓몬이 쓰러진 상황에서 게임은 포켓몬이 0마리, 혹은 [[오버플로]]로 256마리가 존재한다고 인식하게 된다. 이때 256번째는 종료 버튼이 담당하기 때문에, 1번째 포켓몬 위로 커서가 올라가면 가장 마지막 포켓몬은 255번 포켓몬(으로 생각하는 데이터)을 가리키게 되고, 그 다음은 254, 253가 나오는 식으로 역순으로 올라가게 된다. 당연히 이 부분은 포켓몬 데이터가 아니며, 대표적으로 '255번 포켓몬'으로 읽히는 데이터는 박스 2 일부와 박스 1(파레리그)/박스 3(에메랄드)의 데이터이고, 215번 포켓몬까지 박스 데이터는 쭉 이어진다. 그런데 시스템상 선택 커서가 포켓몬을 가리킬 때마다 불량알 매커니즘이 작동하는데, 애초에 포켓몬이 아닌 데이터이므로 포켓몬 데이터식으로 판정해봐야 태반이 비정상적인 데이터라고 판단하고 불량알로 바꿔버리는 매커니즘이 작동하는 것이다. 즉 원래 정상이었던 박스 데이터를 엉뚱하게 판단해 변경해버리니 오히려 데이터가 망가지는 것. 또한 이것이 단순한 데이터 손상과 불량알 무더기만 만들어내는 것으로 끝나는 게 아니라 노력치 조정을 통해 원하는 알을 직접 만들어내는 [[임의 코드 실행]]으로까지 이어질 수 있는데, 이것을 '글리처 팝핑(Glitzer Popping)'이라고 한다. 글리처 팝핑의 근본적인 원리는 [[https://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_data_substructures_(Generation_III)|3세대의 포켓몬 데이터 처리 방식]]에 있다. 3세대에서 포켓몬 데이터는 종족 데이터, 기술 데이터, 노력치 데이터, 그 외 데이터 총 4가지로 분류되는데, 이 분류를 읽는 순서가 하나로 고정된 것이 아니라 성격치(PID)에 따라 순서가 섞여 총 24가지 종류의 순서가 존재한다. 한편 포켓몬을 불량알로 변화시킬 때에는 매커니즘 상 우선 그 포켓몬을 알로 바꾼 뒤, 추가로 불량알로 변경하게 된다. 이 때 불량알 데이터 비트는 포켓몬 데이터에 별 영향이 없는 고정값이라 그다지 중요하지 않고, 중요한 것은 그 포켓몬의 알 판정이 바뀌는 것이다. 이 때 포켓몬의 알 판정이 바뀌는 정확한 원리는, 그 포켓몬의 성격치(PID)나 트레이너 ID(TID)에 0x40000000의 XOR 연산을 하는 것이다. 좀 더 쉽게 말하면 포켓몬 데이터를 이진수로 풀어서 표현하면 32비트 묶음이 총 12개가 되는데, 이 중 31번째 비트의 0과 1을 서로 바꾸는 것. 상기한 알 판정 데이터 역시 '그 외 데이터' 분류 내의 31번째 비트 중 하나로, 일반적인 포켓몬은 이로 인해 알 판정이 0에서 1로 켜지면서 알이 된다. 물론 나머지 11개의 31번째 비트도 0과 1이 뒤집히며 영향을 받게 된다. 결과적으로 PID나 TID도 해당 연산을 통해 변화하게 되며, 그 값에 따라 데이터를 읽는 순서가 바뀌어 노력치 데이터가 스킬 데이터나 종족 데이터로 바뀌는 일이 일어나게 된다. 그 후, 이 12개의 '31번째 비트'의 0과 1의 개수가 각각 홀수일 경우 불량알이 되며, 짝수면 불량알 체크섬을 통과하여 마침내 정상적으로 부화가 가능한 알이 된다. 이러한 이유 때문에, 노력치를 임의로 조작해 두었다면 노력치에 해당하는 데이터의 포켓몬을 알에서 태어나게 할 수 있는 것이다. 다만 상기했듯 어떠한 포켓몬을 알이라고 판정하는 데이터는 포켓몬의 PID 및 TID에 따라 다른 데다, 추가로 3세대의 치트 방지용 시스템인 [[https://glitchcity.wiki/wiki/ASLR|ASLR(DMA)]]에서 오는 무작위성까지 끼어들기 때문에 글리처 팝핑은 결과가 일정하지 않고, 원하는 포켓몬을 얻는데 실패할 가능성도 있다. 반대로 알 상태에서 글리처 팝핑을 적용하면 일반적인 상태의 포켓몬으로 돌아오는 것도 가능하며, 이 경우 알에서 부화시키거나 보기만 해도 프리즈되기에 통상적으로 얻을 수 없는 위험한 버그 포켓몬이나 버그 기술을 부화 과정 없이 바로 박스에서 얻는 데에 주로 사용된다. 이렇게 임의로 만들어진 알·포켓몬·불량알은 노력치 같은 데이터들이 기술에 비정상적으로 배치되면서 버그 기술을 배우고 있을 가능성이 크다. 이 기술들은 이름만 봐도 튕기는 수준의 위험한 것들이 대부분이지만 [[임의 코드 실행|알이 배우는 기술을 잘 조정하면]] 기술 이름만 봐도 트레이너 배틀을 야생 포켓몬 배틀로 바꿔 상대 트레이너의 포켓몬을 포획할 수 있게 만드는 등 엄청난 효과의 버그 기술들을 이용할 수 있게 된다. 물론 이러한 버그 기술이 필요없다면 키우미집에 맡겼다 돌려받으면 된다. 이 과정에서 게임이 알아서 대부분의 비정상적인 기술을 교체해주며, 결과적으로 완벽한 정상 포켓몬으로 만드는 것도 가능하다. 다만 버그 기술이 지워지지 않는 경우도 존재하며, 한계를 초과한 노력치나 경험치, 리본 등 다른 방면에서 비정상적인 데이터는 여전히 존재할 수 있다. [youtube(OZNPgiMjNVc)] 이를 잘 이용한 [[포켓몬스터 에메랄드]] [[Tool-Assisted Speedrun|TAS]]. 처음에는 정상적으로 진행하다 싶더니 1시간 4분 13초 즈음 유석열매를 사용해 미리 빈사 상태로 만들어둔 [[늪짱이]]를 기절시킨 뒤 상술한 글리처 팝핑으로 데이터를 조작해 미리 박스에 넣어둔 [[캐스퐁]]을 '''[[BLIT|이름만 봐도 전투에서 승리하는]]''' 버그 기술을 든 불량알로 바꿔버린 뒤, 이를 배틀에 꺼내 [[검방울체육관]]부터 명예의 전당까지 무혈입성한다. 공중날기 데이터를 건드려 [[이끼시티]]과 [[루네시티]]를 무시하고 바로 [[그랜드시티]]로 공중날기 한다거나, 뱃지도 부족한데 바로 사천왕에 도전한다던가 하는 비정상적인 진행도 전부 글리처 팝핑으로 가능하게 만든 것이다. 인게임 데이터를 직접적으로 건드릴 수 있는 버그이다 보니 에메랄드 버전에서 이용 가능한 치명적인 버그는 전부 이 유석열매 버그에서 파생된다 해도 과언이 아니다. 원하는 포켓몬 얻기, 원하는 아이템 얻기, 강제 승리 등 그야말로 온갖 임의 코드 실행을 가능하게 하는 전지전능한 버그라 해도 무방하다. 결론적으로, 이 버그는 버그 기술이나 미싱노, 6명 이상의 엔트리 등 1세대 시절에나 나올 법한 버그를 3세대에 불러낼 수 있다는 점에서 최악의 버그라고 할 수 있다. 4세대에서는 체력 3 이하의 포켓몬은 유석열매를 사용할 수 없게 막았지만, 이것도 노력치를 116 이상 투자한 상태에서 사용시 노력치를 100까지 한꺼번에 깎아버리기 때문에 여전히 가능한 버그이다. 5세대부턴 전 구간에서 노력치 감소량이 10으로 고정되어 완전히 막혔다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기