4Bit Full Adder for PCB

전에 한번 8Bit 7-Segment LED를 이용하여 Bread Board에 Full Adder를 만든것을 포스팅 한적이 있다.

이번에 학교에서 이것을 PCB로 떠서 4Bit (보드 크기가 제한되어 8Bit는 불가)로 전가산기를 만드는 프로젝트가 있어서 이 기회에 다시한번 remind 하고자 이 포스트를 작성하였다.

이 회로를 간단히 설명하자면 DIP스위치로 숫자를 입력 받아 7segment LED로 4bit 가감산 결과를 (7483 Full Adder 이용) 출력하는 회로이다.



Toggle Switch를 이용하여 덧셈을 할 것인지 뺄셈을 할 것인지 정하고 숫자의 입력은 DIP Switch로 0~F (Binary : 0000~1111) 까지의 숫자 입력 범위를 가진다.

다만 F+F와 같은 연산은 8bit 연산이므로 Carry를 넘길 수 없는 단점이 존재한다.

제일 먼저 할일은 7-Segment LED의 점등을 위한 진리표를 만들어야 한다.

이를 위해서는 7-Segment LED의 원리를 알 필요가 있는데, 아래의 그림을 참고한다.



Cathode의 경우는 그라운드가 공통이며 Anode의 경우는 Vcc(+5v)가 공통이다.
용도에 따라서 다르게 쓸수 있으나 Active Low가 대세이므로 Anode 타입을 사용하며 다음과 같이
회로가 켜질 수 있도록 설계하는것이 포인트.



이 때 신호는 Active Low가 되야 하므로 0이 될때 Vcc와 Signal 사이의 전압차가 생겨서 전류가 흐르므로 LED가 켜지게 된다.

TTL 7447 (Binary to Decimal Decoder)를 사용해도 좋지만 이것의 경우는 0~9까지만 표시되므로
0~F까지의 범위를 가질 수 있도록 GAL을 이용하여 따로 프로그램을 작성하기로 한다.

위 7-Segment LED에 A,B,C,D 와 같이 알파벳으로 값이 매겨져 있는데 그것은 하나의 LED를 뜻한다.
A자리에 불이 들어오게 하기 위한 진리표는 다음과 같다.

수(Bin)
수(Hex)
0000
0x00
1
0001
0x01
0
0010
0x02
1
0011
0x03
1
0100
0x04
0
0101
0x05
1
0110
0x06
1
0111
0x07
1
1000
0x08
1
1001
0x09
1
1010
0x0A
1
1011
0x0B
0
1100
0x0C
1
1101
0x0D
0
1110
0x0E
1
1111
0x0F
1

왜 이런값을 매겼냐하면 다음과 같은 Character Set을 이용하기 위함이다.



숫자 0을 예로 들어보면 현재 켜져 있는 LED는 A, B, C, D, E, F가 켜져있고 G는 꺼져있는 상태이다.
0에서 A가 켜지므로 이것의 값은 1이 나와야 한다.

하나의 예를 더 들어보자면 숫자 1에는 현재 켜져 있는 LED가 B,C가 켜져있고 나머지는 꺼져있으므로
A의 값은 0이 된다.

이러한 진리표를 Boolean Algebra를 만든 후 식을 축약하는데, 여기서는 카노맵을 사용하면 된다.
카노맵과 원래 식이 맞는지 확인하기 위해 다음과 같은 프로그램을 만들었다.

// Equivalent Discriminator for Boolean Function by Xeriars

#include <stdio.h>
#include <stdlib.h>

int main () {

int a_,b_,i,fcount=0;
system(“cls”);
printf(”   Truth Tablenn”);
for(i=0;i<16;i++) {
int A=!!(i&8), B=!!(i&4), C=!!(i&2), D=!!(i&1);
a_ = (!A & !B & !C & !D) + (!A & !B & !C & D) + (!A & B & C & D) + (A & B & !C & !D);
b_ = (!A & !B & !C) + (B & (!A & C & D) + (A & !C & !D));
if (a_ != b_) { printf(“%X : t1 = %d, t2 = %d ——– Xn”, i,a_,b_); ++fcount; }
else { printf(“%X : t1 = %d, t2 = %dn”, i,a_,b_); }
}
if (fcount > 0) { printf(“nFalse Count : %d”, fcount); }
getch();
return 0;
}

a_랑 b_ 부분을 수정해서 컴파일해보면 알 수 있다.



원래 식과 축약된 식이 일치하면 위와 같은 화면을 볼 수 있지만 틀리다면 다음과 같이 프로그램의 출력이 변한다.



2개가 틀렸다는것을 알 수 있다. 이 식은 잘못된 경우이다. 축약을 다시 하여야 한다.
아무튼 이 짓이 싫으면 Karnaugh Minimizer란 프로그램을 구해서 사용하면 된다.

아래 표는 0~F까지의 진리표를 종합한 것이다.

Input
Output
HEX.
A
B
C
D
OUTA
OUTB
OUTC
OUTD
OUTE
OUTF
OUTG
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
1
0
1
1
0
0
0
0
1
0
0
1
0
1
1
0
1
1
0
1
2
0
0
1
1
1
1
1
1
0
0
1
3
0
1
0
0
0
1
1
0
0
1
1
4
0
1
0
1
1
0
1
1
0
1
1
5
0
1
1
0
1
0
1
1
1
1
1
6
0
1
1
1
1
1
1
0
0
0
0
7
1
0
0
0
1
1
1
1
1
1
1
8
1
0
0
1
1
1
1
0
0
1
1
9
1
0
1
0
1
1
1
0
1
1
1
A
1
0
1
1
0
0
1
1
1
1
1
B
1
1
0
0
1
0
0
1
1
1
0
C
1
1
0
1
0
1
1
1
1
0
1
D
1
1
1
0
1
0
0
1
1
1
1
E
1
1
1
1
1
0
0
0
1
1
1
F

