2018년 3월 20일 화요일

Visual Studio와 CC65에서 개발 가능하게 환경 셋팅을 해보았습니다.


                                                                                                                        2011.04.21. 14:32


요즘 회사에 골치 아픈일이 생겨서 일도 안 잡히고 , 이런 저런 문서 작업에 지쳐서 시간날때 마다 조금씩 건드려 보았습니다.

CC65 환경에서 개발을 하는것이 디버깅이 안되서 , 불편한 관계로 windows 에뮬 환경처럼 꾸며서 작업을 한 뒤에 cc65상에서는 최소한의 코딩을 하려고 작업을 해 보았는데요. ( 절대 에뮬레이션은 아닙니다. ^^)
관심있는 분들은 내용 확인 하시기 바랍니다.

windows쪽 소스와 apple에서 사용할수 있는 cc65소스 그리고 sprite 편집기인 AppleSpriteMan.exe를 압축 파일로 첨부 했습니다.

*************************************************************
**  준비 해야 할 툴
*
* Visual Studio 2008 : window에서 컴파일/디버깅등 할때 필요
*
* CC65 : windows용 6502 컴파일러
*          참고 - http://www.cc65.org/doc/intro.html
*          다운 - ftp://ftp.musoftware.de/pub/uz/cc65
*          셋팅 - http://cafe.naver.com/appleii.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=2328
*
* GnuMake : make utility , apple용 c 파일을 묶어서 컴파일하기 위해
*          다운 - http://www.gnu.org/software/make/
*
* AppleWin : windows용 apple 에뮬레이터
*          다운 - http://applewin.berlios.de/
*
*************************************************************

* 컴파일
* Visual Studio 2008 버전에서 .sln 파일을 읽어 들이면
* window 실행 파일을 생성가능하다.
* apple에서는 Makefile에 compile 환경 정보가 담겨 있고 , make를
* 이용해서 컴파일을 한다. 생성된 agame 파일은 cc65.dsk로
* ( Makefile에 보면 최종 생성 파일을 agame 으로 설정 )
* 넣어서 appwin에서 확인 가능하다.
* a.bat 파일을 이용해서 생성된 파일을 cc65.dsk로 넣는다.
*************************************************************

윈도우 스프라이트를 표시하기 위한 테스트 프로젝트
*************************************************************
기본적인 win/ap 공용 구조
- draw 와 기본적인 껍데기는 개별 파일을 사용하지만
  로직이 들어 있는 gamemain.c 파일은 동일한 것을 사용해서
  apple 와 windows에서 동일한 디버깅이 가능하게 설계했음.

                              WIN                     AP
container layer        -----                    -----
                           test1.cpp             agame.c
                                |                        |
                         ------------           -----------
                            grplib.h               grplib.h   -- 동일한 헤더파일 
draw lib                 grplib.cpp            grplib.c
                         ------------           ----------- 
                                |                        | 
                                 -----------------
                                     gamemain.h             -- 동일한 헤더파일  
logic                     +--|  gamemain.c      |--+
                                    and more .c files
                                  -----------------
** 중요로직 **
gamemain.c 에 GameMainLoop()안에 주요한 내용이 들어 있고,
내부에서 아래의 함수들을 함수 포인터에 의한 호출로 함수 콜 된다.
아래 함수는 windows는 test1.cpp에 들어 있고,
apple은 agame.c 에 내용이 들어 있다.
void KBDInputProcess(char * pParam);       // 키보드 입력 작업
void DrawProcess(char * pParam);            // 화면 그리기 작업
void RuleProcess(char * pParam);             // 기타 다른 룰처리 부분



*************************************************************
AppleSpriteMan.exe
* .spr 을 생성/보기 가능한 툴
* 새로 추가된 기능
  - 여러개의 spr 파일을 동시에 열어서 편집하거나 볼수 있다.
  - bmp파일을 읽어서 spr 파일로 변환 가능
    ( 현재 bmp 파일은 256 color만 가능하고 디더링 기능 없음 ^^
      누가 기발한 디더링 로직 알려 주세요 ^^ 하지만 디더링이 된다고 해도
      결국은 도트작업 필요할듯 함 )

*************************************************************
** 기타
* a.bat : cc65.dsk 파일에 생성된 agame 파일을 추가 한다.
* windows의 경우는 spr 파일을 LoadSpr()에서 읽어 들였지만
* apple의 경우는 cc65에서 바로 dsk에서 읽어들이는 함수가 없다.
* 때문에 미리 dsk에 spr파일을 넣어두고 , hello 에서 dos가 부팅될때
* 메모리를 올리는 방식으로 처리 하였다.
* 추후에 cc65의 dio계열 함수를 이용해서 dsk에서 읽어 들이는 부분 추가해야함
*************************************************************

똑같은 소스를 (사실은 현재는 로직이 별로 없기 때문에 공통된 소스는 매우 적습니다. ) window와 applewin에서 본 모습입니다.

* windows

* Apple
 

** 두개 이미지에서 바지 색깔이 다른데요. 이건 디버깅을 더 해봐야 겠네요 T.T

댓글 없음:

댓글 쓰기