전처리 부분의 회로
1번의 녹색선 입력이 그래프로 띄우고자 하는 값임
1번이 하는 일은 아주 단순함
입력이 들어오면 그걸 입력의 (최댓값/10) 값으로 나눠줌
지금 입력으로 별신호가 최대650까지 들어오고 있기 때문에 D 신호를 65로 세팅해둔 상태임
이럼 출력이 0~10으로 줄어들게 된다
1번의 출력은 빨간선을 타고 2번으로 들어감
여기서는 0~10 별신호를 보고 그거와 짝이 맞는 신호짝만 추려서 출력함
여기서 신호조건을 =이 아니라 다른것들을 고를 수도 있는데 종류를 바꾸면 다른형태의 그래프도 볼 수 있음. 이건 뒤에서 다시 설명
3번4번은 그냥 타이머임
T신호를 세팅하면 T주기마다 체크신호를 1틱 방출함
5번 조합기
4번에서 나오는 체크신호가 빨간선을 타고 입력되고
2번에서 나오는 0~9신호중 하나가 녹색선을 타고 입력됨
체크신호가 1일때만 녹색신호를 통과시킴(T주기로 샘플링)
제일 난해한 6번 조합기
4번에서 나오는 빨간선을 타고 체크신호가 입력되는데
체크신호가 0일때는 <<0을 해서 현재값을 그대로 유지함
체크신호가 1일 때는 <<1을 해서 값을 2배로 키움
기존에 정보는 왼쪽으로 1비트씩 이동하는거고, 정확히 이 타이밍에 5번회로의 출력이 가장 오른쪽 0번비트 자리를 채움
현재 신호 값이 2진법으로
0010101110 이런값이였다면, 체크신호와 함께 1이 입력될 경우
0101011101 이렇게 되는거고, 이번엔 체크신호와 함께 0이 입력될 경우
1010111010 이런식으로 점점 왼쪽으로 이동함
7번회로
N번째 자리면 2^N 값과 bitwise and 연산을 수행하여 원하는 자리수 비트만 추출함
결론적으로는 원하는 신호만 걸러낼수가 있음...
어떤 신호의 값이 2진법으로
0101011101 이였다면
0101011101 & 0000000001(1) => 000000001(1)
0101011101 & 0000000010(2) => 000000000(0)
0101011101 & 0000000100(4) => 000000100(4)
0101011101 & 0000001000(8) => 000001000(8)
이렇게 원하는 비트만 뽑아내는거고, 이때 출력이 1,2,4,8 등 2의 제곱수로 나타나는데 이건 상관 없음
자기 자리에 해당하는 신호가 0이 아닌 값이 들어오면 전구는 불을 밝힘
조건을 !=0으로 해두었기 때문에 입력이 1이든2이든4이든8이든 -2147483648이든 상관 없음
만약 2번회로의 조건을 = 이아니라 <=를 사용한다면 아까였다면 8만 출력되었을 것이 1~8신호가 모두 출력됨
이 경우에는 그래프가 선이 아니라 아래가 채워져서 그려짐
비트연산을 사용하기 때문에 그냥은 32비트에 대해서만 나타날 수 있고, 가로로 32칸보다 길어지려면 추가 연장기가 필요함
이게 연장되는 부분인데
밑에 비교 조합기는 아까 5번조합기와 비슷한 역할을 함
각각(G)<0 조건을 걸고 있는데, 이건 31번 비트가 0인지, 1인지 판별하는 역할을함
31번 비트가 1인 경우는 음수인 경우이기 때문에 이에 해당하는 신호를 1로 출력해서 새로운 0번비트가 되게 함
위에 산술조합기는 6번조합기랑 똑같음
이걸 쓰면 무한하게 연장가능하다
이렇게 확장 가능
근데 저정도 수준으로 확장할 일이 있으려나
https://factoriobin.com/post/vnm86z
그래프 - FactorioBinFactorioBin is a site for quickly and easily sharing Factorio blueprintsfactoriobin.com청사진
변전소 커버 범위가 18*18따리가 아니였다면 세로로 더 확장해서 더 예쁜 그래프를 볼 수 있을 것 같은데 그렇지 못하는게 아쉬울따름
이제 그래프를 디스플레이를 통해 지도 모드에서 볼 수 있게 만들자
전구를 디스플레이패널로바꾸기만 하면 되는거라 어렵지않긴 함 ㅋㅋ 변전소도 필요없을거고
진짜 미친거 아님?
나는 그만 정신을 잃고 말았습니다
전설 변전소를 쓰면 안되나?
뭐 그래도 되긴하는데 엥간한 회로는 dlc없이도 되는걸 기준으로 짜고 있음
제발 게임을 해주세요
이제 fft로 주파수별로 뽑아내는 것도 만들어조
안그래도 사인파생성기 만들면서 그생각을 해보긴했는데 이건 너무 간것 같음 ㅋㅋㅋ
@이파 아 근데 팩토리오 회로에 소수가 있던가? 소수 없고 정수 타입만 되는거로 기억하는데 그러면 좀 많이 빡세긴 할듯 ㅋㅋ
@코드쓰기싫음 고정소수점으로 하면 정밀도가 아쉽고 곱셈결과 32비트넘어가면 지랄맞아지고 까다롭긴하지. 옛날에 직접 부동소수점 구현한 갤럼도 있긴했음 ㅋㅋ
@이파 ????? 아니 뭐... 그... 비트별로 잘 자르고 하면 안될건 없는데... 부동 소수점을 왜 팩토리오에서 구현을... 대체 왜...
@코드쓰기싫음
https://m.dcinside.com/board/factorio/52988
ㅋㅋㅋㅋ
@코드쓰기싫음 힘들어서 곱셈은 안했었다
저장용량 희생해서 조합기 줄인거네 신호 한종류당 딱 1비트씩 넣게해서
님아 뭔겜하는거임
팩토리오