여기서 사용할 GAL은 G22V10이며 핀배치는 아래처럼 생겼다.



이것을 wincupl의 형식에 맞게 적용한 파일은 다음과 같다.
———————————————————————————–

Name     7segment;
PartNo   g22v10;
Date     2007-05-18 ;
Revision 01;
Designer Xeriars;
Company  The X.D.C.;
Assembly 000;
Location In_the_Hell;
Device   g22v10;

/* *************** INPUT PINS *********************/
PIN 02 = A;
PIN 03 = B;
PIN 04 = C;
PIN 05 = D;

/* *************** OUTPUT PINS *********************/
PIN 17 = OUTA;
PIN 18 = OUTB;
PIN 19 = OUTC;
PIN 20 = OUTD;
PIN 21 = OUTE;
PIN 22 = OUTF;
PIN 23 = OUTG;

/* *************** EQUATIONS *********************/

!OUTA = (B & C) # (!A & C) # (A & !D) # (!B & !D) # (!A & B & D) # (A & !B & !C);
!OUTB = (!B & !D) # (!B & !C) # (!A & C & D) # (A & !C & D) # (!A & !C & !D);
!OUTC = (!C & D) # (!A & D) # (A & !B) # (!A & B) # (!B & !C);
!OUTD = (!A & C & !D) # (!B & C & D) # (B & !C & D) # (A & B & !D) # (!B & !C & !D);
!OUTE = (C & !D) # (A & C) # (A & B) # (!B & !D);
!OUTF = (A & C) # (A & !B) # (B & !D) # (!C & !D) # (!A & B & !C);
!OUTG = (A & C) # (!B & C) # (A & !B) # (B & !C & D) # (!A & B & !D);

———————————————————————————–

위 내용을 복사해서 붙인후 *.pld 파일로 저장한다음 Rom Wrinter로 GAL을 구워주면 된다.
이렇게 만들어진 GAL의 핀 관련정보는 위에서 보면 잘 나와있으므로 자세한 설명은 생략한다.





덧셈과 뺄셈을 하기 위해서는 TTL 7483(Full Adder)과 7486(XOR Gate)을 사용하게 되는데 IC 부품 가게에 가면 두가지 타입이 있다.

74LS83과 74HC83 두가지가 있는데 이 두가지는 사용법이 엄연히 다르므로 주의해서 사용하여야 하지만
이 포스트에서는 모든 핀을 사용하므로 이것에 대한 자세한 설명은 생략하지만 HC Type을 쓰는경우
안쓰는 핀은 반드시 High로 신호를 걸어주는 편이 신상에 이롭다.
(이것을 모르면 개피보는 수가 생기므로 반드시 주의한다.)



모든 회로에는 타임차트를 작성하여 동작 원리를 알수 있도록 한다.
이렇게 해주면 실수할 확률이 상당히 줄어든다.

1단계적인 완성을 위해 위에서 설명한 내용을 종합하여 아래와 같은 회로 설계를 할 수 있다.



스위치 부위에 Array 저항(10k)를 달아서 스위치가 닫혔을때도 신호가 제대로 들어갈 수 있도록 하여야 한다.



위 도면은 전원부 관련 회로이다. 7805(5Volt Regulator)를 사용하였고 전해 커페시터를 사용하여 전압이 항상 일정하게 공급될 수 있도록 해준다. (커페시터를 달아주는것은 7805 Data Sheet에서 권장하고 있는 형태이다.)
그리고 각 IC에는 반드시 커페시터를 달아서(이것을 Bypass Capacitor라고 표현) 노이즈를 막고 또한 전압이 일정하게 공급될수 있도록 한다.

※ 7805를 사용하려면 입력전압이 2~5V정도 높은 것을 사용하여야 한다.
필자는 9V/500mA의 어뎁터를 사용하였다.

이렇게 회로를 구성했으면 PCB를 뜨기위한 Footprint 작업으로 넘어간다.
다음 표를 참고하여 PCB Footprint의 정보를 입력한다.

No.
Part Name
PCB Footprint
1
7SEG-ANODE
r_FND_507 (직접 제작)
2
Capacitor 10u
CYL/D.250/LS.125/.031
3
Capacitor 104
RAD/.150X.100/LS.100/.031
4
Resistor 330
10k
AX/.400X.100/.031,BLKCON.100/VH/TM1SQ/W.100/6
5
TTL 74LS83
DIP.100/16/W.300/L.800
6
TTL 74HC86
DIP.100/14/W.300/L.700
7
GAL22V10
DIP.100/24/W.300/L1.175
8
HEADER2
BLKCON.100/VH/TM1SQ/W.100/2
9
LM7805
TO220AA/RF2
10
SW DIP-4/SM
DIP.100/8/W.300/L.400
11
SW KEY-SPDT
BLKCON.100/VH.TM1SQ/W.100/3

OrCAD Lay-out을 사용하여(사용법은 알아서 숙지) 수작업으로 Routing을 하던지 아니면
OrCAD Layout Plus SmartRoute Calibrate를 사용하여 자동으로 뜨는 방법을 고려한다.

