chip 8 emulator의 정리.
https://github.com/DanTup/DaChip8
https://github.com/kripod/chip8-roms
안녕하세요 오늘은 dosbox의 x86을 보던중, 참고할 에물레이터를 찾아 봤습니다.
chip 8 이란게 있어서 해당 내용을 들여다 봤습니다.
크게 정리할 내용은 없지만, 그래픽 구현 관련되서 어느정도 힌트를 얻을수 있기에 이렇게 글을 적어둡니다.
위의 dachip8 이란 코드를 보게 되면, 그래픽 구현은 picturebox를 이용했습니다.
위의 폼에 picturebox를 상속 시켜서 onpant관련 event만 override 했네요.
이렇게 된 화면에 그래픽 관련 opcode를 읽어서 redrawing 하면 화면 구현이 됩니다.
해당 drawing 코드는 아래와 같습니다.
이렇게 drawing을 하는 로직이 있습니다. 보시면 pointer1에 해당되는 부분이 green/black 2개로만 처리 되기에 위와 같은 인터페이스가 나오는거 같네요.
이런방식의 tick이 while문안에서 계속 돌아가면서 계속 drawing을 하게 됩니다.
sdl,sdl2 역시 위와 같은 방식 구현이 되어 있을꺼 같습니다.
추가로, v에는 변수를 넣어서 사용 합니다.
코인갯수가 위에 변수 V 에서 사용됩니다. misc는 추가 확장된 opcode라고 보시면 됩니다.
위의 벽돌 깨기 로직은 아래와 같이 구현되지 않았나 추측해봅니다.
RAM 어딘가에 32 * 64 의 사이즈의 map을 초기화 한 후,
이동하는 공의 좌표와 벽돌이 있는 좌표가 겹치는 유무를 확인 한 후
이동하는 공이 벽돌과 겹칠 경우 해당 벽돌의 RAM map에서 0을 제거 시키는 방식인거 같습니다.
이후 draw는 알아서 해당 map의 값을 읽어 들인 후 화면에 표시 하는 형태일껍니다.
감사합니다.
'관련자료' 카테고리의 다른 글
chrome driver를 사용 하여 스크립트 작성시 주의할 사항입니다. (0) | 2022.03.04 |
---|---|
라즈베리 삼바 관련 기록입니다. (0) | 2022.03.04 |
라즈베리 패키지 주소를 못찾을때 확인 사항. (0) | 2022.03.04 |
키보드 키를 arduino에 연결 하기. (0) | 2021.12.09 |
433 mhz 송신기를 활용하는 방법입니다. (0) | 2021.12.08 |