DC-SWAT Forum

Полная версия: Нужна помощь с VFS в kallistiOS
Вы просматриваете yпpощеннyю веpсию форума. Пеpейти к полной веpсии.
Всем доброго времени суток)
Столкнулся со странной проблемой при разработке игры на ДС. Когда я создал образ для файловой системы благодаря макросу "KOS_INIT_ROMDISK( romdisk_boot );" всё работает отлично до тех пор, пока файлы в данном образе не превышают 16мб. Если файлы превышают этот размер, игра перестаёт запускаться, просто черный экран(
В инструкциях написано что VFS не имеет никаких ограничений по количеству папок и размеров файлов, так что странно получается.
Я пробовал разные файлы для теста закидывать, толку ноль.

Спасибо за внимание. Надеюсь кто-то Стыкался с этим, либо имел возможность загружать более чем 16 мб файлов в VFS.

P.S. В консоль вроде при этом ничего не выкидывает, но я сейчас снова проверю.
(16.06.2019 21:56)TeMaToS писал(а): [ -> ]либо имел возможность загружать более чем 16 мб файлов в VFS.

никто не имел и не будет иметь такой возможности
ну и на самом деле там менее 16-ти мегабайт

что такое ROMFS, это RAM диск, а сколько у дрима оператики? правильно, 16 мегабайт, при этом область до 0x8C010000 KOS не трогает плюс стек в конце памяти плюс ядро использует память, плюс твой код тоже требует памяти, в лучшем случае для фалов остаётся 14-14,5 мегабайт

выход один, использовать носитель
(16.06.2019 22:31)megavolt85 писал(а): [ -> ]
(16.06.2019 21:56)TeMaToS писал(а): [ -> ]либо имел возможность загружать более чем 16 мб файлов в VFS.

никто не имел и не будет иметь такой возможности
ну и на самом деле там менее 16-ти мегабайт

что такое ROMFS, это RAM диск, а сколько у дрима оператики? правильно, 16 мегабайт, при этом область до 0x8C010000 KOS не трогает плюс стек в конце памяти плюс ядро использует память, плюс твой код тоже требует памяти, в лучшем случае для фалов остаётся 14-14,5 мегабайт

выход один, использовать носитель


Аааа, вот как) Спасибо) Значит правильно догадывался)
А можешь пожалуйста посоветовать как переключать хотя бы эти образы? Я просто очевидно для текстур и музыки в игре использую эту VFS, а ппц как мало 16мб для всего. Диски же имеют 1 гб памяти и понятно что большею часть памяти занимают текстуры а не програмный код(ибо это был бы дурдом). Так что я припускаю либо они в RAM с ROM закидывают определенное количество текстур перед запуском каждого уровня, либо напрямую(directly) вытягивают с ROM текстуры и звуки.
так подгружай в нужный момент то что тебе надо с диска
сейчас ты грузишь из /rd/, а надо с /cd/
на пальцах тяжело объяснить, если есть какой то код в качестве примера, то кидай, я подправлю чтоб ты видел отличия
(17.06.2019 00:04)megavolt85 писал(а): [ -> ]так подгружай в нужный момент то что тебе надо с диска
сейчас ты грузишь из /rd/, а надо с /cd/
на пальцах тяжело объяснить, если есть какой то код в качестве примера, то кидай, я подправлю чтоб ты видел отличия

Ухх, мой исходный код уже 25к строчек с плюсом. Думаю не очень удобно для примера будет. Сейчас я короткий примерник настрочу:

Код:
#include <kos.h>

int stage = 1;
int boss1Dead = 0;
int boss2Dead = 0;

extern uint8 romdisk_boot[];
KOS_INIT_FLAGS(INIT_DEFAULT | INIT_MALLOCSTATS);
KOS_INIT_ROMDISK( romdisk_boot );



int main(){
   while(1){
       if(stage == 1){   // level 1
           load_texture("/rd/gfx/level1/bossTxt");
           if(boss1Dead)
              stage = 2;
       }
       if(stage == 2){   //  level 2
           //  Как нить поменять ромдиск
           load_texture("/rd/gfx/level2/bossTxt");
           if(boss2Dead)
              stage = 3;
       }
   }
    
}
так тут всё просто

load_texture("/cd/gfx/level1/bossTxt");

создаёшь в корне диска дерево каталогов /gfx/level1/ и кладёшь туда свой bossTxt

с остальными файлами проделываешь тоже самое

(17.06.2019 01:14)TeMaToS писал(а): [ -> ]Ухх, мой исходный код уже 25к строчек с плюсом. Думаю не очень удобно для примера будет.

три клика мыши Smile
(17.06.2019 01:28)megavolt85 писал(а): [ -> ]так тут всё просто

load_texture("/cd/gfx/level1/bossTxt");

создаёшь в корне диска дерево каталогов /gfx/level1/ и кладёшь туда свой bossTxt