필자는 Routing이 귀찮아서 후자의 방법을 채택하였으나 몇가지 기준은 필요하다.

1. PCB는 양면기판 이상을 사용하자. (단면기판은 라우팅 하기가 까다롭다, 그리고 4층 이상의 다층 기판을 사용하게 되면 한면은 VCC, 다른 한면은 GND로 사용할수 있는 장점이 있으므로 노이즈에 대해서도 매우 유리하다. 다만 돈이 많이 들게 되므로 대량생산하는 경우는 심각히 고려해야 할 사항이다.)

2. 앞면을 세로 기준으로 라우팅을 한다면 뒷면은 가로 기준으로 라우팅을 하자. (이렇게 기준을 정하면 회로가 미관상으로 이뻐 보인다.)

3. 가급적 뺑뺑 돌아가는 라우팅은 피한다. (공간 전도 노이즈에 감염될 확률이 높아지며, 배선 자체가 코일, 저항 역할을 하게 되므로 전류흐름의 방해요소로 작용된다.)

필자는 시간이 없어서 자동 라우팅을 하고 급하게 PCB를 뜨고 나서 생각해보니 3번항목을 지키지 못하였다.
아무튼 결과는 다음과 같이 나왔다.



양면 기판을 사용하여 작성하였고 PCB 기판의 크기 제한은 11cm x 7cm이다.
신호선폭은 12mil(1/1000인치), 전원 선폭은 25mil로 작성되었다.



PCB 기판의 앞면만 나타낸 모습이다. 자동 뜨기를 했더니만 2번항목이 전혀 지켜지지 않았다. -_-;;



PCB 기판의 뒷면만 나타낸 모습이다. 앞면에 비해서 2번항목이 비교적 잘 지켜졌다.

이렇게 라우팅이 100%가 된다고 끝나는 것은 아니다. Copper pour 라는 작업을 해주어 동판이 기판에 전반적으로 덮을 수 있도록 해준다. 이것은 양면기판으로 다층기판의 효과를 낼 수 있다.
필자의 경우는 앞면을 VCC, 뒷면을 GND로 Copper pour 작업을 해주었다.



녹색부분이 Copper pour 작업이 된 부분인데 라우팅의 문제로 Copper가 기판 곳곳으로 끝까지 들어가지 않았다. (빨강,검정부분이 들어가지 않은 부분)



마찬가지로 뒷면도 Copper pour 작업을 해준다. 역시 앞면처럼 라우팅의 문제로 Copper가 제대로 들어가지 않았다. (녹색, 검정부분이 들어가지 않은 부분임)

이렇게 해서 라우팅이 되면 Gerber File을 생성하여 PCB 생산 업체에 보내주면 PCB기판을 제작해준다.



완성된 PCB에 각종 부품을 조립한 모습이다.
(뒷면은 납땜질이 서툰관계로 차마 공개할수가 없었다.. -_-;;;)

누군가에 의해 검색된 이 자료가 많은 도움이 되길 바라며 이 포스팅으로 2008년의 모든 포스팅을 마친다.

Zod Update (2008. 12. 30)

Zod 구동 자체가 상당히 무거워져서 큰 개선점이 있었습니다.
※ (내부) 표시는 Zod의 전반적인 내부 작동사항에 관한 내용입니다.1. (내부) Zod의 구동을 경량화 하였습니다.

2. @바람검색 중 아이템 검색 기능이 더이상 작동되지 않아 삭제하였습니다.

3. @택배추적 기능을 담당하는 우체국의 홈페이지 리뉴얼이 이루어져 삭제되었습니다.

4. Zod가 옵을 가지고 있는경우 전체호출 방지가 이루어집니다. 해당채널에서 15초동안 3회이상 모든사람이 호출되면 자동으로 해당 인물을 킥밴하도록 처리합니다.

5. (내부) cmdcheck 함수의 오작동을 수정하였으며 Loop방식에서 IF 방식으로 대체하여 속도가 개선되었습니다.

6. 더이상 #Zod 채널에서의 채널 광고나 ZeroIRC로 mp3을 듣는것을 제재하지 않습니다.
(이 사항의 경우는 심한경우라면 직접 관여함.)

7. (내부) 삭제된 명령어가 명령어 목록에 남아있는것을 제거하였고 더이상 사용되지 않는 소켓, 함수,변수등이 삭제되었습니다.

8. (내부) 모든 메시지를 감시하는것이 아닌 $1 토큰 첫번째 바이트가 @,!,- 인경우에만 해당 메시지가 명령어인지 판독하도록 개선하여 속도를 증가시켰습니다.

9. 명령어를 내려도 Zod가 반응하지 않던 문제를 해결하였습니다.

10. 일부 채널에서 Prefix가 지정되지 않았으나 명령어가 사용된것으로 간주되는 버그가 해결되었습니다.

11. (내부) 논리상의 모순이나 쓸때없는 부분을 삭제하거나 간단하게 변경하였습니다.

12. 단순한 오류메시지나 안내메시지의 경우는 딜레이 초가 10초에서 3초로 고정됩니다.

13. @자음퀴즈, @쿵쿵따, @당연하지 의 명령이 삭제되었습니다.

14. 쿼리로 명령어를 대량으로 보내는경우 Zod를 Excess Flooding 시킬수 있는 문제가 해결되었습니다.

15. 차후 생길 수 있는 분쟁에 대한 근거를 위해 모든 명령에 대해서 사용기록과 사용자의 IP를 기록합니다.

차후계획

