2018년 3월 20일 화요일

바즈테일/위저드리 D&D 형 RPG 기본 소스 공개입니다


2011.05.31. 16:53

시간을 내서 마무리를 해 보았습니다.
그러나 게임 마무리는 아니고 ... 맵에서 이동만 마무리가 된거죠 ^^
압축을 풀어보시면 Visual Studio 2008용 프로젝트와 소스 그리고 CC65용 소스가 있습니다.
Quest.exe를 실행시키면 윈도우용 프로그램이고 , CC65.DSK를 AppleWin에 넣고 부팅시키면 아래와 같이 작동됩니다.

사실 앞으로도 작업할 내용은 무지하게 많은데요.
이정도 되겠네요.
1. 한글 오토마타 : 128KB가 되지 않는 컴에서는 메모리 부족 문제 있을듯, 한글 폰트 특성상 폰트를 메모리에 올리면 ㅎㄷㄷ
2. dio계열 함수 또는 어셈블러를 이용해서 직접 파일을 읽어들이는 함수 제작. cc65가 그걸 지원 안하네요.
3. 맵-이벤트 편집 툴 : 실제 게임 구현을 위해서 무조건 필요하지요.
4. 기획 : 이것도 없지요 T.T

저는 여기까지 하고 소스공개하고 도망가려고요 ^^
다음은 누가 이어서 하면 좋겠네요 ㅋ


*************************************************************
이 폴더의 소스들은 window 와 apple상에 가능한 동일한 환경에서
개발과 디버깅을 위해 환경을 구성해본 내용.
*************************************************************
**  준비 해야 할 툴
*
* 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를
* 이용해서 컴파일을 한다. 생성된 quest 파일은 cc65.dsk로
* ( Makefile에 보면 최종 생성 파일을 quest 으로 설정 )
* 넣어서 appwin에서 확인 가능하다.
* a.bat 파일을 이용해서 생성된 파일을 cc65.dsk로 넣는다.
  apple 쪽 실행파일은 'Q' 이다.
* add2.bat를 이용해서 이미지들을 cc65.dsk로 넣는다.
  ex) add2 WALL.SPK wall.spk
       -> wall.spk 파일을 WALL.SPK 이라는 이름으로 cc65.dsk 에 넣음
*************************************************************
윈도우 스프라이트를 표시하기 위한 테스트 프로젝트
*************************************************************
기본적인 win/ap 공용 구조
- draw 와 기본적인 껍데기는 개별 파일을 사용하지만
  로직이 들어 있는 gamemain.c 파일은 동일한 것을 사용해서
  apple 와 windows에서 동일한 디버깅이 가능하게 설계했음.
                         WIN                     AP
container layer        -----                    -----
                         test1.cpp             quest.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은 quest.c 에 내용이 들어 있다.
void KBDInputProcess(char * pParam);       // 키보드 입력 작업
void DrawProcess(char * pParam);            // 화면 그리기 작업
void RuleProcess(char * pParam);             // 기타 다른 룰처리 부분
*************************************************************
* 메모리 구조
*************************************************************
- $986 ~ $1FFB : 벽이미지와 백이미지가 들어 있음. ( 800부터 시작하면 초기에 basic 코드 부분 실행 공간이 없음 )
- $6000 ~ $61E4 : 맵데이터가 들어 있음.
- $61F4 : 프로그램 시작 번지
*************************************************************
* apple의 cc65.dsk 안의 파일 설명
*************************************************************
HELLO     : basic 실행 파일, 초기에 이미지들을 메모리로 올리는 역할
              실행파일 Q를 자동 실행
SPR1.SPR  : 테스트 이미지 파일, 사용하지 않음
WALL.SPK : 벽과 백그라운드 이미지 모음 파일, AppleSpriteMan으로 제작
MAP.DAT  : 맵데이터 파일, bgame1.dat를 이 파일명으로 저장
               add2.bat MAP.DAT bgame1.dat
Q           : 실행 파일명
*************************************************************
AppleSpriteMan.exe
* .spr 을 생성/보기 가능한 툴
* 새로 추가된 기능
  - 여러개의 spr 파일을 동시에 열어서 편집하거나 볼수 있다.
  - bmp파일을 읽어서 spr 파일로 변환 가능
    ( 현재 bmp 파일은 256 color만 가능하고 디더링 기능 없음 ^^
      누가 기발한 디더링 로직 알려 주세요 ^^ 하지만 디더링이 된다고 해도
      결국은 도트작업 필요할듯 함 )
  - .lst 파일에 .spr을 묶어서 생성할 .spk 파일의 항목을 기록한다.
    생성된 .spk의 로그를 확인하려면 merge_spk_file.log 파일을 보면 된다.
  - AppleSpriteMan.ini의 START_DATA_PTR 항목에 데이터가 시작하는 번지를 적어 두면
      생성된 merge_spk_file.log 로그 파일에 번지수들이 자동 계산되어 보인다. 
*************************************************************
** 기타
* a.bat : cc65.dsk 파일에 생성된 quest 파일을 추가 한다.
* windows의 경우는 spr 파일을 LoadSpr()에서 읽어 들였지만
  apple의 경우는 cc65에서 바로 dsk에서 읽어들이는 함수가 없다.
  때문에 미리 dsk에 spr파일을 넣어두고 , hello 에서 dos가 부팅될때
  메모리를 올리는 방식으로 처리 하였다.
  LOAD HELLO 를 해서 LIST 명령으로 내용을 확인해 보면 된다.
* 추후에 cc65의 dio계열 함수를 이용해서 dsk에서 읽어 들이는 부분 추가해야함

PS: 아직도 조금 좌표가 안 맞는 부분있는데요. 그냥 마무리 했어요. ^^

댓글 없음:

댓글 쓰기