с остальными файлами проделываешь тоже самое

(17.06.2019 01:14)TeMaToS писал(а): [ -> ]Ухх, мой исходный код уже 25к строчек с плюсом. Думаю не очень удобно для примера будет.



три клика мыши Smile

йоооо) то всё было так элементарно?Big Grin
даже не нужно инициаций никаких проводить?Big Grin(Посмотрел в мануалке, нужно только одно из этих иницииировать int cdrom init() int iso init())
Большущее спасибо тебе)

Цитата:три клика мыши Smile

А почему ты написал 3 клика мыши?)
Типа это панты для тебя?)

Ах да, кстате, и в чём тогда фишка такой виртуалки файловой системы в раме? Она ж типа для других процессов более важна. Для скоросного вытягивания файлов?
Только что всё поправил, пушка. Даже не могу сказать что png2pvr дольше перетягивает текстуры. Разве что шумы в музыке и звуках появились. Использую для bg music oggvorbis, а для sfx обычную snd_sfx_load("/cd/...").
С oggvorbis всё хорошо, музыка норм воспроизводится. Но вот snd_sfx_play(sfxThunder, 254, 128); и другие sfx-ы дают только помехи(
(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Посмотрел в мануалке, нужно только одно из этих иницииировать int cdrom init() int iso init())
не нужно, оно при старте ядра само инитится

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]А почему ты написал 3 клика мыши?)
Типа это панты для тебя?)

в geany замена /rd/ на /cd/ во всех файлах проекта делается в три клика мышью Big Grin

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Ах да, кстате, и в чём тогда фишка такой виртуалки файловой системы в раме? Она ж типа для других процессов более важна. Для скоросного вытягивания файлов?

допустим тебе надо запустить бинарь и отрисовать красивый загрузочный экран, а потом что то долго грузить с диска, вот в этом случае и полезен рамдиск

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Разве что шумы в музыке и звуках появились. Использую для bg music oggvorbis, а для sfx обычную snd_sfx_load("/cd/...")

KOS далека от совершенства, драйвер привода убог до безобразия он использует PIO чтение что в свою очередь очень медленно и сильно грузит процессор
(17.06.2019 02:47)megavolt85 писал(а): [ -> ]
(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Посмотрел в мануалке, нужно только одно из этих иницииировать int cdrom init() int iso init())
не нужно, оно при старте ядра само инитится

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]А почему ты написал 3 клика мыши?)
Типа это панты для тебя?)

в geany замена /rd/ на /cd/ во всех файлах проекта делается в три клика мышью Big Grin

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Ах да, кстате, и в чём тогда фишка такой виртуалки файловой системы в раме? Она ж типа для других процессов более важна. Для скоросного вытягивания файлов?

допустим тебе надо запустить бинарь и отрисовать красивый загрузочный экран, а потом что то долго грузить с диска, вот в этом случае и полезен рамдиск

(17.06.2019 01:43)TeMaToS писал(а): [ -> ]Разве что шумы в музыке и звуках появились. Использую для bg music oggvorbis, а для sfx обычную snd_sfx_load("/cd/...")

KOS далека от совершенства, драйвер привода убог до безобразия он использует PIO чтение что в свою очередь очень медленно и сильно грузит процессор

Цитата:не нужно, оно при старте ядра само инитится
А, типа когда ставишь init defaults)

Цитата:в geany замена /rd/ на /cd/ во всех файлах проекта делается в три клика мышью Big Grin
еее)) шаришь) в notePad++ аналогично) replace with и ставишь чем заменить)
кайф с такими текстовыми редакторами работать^____^

Цитата:допустим тебе надо запустить бинарь и отрисовать красивый загрузочный экран, а потом что то долго грузить с диска, вот в этом случае и полезен рамдиск

теперь для меня Америка открыта *_____*
(17.06.2019 03:01)TeMaToS писал(а): [ -> ]А, типа когда ставишь init defaults)

не важно, подсистема привода инициализируется в любом случае

(17.06.2019 03:01)TeMaToS писал(а): [ -> ]в notePad++ аналогично

я линуксоид, у меня нет notePad++ Smile
а в notePad++ можно сделать замену сразу в нескольких файлах?
(17.06.2019 01:43)TeMaToS писал(а): [ -> ]С oggvorbis всё хорошо, музыка норм воспроизводится. Но вот snd_sfx_play(sfxThunder, 254, 128); и другие sfx-ы дают только помехи(

Возможно ты не внимательно прочитал вот это:

Цитата:This code is only usable for simple WAV files containing either 16-bit samples (stereo or mono) or Yamaha ADPCM (4-bits, stereo or mono).
Also, all sounds played in this manner must be at most 65534 samples in length, as this does not handle buffer chaining or anything else complex.
For more interesting stuff, you should probably look at the sound stream stuff instead.
URL ссылки