1. 아이디어가 생기면 명령어는 계속 추가됩니다.
2. 가상 버퍼메모리를 만들어서 Zod가 더이상 n초간 카운트를 세는일이 없이 명령어를 출력 할 수 있도록 제작중입니다.

DJ MAX Black Square 개봉샷

오후 2시쯤에 택배가 배송되었다. (노란모자 아저씨 ㅎㅇ)
게임파라닷컴에서 치열한 경쟁을 통해서 2차분때 겨우겨우 얻게 되었는데..
총판인 게임콘에서 삽질을 하는바람에 몇몇 소규모 업체에서 배송에 차질이 생기게 되었다.23일날이 용산 두꺼비상가가 단체로 쉬는날이어서 22일날 디맥 BS 한정판을 발송하는 업체가 꽤 많았다.
일부는 그렇게 해서 23일날 받아보게 되었는데, 게임콘은 주문만 받아두고 뻘짓을 하고 있었는지
배송 당일이 됬는데도 생산을 하고 있었다고 한다. 결국 입고가 늦어져서 초회판, 일반판이 먼저 풀리는 사태가 벌어지게 되었다.

게임콘이 소규모 업체에 통보한것은 “24일날 오후에 받아보던지, 아니면 대신 배송을 해주겠다.” 였는데
24일 오후에 받으면 26일에나 발송이 가능하므로 주문자들은 27일에 받게 된다. 그 경우 주문자들의 분노가 극에 달할 가능성이 있기 때문에 공장에서 새벽까지 제작하여(여태껏 제작하고 있었다… 미리미리 안하고 뭐했는지 원..) 그 흔한 뾱뾱이도 안넣고 인터넷에서도 최악으로 악명높은 노란모자 아저씨한테 배송을 맡겼다. (충격과 공포…)

그리고 크리스마스가 겹쳐서 택배사들은 죄다 쉬는 바람에 오늘에서야 받게 되었는데.. 한정판 유저가 복돌이들보다도 늦게 플레이를 하게 되다니… (크랙이 어제 저녁때 완성되었다.)

이게 무슨 미친경우야!! 응?

아무튼 그건 그거고 받으면 기쁜거다.
일부 빨리 받은 유저들은 배송을 급하게 했는지 외부 케이스의 뚜껑부가 좀 찢어진 경우가 있었다.

개봉샷을 지금부터 보여주도록 하겠다.



적절한 박스. 깜빡하고 크기 비교를 안했다. 택배온데에 정신이 팔려서..



뾱뾱이(Air form)을 안넣었는데 다행히 먼지만 살짝 묻었을뿐 일부 주문자처럼 찢어지거나 그러진 않았다.
대체로 찢어지거나 구성요소가 빠진 제품은 게임콘에서 주문해서 24일날 받아본 사람들이었다. (루리웹에서 확인, 물론 그러지 않은 물품이 더 많음. 그러므로 “대체로”라는 단어에 유의 할 것.)



오오… 판도라의 상자를 보는듯한 기분이다. 뭔가 묵직한게 고급스러운 분위기.



보통 이 뚜껑부와 본체(?)의 접합부위가 찢어진 채로 오는 경우가 대부분이었다. 뭐 연락하면 교체해준다는데. 내껀 찢어지지 않았으므로 패스.



다나양이 단아한 포즈를 취하고 있다. 오오.. 이게 UMD란 말이지?
루리웹에서 살펴 보던 중 퐝당한 사건 BEST1 : UMD가 없이 발송된 경우… 가 있었다.. ㄹ;;
이게 핵심인데 없으면 어쩌란 소리..



2층(?)을 살펴보니 일러스트북과 스피커(일명 따조 스피커), OST가 보인다.
원래 광고했던 사진과는 많은 차이가 난다고 게다가 책받침 재질의 스피커라고 따조스피커라는 별명을 얻게 되었다.



일러북에는 단순히 일러스트만 나온건 아니고 제작스토리라던지 그런것도 함께 담겨 있었다.
추..추장님!!!



모든 구성품을 꺼내보았다. 왼쪽 위부터 설명하자면.
1번째 줄 : 플래티넘 크루 카드(블랙스퀘어 로고 새겨짐), 팬타비전에서 보낸 연하장
2번째 줄 : Son of Sun Special Gift (편지와 함께 네잎클로버가 자랄 수 있는 씨앗 2알이 들어있다.), 반다나, OST (4CD), 따조스피커, 엔비레인저 종이재질의 피겨.
3번째 줄 : 한정판 사용자를 위한 UMD 커버, 일러스트북, 블랙스퀘어 UMD, 그리고 마지막으로 박스.

스피커를 욕하는데 난 사실 맘에 드는데 왜들 그렇게 까는지 원…
아무튼 이정도면 꽤나 알찬 구성이었던 것 같아서 나름 만족한다.

DJ MAX Trilogy 개봉샷

크리스마스 이브날 저녁에 DJ MAX Trilogy가 택배로 도착하였다.
이 글의 전 포스팅이 이미 DJ MAX Trilogy의 에디트 방법을 다루고 있는데 개봉샷을 이제서야 쓰게 된 이유는
오늘서야 DJ MAX Black Square의 택배가 도착했기 때문이다. -_-;;



요런 큼지막한 박스가 도착했다.

크기 비교를 위해서 적절한 전공서적을 하나 집어다가 올려놨다.
교수 왈 : 너희들이 원서로 배워야 되는이유는 여러가지가 있겠지만, 그 중 하나는 책장에 놓으면 뽀대가 나기 때문이다.



