반응형

안녕하세요 한기대 학생 전호철 입니다.

궁굼한 것이 생겨서 메일을 드립니다.

 

NDSL예제중에 PAFS/PAFS_Bg 예제를 보면

PA_FSBgLoad(1, 1, 4);

PA_FSBgNameLoad(0, 0, "Large");

요런 함수가 있구요

 

PA_FSBgLoad 이것은 파일의 번호를 사용하고 PA_FSBgNameLoad 이것은 파일의 이름을 사용한다고 나와있습니다.

 

그런데 첨부되는 파일을 보면

 

Large_Info.bin

Large_Map.bin

Large_Pal.bin

Large_Tiles.bin

 

파일 과 Town 파일로 되어 있는걸 볼 수가 있는데요

 

8개의 파일이 첨부되는데

PA_FSBgLoad(1, 1, 4); 이 함수를 쓰면 이 숫자 4는 어떤 파일을 불러오라는 건지 어떻게 확인을 하게 되는건가요?

4라고 했을 때에 Large가 불러와질 수도 있고 Town 이 불러와 질 수도 있는 것 아닌가요?

 

그리고 PA_FSBgNameLoad 를 사용하여 파일 이름으로 불러올 때는 Large Town이라는 것이 파일 명을 읽어와서 불러오게 되는것인가요?

저는 파일명이 앞에이름_뒤에이름.bin 형식으로 되어 있길래

단순히 파일명으로 불러오는 게 아니라 파일 내부에 네개의 구성하는 파일의 인덱스 같은게 있을 것 같다는 생각에 추가되는 bin파일들을 다 열어보았는데요

그런 부분을 잘 못찾겠습니다.

 

마지막으로 네개의 파일이 각각 무슨 정보를 갖고 있어서 그림파일로 보여지는 것인지도 궁굼합니다.

일반 이미지 파일을 저런 형태의 bin파일로 변환하는 유틸이 따로 있는건가요?

 

알려주세요~~~

아….

방금전 드린 메일중에 두번째 빨간색 질문에서요

라이브러리 파일을 뒤적여봤는데 파일이름을 이용해서 파일을 읽어오는게 맞다는 것을 지금 확인했습니다.

 

결국에는 두번째 질문이 첫번째 질문과 세번째 질문으로 이어지게 되네요

 

꼬리 잡기 하면서 소스를 보고 있는데

PA_CompareText 이놈과 PA_FSBgLoad 이놈이 어디에 정의되어 있는건지 몾찾겠습니다.. @_@;;

 

그리고 좀전에 보낸 질문중에 세번째 보라색 질문은 참 궁굼합니다.

 

알려주세요~~

바쁘실 텐데 자꾸 메일을 드려서 죄송합니다. ㅎㅎ

 

제가 PAFS Sprite 부분을 보다가 PA_FSInit() 를 호출했을 때 파일이 여러개 있다면 어떤식으로 파일 넘버를 부여하는가에 대해서 궁굼해졌습니다.

 

파일 추가는 컴파일을 해서 ROM파일을 만든 다음에 하게 되는데 이미 파일의 갯수를 알고 있는 것도 좀 궁굼하구요.

그리고 파일 넘버를 부여하는 부분에서 어떤 순서대로 파일 넘버를 부여하는 것인지가 궁굼해졌습니다.

그래서 또 라이브러리를 뒤적거려봤는데

 

아래 부분을 찾을 수 있었는데요

extern inline u32 PA_FSInit(void)

{

REG_EXMEMCNT &= ~0x80; // GBA cart access

PA_FSAllInit();

return (PA_FSSys->Nfiles);

}

char *PAFSStart = (char*)PA_GBA_CART;

 

void PA_FSAllInit(void){

while (!((PAFSStart[0] == 'P') && (PAFSStart[1] == 'A') && (PAFSStart[2] == 'F') && (PAFSStart[3] == 'S') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart+=256;

 

PAFSStart += 8;

PA_FSSys = (PAFSSystems*)PAFSStart;

 

while (!((PAFSStart[0] == 'D') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'R') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;

 

PAFSStart += 8;

PA_FSFolder = (PAFSFolders*)PAFSStart;

 

while (!((PAFSStart[0] == 'F') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'L') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;

 

PAFSStart+=8;

PA_FSFile = (PAFSFiles*)PAFSStart;

 

while (!((PAFSStart[0] == 'B') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'N') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;

 

PAFSStart+=8;

}

 

 

파란색으로 해놓은 부분이 이해가 잘 안됩니다.

CART 라는 것은 또 무엇인지…. @_@;;

PAFS_Mod 예제에서

#define PA_PlayMod ( mod_snd ) PA_PlayModEx((u8*)mod_snd);
FS에서 mod 파일을 재생한다.
Parameters:
[in] mod_snd 재생할 .mod 파일 이름.

이상한 점은 PA_PlayMod 의 파라메터가 파일 이름이라고 했는데 아닌 것 같습니다.
첨부되는 파일 이름은 modfile.mod 인데 쌩뚱맞게
FS_mod 라는 것이 도데체 어디서 튀어나온 것인지 모르겠어서 또 라이브러리를 뒤적여 보았는데요. 하지만 이 함수가 어디에 선언되어 있는지 찾지 못했습니다. ㅠ.ㅠ
사운드 관련 라이브러리에 있을 줄 알았는데 없네요
다른 파일들도 뒤져봤는데 없었습니다.
아.... 다 찾아보기는 시간이 부족하네요

궁굼합니다. 파라메터에 넘어가는 것이 파일 이름이 맞는건가요?

반응형
Posted by Real_G