시상에.. 저 큰게 왔는데 뾱뾱이를 저런거 하나 달랑 넣어줬다.
찢어지지 않은게 천만다행.

한정판으로 주문한지라 전용 케이스가 딸려있었다. 초회판과 다른점은 달력, 트럼프, 머그컵이 들어있던것.
사실 이게 공개되기 전에 BS 한정판의 스피커가 책받침 소재의 얇은 플라스틱이라는게 밝혀지자
“TR의 머그컵은 종이컵, 트럼프도 종이 재질이 아니냐” 라는 의혹을 받았다.
(TR은 BS의 배송 다음날 정보가 풀림)

머그컵에 새겨진 글자와 문양이다. 밑면에는 네오위즈와 팬타비전의 마크가 새겨져 있으나 여기선 생략.

같이 동봉된 달력의 맨 마지막장. 2010년의 달력이다.
2009년 달력은 월(month)과 옆에 그려진 그림이 각각 매치되어 있다. 탁상용 사이즈.

시디를 들춰보면 밑에 아웃로 트럼프가 들어있다. 근데 이게 좀 꺼내기 짜증나는 구조로 되어있다.
칼을 이용하여 적절히 쑤셔박아서 겨우 꺼낼 수 있었다.

종이재질이 아니냐는 의혹을 받았으나 다행히 이 트럼프는 플라스틱 재질이다.
(하지만 고급 플라스틱 재질은 아니므로 주의.)

게임 내에서는 BGA를 살펴보면 체스를 두고 있지만 원래 BGA에서는 이 트럼프를 가지고 도박을 하는 모습이 나왔었다. 하지만 심의에서 통과가 안되어 수정된것이라고 한다.

사진에서는 생략되있지만 스페이드 에이스, K, Q, J를 제외한 나머지 트럼프는 일반 트럼프와 같다.



케이스의 맨 밑에는 일러스트가 새겨진 포스트 카드 10장과 정품인증번호 카드가 들어있다.

시디케이스를 열어보았다. 영어로 큼지막하게 T,R이라고 써진것은 OST 시디인데 이것은 빼내기 쉬우나 까만색 자켓으로 된 인스톨 시디는 꺼내기도 어려웠을뿐더러 스크레치가 살짝 있다.
제조 공정상 만들어진것 같은데 은근히 기분이 나빴다.

그리고 맨 왼쪽에 있는것은 매뉴얼인데 저걸 저기다 떡하니 붙여놔서 보기가 나쁘게 되어있어서 이 두가지가 상당한 마이너스로 작용한다.

반면에 USB Profile Key를 이용한 복사 방지책은 괜찮은 아이디어인것 같다.
(Black Square는 25일 저녁에 결국 열도에서 크랙이 되었으나 TR의 경우는 열도나 대륙에서도 일찌감치 크랙을 포기하였다.)

여기까지가 DJ MAX TR의 간단한 개봉샷이다.

DJ MAX Trilogy의 Gold와 Point를 에딧 해보자.

DJ MAX TR을 즐기다보니 포인트와 골드가 너무 부족하다는 사실을 절실히 깨닳게 되었다.

노래 하나 해금되는건 좋은데 사기 위해서 필요한 골드가 한곡당 5000골드..

보통 한곡을 깨면 500골드정도가 채워지니 대충 열판 정도를 해야 하나의 노래를 해금할 수 있다.

기어나 케릭터는 더욱 비싸고…

그래서 메모리 후킹을 통한 에디트를 시도해 보았다.

일단 해금곡, 최대 점수, 최대 콤보, 아이템 정보 등등은 USB Profile key에 저장이 다 되고

하드디스크에 인스톨되는것은 구동관련 부분(음악 등등)만 된다.

쉽게말하면 세이브 파일이 하드디스크에 저장되지 않기 때문에 헥스 에딧등은 불가능하다.

게다가 1.07버전부터는 (2008년 12월 26일 기준)에서는 메모리 후킹이 제대로 작동하지 않는다.

치트오메틱, 티서치, 치트엔진, 게임핵, 게임위저드 등등이 대표적인 프로그램인데..

1.07버전에서 시도해본 결과 제대로 된 값을 찾아내지 못한다.

그래서 어떻게 할까 고심하다가 약간의 꼼수를 써서 골드, 포인트 에딧에 성공하였다.

————————————————————————————————-

경고 :
1. 너무 심한 에딧은 게임의 재미를 급격히 저하시킬 수 있으므로
정도것 사용할 것.

2. 이 방법으로 에딧은 가능하지만 모든 문제에 대한것은 본인이
책임질 것.


준비물 : DJ MAX TR Install disc (초회,한정판 또는 일반판이되 1.00으로 제작된 시디), 메모리 후킹 프로그램 (위에서 설명한 대표적인 프로그램중 하나. 필자는 티서치를 사용하였다)

이제부터 본격적인 설명에 들어가겠다.

1. 제일 먼저 DJ MAX TR을 언인스톨 한다. (이건 기본적인 내용이므로 자세한 방법은 생략)

2. 랜선을 뽑던지 시작 -> 실행 -> cmd 치고 엔터 -> ipconfig /release 치고 엔터 를 쳐서 인터넷 접속을 차단.
※ 제보에 의하면 DJ MAX TR이 인스톨 된 디렉토리를 찾아가서 TR.exe 파일을 실행하면 업데이트가 진행되지 않는다고 하니 위 과정이 귀찮은 사람의 경우 이것을 참조.

3. 준비한 DJ MAX TR 시디를 인스톨
(이 때 USB Profile key의 드라이버가 같이 인스톨되니 왠만하면 포트에서 빼두자.)

4. 설치가 완료되면 티서치 실행하고난후 DJMAX TR을 실행하고 잠시 기다리면 아래와 같은 스샷을 볼 수 있다.



애초에 랜선을 뽑는것으로 인터넷을 차단한 이유가 강제 업데이트를 막기 위함이다.
(상위버전에선 메모리 후킹 불가)

5. Start를 누르고 게임을 시작한다.

6. 현재 골드와 포인트의 상태를 확인한다. (필자는 골드부터 에디트) 그다음 Alt + Tab 키를 눌러서 티서치로
전환 후에 확인한 값을 메모리에서 찾는다. (빨간 동그라미(?)를 참조할것)

※ 메모리 후킹 프로그램의 사용법은 숙지하고 있는 것으로 가정하고 설명하였음.



7. 전형적인 방법대로 목표 수치의 변환을 준다. (게임을 한판 한다던지..)
필자는 게임을 한판 한 후에 골드가 변한 것을 확인하고 next search를 이용하여 해당 메모리값을 찾았다.



메모리 값을 찾은 후 값을 바꿔주면 얘기는 끝난것이다.

8. 마찬가지로 포인트도 이런식으로 찾으면 된다.



이렇게 에딧후에 사고싶은걸 산다던지 그런건 맘대로 한다.
다른 컴퓨터에서 하거나 버전이 바뀌더라도 USB Profile key에 모든것이 저장되므로 걱정할 필요는 없음.

9. 이제 다시 랜선을 꼽던지 아니면 시작 -> 실행 -> cmd 치고 엔터 -> ipconfig /renew 치고 엔터키를
눌러 인터넷을 연결 한 후 DJ MAX TR을 실행하여 자동패치가 되기를 기다린다.



10. 패치가 된 후 정상적으로 USB Profile key에 모든것이 저장되었는지 확인하면 끝.



거듭 강조하지만 너무 심한 에딧은 자중하자.

Pro-Engineer를 이용한 NC Tool path 생성 및 시뮬레이션


학교에서 나눠준 과제로 모델링과 함께 금형, NC Tool path(공구경로) 생성까지 해오라는 지시를 받았다.

주어진 치수를 가지고 만든 모델은 다음과 같다.

뭐 그다지 어렵잖게 10분만에 후다닥 만들었는데, 이걸 가지고 Pro/Mold의 작업과 NC Tool Path의 작업을 하는것이 중요하다는것이다.

Pro/Mold로 작업할때 가장 중요한 점은 수축률을 주는것과 상판과 하판을 따는 일이다. 이것의 결과는 다음과 같다.

금형을 오픈한 상태로 찍은 스샷인데 상판의 모습이 잘 보이지 않아 상판과 하판의 모습을 개별적으로 다시 올린다.

상판의 모습. 원본 모델과 음각의 조화를 이룬다.

하판의 모습은 양각이긴 한데 좀 모양이 이쁘지 않게 나왔다. 라운드를 어설프게 줘서 그런건지
Shell 명령시 Thickness를 너무 두껍게 준건지.. 쩝.. 맘에 들지 않는다.

아무튼 이것으로 Pro/Mold를 이용한 금형제품을 만들어보았다.

NC Tool path 생성에서 가장 먼저 해야 할일은 참조 모델을 불러 온 후 (반드시 Fix 시켜야함), NC Model을 만드는 것이다.



이것은 마치 조각상으로 치면 깎이기 전 원석과 같은 형태라고 볼 수 있다.
녹색부분이 재료부분이며 그 속에 비치는 것이 완성된 형태이다.

관례상 Z축을 상판으로 하여 공구 기본좌표를 설정하여야 한다.



재료를 깎을 엔드밀의 종류와 공구길이, 직경을 지정해준다.



깎지 말아야 할 부분을 선택해주어야 한다. 자신이 원하는 형상의 모든 Surface를 선택해준다.



Play path를 이용하여 공구경로를 살펴보니 밝은 빨강색으로 가공이 안된 부위가 표시된다.
이런경우는 원하는 형상이 제대로 나오지 않기 때문에 NC Model에 수정을 가할 필요가 있다.



NC Model의 높이를 40mm에서 45mm로 수정하였다.



높이 변화 후 이제 가공이 제대로 되는것을 확인 할 수 있다.

NC Check기능을 이용하면 이렇게 설정한 공구 경로가 실제로 NC에서 어떻게 깎이는지 시뮬레이션이 된다.
동영상을 재생하면 엔드밀이 바쁘게 움직이면서 작업하는데 실제론 저렇게 빠르지 않다. -_-;;;
뭐 깎이는것은 재질에 따라 다르겠지만 금속의 경우는 절삭유까지 뿌려주면서 해야하기 때문에 더욱 오래 걸린다.

이러한 과정을 모두 거친 후 Post Processing을 해주면 NC Data Code가 나온다.
이걸 수동으로 디코딩해볼 생각을 하는것은 일찌감치 접는것이 좋다. -_-;;;

시간이 없어서 실제로 NC데이터를 입력해서 깎아보기까진 하지 못했는데 다음에 기회가 있으면
한번 돌려 봤으면 한다.

DJMAX Black Square 한정판을 지르다..

DJMAX Black Square 한정판이 발매되었다.12월 6일 1000개
12월 7일 500개의 물량이 풀렸는데.. (오후 5시)

어제 학교에서 모터제어하던중에 4시 50분부터 새로고침 신공을 써가며 기다렸다.

12월 6일 P.M. 5:00

오옷!! 떴다! 하고 달려가는순간 공원몰은.. 이미 품절..

겜콘은 수차례 결제시도를 했으나 카드결제 실패.. (망할 ISP 결제 실패…)

포기하던 찰나에 뒤늦게 ak몰에서도 주문을 받는다는 사실을 알고 갔으나 회원 가입하는사이 품절..

어제 카드결제의 쓰라린 맛을 보았기에 오늘은 중무장을 하였다.

오늘 BS대첩의 전쟁터는 다음과 같다.

——————————————————————————————–
http://www.gamepara.com/FrontStore/iGoodsView.phtml?iGoodsId=0061_00051
http://www.gamecd.co.kr/store/product.asp?code=352019-00032
http://gamemol.co.kr/goods/view.asp?g_code=G004693
https://www.gamestop.co.kr/html/goods/goods_catalogue.php?grp1=10199&gid=100004602
http://www.game2buy.com/goods_detail.php?goodsIdx=15671
http://www.gameizzang.com/shopuser/goods/productView.html?largeno=1&middleno=&smallno=&code=11de1ea92f
http://www.cgame.co.kr/cms/product_detail.php?puid=4976&catecode=112002000&subcate=112002001
http://www.interpark.com/product/MallDisplay.do?_method=detail&sc.shopNo=0000764767&sc.dispNo=&sc.prdNo=100532910
http://www.shoppingasia.co.kr/bin/goods/detail.html?GDSuID=11019&page=&CTGa=1&CTGb=4&CTGc=&GDSkeyword=&GDSListVTno=&GDSiconFirst=&GDSiconNew=&GDSiconRecommend=&GDSiconFavorites=&GDSiconBest=&GDSiconSale=&GDSiconSalesLimit=&GDSiconReserveDate=&GDSiconBonus=&GD
http://akgamemall.co.kr/goods_detail.php?goodsIdx=5014
——————————————————————————————–

역시나 오늘도 공원몰은 품절되버리고.. 게임몰에서는 4시 50분부터 주문을 받긴 했는데…

엄청난 공세로 다운되버림.

게다가 시험삼아 카드결제 한곳은 역시나 ISP 오류가 뜨고..

결국은 게임파라닷컴에서 무통장 입금형식으로 하나 건졌다.

아래는 승리의 인증샷.



당분간 점심은 굶어야될듯… ㄹ;;

음… 패키지 구성품은 다음과 같은데…

——————————————————————————————–
디제이맥스 포터블 블랙 스퀘어 프리미엄 한정 케이스

디제이맥스 포터블 블랙 스퀘어 PSP 게임 타이틀 ( 한정 패키지 )

디제이맥스 포터블 블랙 스퀘어 O.S.T. ( 4 CD )

Illusion ( DJMAX METRO Project Visualization Book )

Son of Sun Special Gift

PORTABLE SPEAKER : BS24

Bandana : BS Edition

2009 PENTAVISION NEW YEAR’S CARD
——————————————————————————————–

대체 Son of Sun Special Gift 가 뭘까….

추장 코스튬 세트? 단검? 그것도 아니면… 빤스??

아무튼 24일날 발송한다니 크리스마스는 BS와 즐겨보자..

POPS사용 시 바이오해저드2,3 멈춤현상 해결하기

포스팅에 앞서 전하는 말씀
이 포스팅은 커스텀 펌웨어가 설치된 PSP를 응용하는법을 담고 있지만 소니의 관련 저작권에 관련된
일체의 파일이나 무력화 방법 또는 대행에 대한 내용을 담고 있지 않습니다.
PSP에서는 PS1게임을 약간의 변환과정을 거쳐서 구동을 할수 있는 메리트가 있다.

그런데 이것이 아주 완벽하게 구동되는것이 아니고, 또한 펌웨어 별로 다르게 구동된다.

내가 좋아하는 PS1 게임중에 바이오 해저드 2,3이 있는데 이것들은 둘다 문제가 조금씩 있다.

POPS(Playstation One Portable Station) 사용시 바이오 해저드2의 문제점은 경찰서에 도착한 후 메인 홀에서

프리징(Freezing) 현상이 일어나는것인데, 분명 소리는 나지만

화면은 꺼멓게 되어 더이상 작동은 불가능한 상태가 된다.

또한 POPS사용 시 바이오 해저드3에서는 두군데에서 프리징이 된다.

1. 시계탑으로 가기위한 전차를 작동시키기 위한 준비물 3가지(퓨즈, 합성오일, 전원 케이블)를 구하러 가는
도중에 Parking lot을 지난후 렌치를 사용하여 호스를 빼낸 후 목적지로 향하는 문을 여는순간 프리징

2. 카를로스 플레이 종료 후 질로 플레이시 시계탑 건물에서 공원과 병원의 갈림길 나오기 전의 문 (카를로스
플레이 전에는 무거운 종으로 막혀있는데 카를로스가 밀어 낸 후에는 갈 수 있게 됨)을 여는 순간 프리징

해결법
바이오 해저드2 : POPS변환시 GameID를 SLPS-01222로 바꾸면 해결. (이미 변환한 경우에는 GameID를 변환하는 프로그램을 여기 에서 받는다.)

바이오 해저드3 :
1번의 경우 : GameID를 SLPS-01222로 바꾼다. 또는 호스를 가지고 다시 Parking lot의 세이브 포인트를 가서 호스를 집어넣고 Parking lot -> 호스 얻은곳 -> 통로 -> 경찰서 갈림길 -> 세이브 포인트(여기서 호스를 다시 꺼냄) -> 호스 사용 으로 문제 해결
2번의 경우 : GameID를 SLPS-01222로 바꾸고 popsloader를 사용하여 3.52버전으로 구동하면 해결.

————————————————————————————————–

How to solve freezing on RE 2,3?

first of all, This posting is not included file about Sony’s copyright. Just Application 🙂

One of My favorite game is Resident Evil series, But it game had some problem.

Resident Evil2 have a problem. If you are arive at Police Station, you will be frozen the game.
when convert PS1 image to POPS, you must use gameID SLPS-01222, hence you can’t be freezing at Police Station.

Resident Evil3 have two problem. Use SLPS-01222 (BioHazard 2 Game ID) to avoid Clock Tower game freeze. To avoid game freeze after getting the firehose, instead of going directly to the alley, go back to the parking lot to deposit the hose in the chest. Now go directly to the alley (without the fire hose) and then there you withdraw the hose skipping the door where the game freezes.

대항해시대2 (Snes Ver.) 음악으로 벨소리를 만들어 보았다.

인터넷에서 뭘 좀 찾다가 우연히 대항해시대2에 관한 어떤 한 사람의 포스팅을 보게 되었다.

예전에 중학교때 대항해시대2를 미친듯이 했었는데, 그게 생각나서 한참의 추억속에 빠져 있다가.

오랜만에 dosbox를 이용해서 대항해시대2를 돌려보았다.

대항해시대2는 등장인물이 몇명 되는데 그중에 난 피에트로와 에르네스트의 이야기를 좋아한다.



등장인물 이름은 왼쪽 위부터 조안 페레로, 카탈리나 오토 스피노라, 에르네스트, 피에트로, 알 자베스 이다.(Snes용 스샷임)

에르네스트는 애초에 지도제작이라는 꿈이 있었는데 피에트로 이놈은 처음 등장할때부터 빚쟁이다.

여기저기 도망쳐 다니다가 조안 페레로의 어머니(대항해시대 1에서는 공주였다.)가 조안이 바다에 나가는것을

너무 걱정한 나머지 소식을 들려주는 대가로 스폰서가 되기로 한 스토리.

개인적으로 여해적 카탈리나나 귀공자 조안 페레로, 전형적인 군바리 오토, 장사꾼 알자베스는 별로
(팬 분들은 ㅈㅅ)

대항해시대2 스페셜 에디션은 전반적으로 풍부한 악기를 사용하여 좋은 음원을 들려주지만

곡의 가짓수가 많지 않고 등장인물의 테마곡은 나오질 않아서 좀 아쉬웠다.

아무튼 잡설은 뒤로 제치고,

원래는 도스용 음원을 사용하여 벨소리를 만들려고 했으나 만들고 나니 잘 들리지가 않는다.

그래서 PS1용으로 할지 Snes로 할지 고심중에 있다가 PS1 롬 구하기가 귀찮은 관계로 (게다가 불법이다.)

Snes용(이것도 합법은 아닌듯..)으로 spc를 추출해 내었다.

이것을 다시 spc(Snes용 음악 dump 파일)에서 wav로 컨버팅한 후 벨소리로 만들어 보았다.

ThemeofErnesto

파일정보
형식 : 128화음 벨소리
길이 : 2분 11초

파일정보
형식 : 128화음 벨소리
길이 : 1분 58초

이 벨소리를 다운로드 받아서 기본벨로 설정한후 당당히 이 멋진 음원을 지하철에서 울려주자. 😀

Hello World on PSP

Recentely, I am interesting in PSP CFW(Playstation Portable Custom FirmWare)
So I tried to make homebrew for PSP.

I was going to google to find PSP SDK (Software Developer Kit) and finally, I found it.
If you who read this post need it, go to http://sourceforge.net/project/showfiles.php?group_id=114505

To execute “Hello World” Program in PSP, you need a source code as follow.

——————————————————————————-

#include <pspkernel.h>
#include <pspdebug.h>

#define TRUE 1
#define FALSE 0
#define printf pspDebugScreenPrintf

PSP_MODULE_INFO(“Xeriars”, 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);

int g_bExit = FALSE;

int ExitcallBack(int arg1, int arg2, void *common);

int main (int argc, char *argv[]) {
int cbid; // Callback ID

pspDebugScreenInit();

cbid = sceKernelCreateCallback(“Exit Callback”, ExitCallBack, NULL);
sceKernelRegisterExitCallback(cbid);

printf(“Hello Worldn”); // LCD Display

while(g_bExit == FALSE);
sceKernelExitGame();
return 0;
}

int ExitcallBack(int arg1, int arg2, void *common) {
printf(“%x %x”, arg1, arg2);
g_bExit = TRUE;
return 0;
}

——————————————————————————-

And you must compile it to get EBOOT.PBP
EBOOT.PBP is equivalent *.EXE on Windows OS. It will be executed in PSP
First, save(=overide) it at C:devkitProdevkitPSPpspsdksamplestemplateelf_templatemain.c

Second, we are readied for compile. Click the Button Start -> Run -> cmd.exe
and type a command as follow

——————————————————————————-
cd
cd devkitProdevkitPSPpspsdksamplestemplateelf_template
make
——————————————————————————-
If you are setted nomally, you will get a EBOOT.PBP
At Last, Copy your EBOOT.PBP at ms0:/psp/game/test and run in PSP

Congratulation. lol