Просмотр полной версии : Идея для полезной хомки. Она же просьба.
День добрый. Возникла неплохая (как мне кажется) идея для хомки.
Как вы, наверно, знаете, при тюнинге интерфейса PSP может возникать ситуации с нехваткой места во flash0. У нас на форуме есть даже целый мануал на тему освобождения места, однако там хоть и нет ничего сложного, однако есть умельцы, которые после таких очисток с бриком сидят...
Я покопался в этом тюнинге и так получается, что замены двух файлов (служебного и японского шрифта) хватит для самого разухабистого тюнинга, который только может быть.
Суть в следующем:
- с хомкой идут два комплекта шрифтов (оригинал и мелкие на замену)
- при запуске пользователю нужно лишь сделать выбор между:
1. нажать Х для освобождения места во флэш0
2. нажать О для восстановления шрифтов умолчанию
Если такая хомка будет, то мануал по этим препарированиям флэша можно будет скрыть подальше от детских неопытных глаз :)
Да, только еще проверку добавить на достаточное количество места для замены на оригиналы. И если его мало - сказать пользователю, чтобы тюнинг убирал.
Желательно чтобы всё по русски было, но можно и в стандартном консольном стиле. Надеюсь что кто-нибудь найдет время и возможность всё это воплотить. Заранее спасибо!
Ух, страшно мне с флэшом работать :)
Вообще прога по идее очень простая, флэш доступен как диск. Только я
не совсем в курсе специфики его работы.
Вот еще вопрос по описанию функционала:
//1. нажать Х для освобождения места во флэш0
А что освобождать, в смысле стирать ?
И еще, можно для отладки просто левые файлы копировать
и удалять, это не на какие чексуммы не повлияет ?
нет. но лучше клади мелкие файлы и в /vsh/resource/
тогда стопудова ничего не брикнется. сам проверял (случайно :D)
там есть папка /font/
вот в ней лежат два файла: gb3s1518.bwfon и jpn0.pgf
родные они весят больше мега каждый. но есть чем их заменить - файлы с таким же названием, но уже всего по 30кб. то есть родные стираем, подмену кладем и наоборот.
при этом ничего кроме японского шрифта не пропадет
Готов взяться за написание этой хомки. Но только если тестить бдет кто-то другой. На своей разъединственной штуковине я это тестить не рискну. (:
Это ДаркАлексу все баблом на новую ЗЫЗу скидываются, а мне никто новую не купит. (:
Лчше уж буду игрушки писать, оно мне как-то ближе... Да и ваще не понимаю я всех этих заморочек с тюнингом интерфейса. Я его вижу меньше одной сотой времени, проводимого за PSP.
тебе интересно программировать, а мне в последнее время - понять как можно всё изменить)) вот чем приходится заниматься, когда игр хороших нету)))
потестю я на своей, не проблема :) ты главное формат флэша ради эксперимента не забабахай)
Не, ну я ж не знаю, что там выйдет по началу-то. Я ж в слепую считай работать буду... Так что не соглашайся, запорешь себе ЗЫЗу первым же билдом. (:
Да ладно, это ж просто файлы, главное имена не перепутать :)
SeeD, вот вопрос, а если gb3s1518.bwfon и jpn0.pgf запороть при отладке,
PSP не брикнется ?
как я только что выяснил - нет))
я тупо удалил два эти файла и включил PSP
она мне выплюнула синий экран и повисла. выключил, включил, зашел в рекавери, вернул оригиналы на место и консолька ожила :)
вот, кстати, то на что надо заменять - http://pspx.ru/forum/showpost.php?p=462691&postcount=75
идея хорошая однако есть высокая опасность брикнуться во время отладки. тут надо или чип ставить чтоб прошится назад или чтото ещё зарание придумывать, видел мануалы как восстановить прошку через рековери но сам не пробовал...
насчёт замены возможно имеет смысл вместе с приложением распространять архив с набором файлов по умолчанию и просто ево распаковывать при сбросе на "умолчания".
ну а я разве по другому предложил?)
mortem, напишешь ? или мне :)
я посмотрел пару исходников, на неделе напишу, вроде ничего такого, тем более если через рекавери все восстанавливается.
В общем алгоритм такой:
1) вместе с программой идут файлы пустышки (ну или подмена).
перед заменой делается копия файлов из флеша в каталог хомки (при этом проверяется место на стике)
а затем уже заменяются на файлы пустышки.
2) перед восстановлением прежних версий проверяется место
на флеше, если хватает, то заменяем.
3) Проверяется для обоих опреаций, что зарядки PSP не менее 50% и она не заряжается в это время (типа как у дарка алекса)
4) Нужно предусмотреть проверку версии прошивки, это в 3.30 и 3.40 ???
pspowner
24.06.2007, 15:58
Да дело то вроде пустяковое... но мне лень
wSlava, лучше IDE. А я пока свой Кримсон не допишу ничем не буду заниматься. А то ваще не допишу. ):
Потом - возможно, хотя думаю кто-нить же напишет к тому времени...
Слава,
1) не пустышки и правильные файлы для замены. это важно
2) лучше оригиналы раздавать в комплекте с хомкой. так надежнее. а то мало ли чего там у юзверя лежит.
3) для 303-340 они точно подходят. скорее всего они с 150 не менялись, но стопроцентно сказать не могу
pspowner
26.06.2007, 20:20
Тяк, это первая версия. Не брикает ПСП, у меня работает нормально, т.е. во флеш0 судя по размерам файлы меняются туда/обратно. Насколько правильно там эти китайские шрифты восстановились я не проверял)
Здесь полная сборка fcleaner с бекапом моих шрифтов и тех что дал Сид.
*************************
Прошу добровольцев тестировать))
pspowner
26.06.2007, 20:22
Эээ. важное замечание. Прога ещё в стадии написания, так что пока нет проверки на свободное место и уровень зарядки батареи. Об этом пока надо озаботится самому)
здорово ^_^
работает)))
а проверка места штука хорошая)) у меня вот не хватило :)
Огромное спасибо! Еще чутка доработать и будет просто персик.
Проверку на батарею можно не делать. Только на свободное место
pspowner
26.06.2007, 20:45
у меня вот не хватило :)
А что это значит? Восстановил файлы или нет?
ну прога то посчитала что да. а вот PSP нет)
но никакого брика. просто синий экран. я ручками восстановил.
pspowner
26.06.2007, 23:50
ну прога то посчитала что да. а вот PSP нет)
но никакого брика. просто синий экран. я ручками восстановил.
Ну чтож ты так... и опять не понял что и как.
1) Очищение отработало нормально? (по крестику)
2) Восстановление(по кружку)? Какой синий экран? В программе или при перезапуске?
3) Точно места на стике нехватало?
Давай подробно короче, на это просто может быть завязан один из способов проверки свободного места. Да и просто понять где чего ловить..
Да, и ещё, ты из программы выходил, или тестил очистку/восстановление в 1 сессию...
1) отлично сработало
2) по кружку. нажал. она поработала. сказала что всё гуд. я вышел и бах.... синий экран "смерти"
3) стопудова
делал за разные сэссии.
завтра уберу весь тюнинг (просто бэкап на рабочем компе) и потестю еще разок :)
pspowner
27.06.2007, 00:29
Ну вот, я же не из праздного любопытства спрашиваю... ))
- когда ты в ручную восстанавливал, ты перезаписал только эти 2 файла? Остальное менять не пришлось? Или ты всю папку font перезалил.
- если эти два файла просто стереть - будет синий экран? Или если эти файлы повреждены будет синий экран?
Вобщем да, похоже что из-за места. Просто я сравнил записаные файлы во флеш0 со своим бекапом с помощью fc.exe и они оказались идентичны.
только эти два. больше ничего не трогал.
синий экран будет в любом случае - если стереть или если повредить.
да точно из-за места, я стопроцентно уверен.
Ой, тут работа кипит :)
pspowner, выложи исходники посмотреть, а то я с флешем не работал, тоже интересно.
Я начал было писать, вот что нашел, если надо - насчет сколько места осталось:
http://forums.ps2dev.org/viewtopic.php?t=6950&highlight=flash+space+free+art
и насчет батарейки есть функция scePowerIsLowBattery(), проверяющая, что лампочка заряда PSP мигает, в этот момент я думаю лучше не рисковать :)
Еще в SDK есть пример nand, так вот там есть указание, что при работе с флешем его
надо монопольно лочить для изменений и после разлочить:
LockFlash();
...
UnlockFlash();
Может это поможет побороть синий кран ...
да экран синий был только лишь из-за того, что места не хватило и шрифт битый получился. если бы не нехватка места - всё было бы пучком :)
проверка на мигание рулит!
pspowner
27.06.2007, 09:51
Ой, тут работа кипит :)
pspowner, выложи исходники посмотреть, а то я с флешем не работал, тоже интересно.
Для меня исходники последнее время стали чем-то личным)) Ну ладно, вечером выложу. Просто стиль у меня несколько корявый...
Пока вот моя прога для смены названия прошивки на 3.40 ОЕ(там запись во флеш0):
Бинарник - http://www.pspx.ru/forum/showpost.php?p=440737&postcount=14
Исходник - http://www.pspx.ru/forum/showpost.php?p=459083&postcount=18
Я начал было писать, вот что нашел, если надо - насчет сколько места осталось:
http://forums.ps2dev.org/viewtopic.php?t=6950&highlight=flash+space+free+art
и насчет батарейки есть функция scePowerIsLowBattery(), проверяющая, что лампочка заряда PSP мигает, в этот момент я думаю лучше не рисковать :)
Слав, я это тоже читал. Они предлагают считать сумму размеров всех файлов во флеш0 и вычитать из общего объёма. То не наш путь, по крайней мере мне он кажется диким и не очень точным. Я больше склоняюсь к варианту создания временного файла на флеш0 куда будет записываться некая инфа - сколько сумел записать, столько свободного места и есть. Потом файл удаляется. Или просто сделать проверку - а записались ли файлы полностью, если нет - вернуть как было. На счёт батарейки спасибо, думаю 1 лишняя строчка не повредит.
Еще в SDK есть пример nand, так вот там есть указание, что при работе с флешем его
надо монопольно лочить для изменений и после разлочить:
LockFlash();
...
UnlockFlash();
Может это поможет побороть синий кран ...
Это я тоже знаю - вроде в примере dumpipl было, но лочить флеш не стал, и так всё прекрасно работает. По крайней мере я активно тестил свой VChanger который тут в теме по тюнингу валяется, так вот он без лока и тоже всё шикарно работает.
С синим экраном похоже всё ясно, Сид написал. И потом у меня на непрокаченной ПСП(есть место во флеш0) всё работает и без синих экранов. Вобщем мне кажется что страх перед флеш0 несколько надуманный...
да экран синий был только лишь из-за того, что места не хватило и шрифт битый получился. если бы не нехватка места - всё было бы пучком :)
проверка на мигание рулит!
Да, но ты проверь на всякий случай на непрокаченной ПСП, чтобы уж я был уверен что прога не только у меня работает.
Проверку батарейки и места добавлю вечером. Также может быть изменю интерфейс и вклею подсчёт CRC чтоб копирайты не меняли)) Ну параноик я - никуда не деца.
на чистой всё супер. быстро и чётко :)
если будешь красоту наводить, то слова тоже (ИМХО) стоит чуток изменить. А то они пугающее))) Я бы вместо второй строчки просто пропуск оставил. И там еще в одном месте очепятка (хотя ты наверно и сам знаешь)
pspowner
28.06.2007, 00:06
эээ переносца. Есть кое-какие засады.
pspowner
У флеша ограниченное количество перезаписи, если я не ошибаюсь. Большое, но ограниченное. Поэтому вариант с записью файла по моем не очень дачный.
И почему ты считаешь не точным вариант с подсчётом уже имеющихся файлов? Общий размер флешки ведь известен...
pspowner
28.06.2007, 08:54
pspowner
У флеша ограниченное количество перезаписи, если я не ошибаюсь. Большое, но ограниченное.
А это вот ты сейчас что-то конкретное имеешь ввиду, или вобщем?
То понятно что у любого накопителя есть предельный ресурс, да что там накопителя, вобще у любого устройства. Спорю, что и обычный дверной замок на 1 * 10^99 раз не откроется. Тоже самое с нандом и стиком, ресурс есть, но он маловажен ибо черезчур большой.
Поэтому вариант с записью файла по моем не очень дачный.
И почему ты считаешь не точным вариант с подсчётом уже имеющихся файлов? Общий размер флешки ведь известен...
Этот вариант(с тест-файлом) я уже отбросил как невалидный, но по другой причине. Такой способ приводит к "забиванию" свободного места на flash0. Т.е. после того как запись в тестовый файл была остановлена в связи с отсутствием места, я удаляю этот файл, но место на flash0 всё равно остаётся как бы занятым тестовым файлом. Вчера уже 2 раза полностью перепрошивал ПСП по этому поводу, ибо даже 2 коцанных файла по 32Кб не влезали - соотв. ПСП не грузилась.
Так что как ни крути, а считать файлы придётся. А неточным я его считаю потому, что объём информации записанной в файл меньше, чем фактический размер файла на накопителе. А размер то файла будем определять по sceIoLseek32, а это не размер на диске. Это количество байт в файле. И потом, неизвестно сколько ещё служебной и/или скрытой инфы записано на флеш0, которая занимает место. Ну а если есть bad sectors(blocks)??
Да, мысль понял. А к флешу на уровне кластеров подобраться никак нельзя?
pspowner
28.06.2007, 13:06
Ну xер знает. Поглядел тут Лёхины исходники oeflesherа и IDStorageChangerа - там не использует кластеров он юзает библиотеку libpspvshbridge - не знаю что это такое, но там интересные есть вещи -
vshLflashFatfmtStartFatfmt(); - логический формат ф0
vshIdStorageLookup и.т.п.
по программе - есть ещё идея.
Суть ведь такая. При замене больших файлов на маленькие - никаких проблем нет, а вот наоборот да при нехватке места получается семибрик.
Вот я и думаю, может покоцанные шрифты из ф0 сразу не убирать, а переименовать. И попытаться восстановить большие шрифты - если запись провалица - сообщить о нехватке места юзеру и вернуть покоцанным файлам старые названия. Со стороны будет выглядеть как будто прога определила нехватку места, полубрика тоже не будет...
Вобщем попробую такой вариант, если опять какие подводные камни будут - тогда уже буду делать с подсчётом файлов.
Как я понял фишка как раз в том, чтобы эти файлы далить, тем самым высвобождая место на флеше. Если их просто переименовывать, то я чего-то в этой проге не понимаю... (:
pspowner
28.06.2007, 13:40
Как я понял фишка как раз в том, чтобы эти файлы далить, тем самым высвобождая место на флеше. Если их просто переименовывать, то я чего-то в этой проге не понимаю... (:
Не делины а заменены на обрезанные. Это уже сделано и работает. Вся фишка в том что Сиду нужно чтоб эти файлы ещё и восстанавливались по желанию. Вот тут и засада, что нужно вместо 2х файлов по 32Кб записать 1 и 1.5 мегабайтные, а места для них после тюнинга может не быть. Вот я и предлагаю 32КБтные не удалять, а переименоваь.
да и отлично. 240 кб свободного места там без всяких извращений остается, так что 2*32 влазят как дети в школу!
а потом просто проверить размер залитого шрифта и если он окажется не такой как надо, то потереть его наф, правильно переименовать малышей и пнуть юзера чтобы тюнинг убирал)
pspowner
28.06.2007, 14:53
Тока есть 1 трабла, после моей программы, если места было недостаточно, у юзера места на flash0 точно не будет, брик он не получит, но путь ему только в рекавери на откат.
Хотя для тех у кого место есть, никаких проблем - всё будет работать на ура.
ах вот почему мне откат делать пришлось))))))) хитрый какой косяк...
pspowner
29.06.2007, 10:20
ах вот почему мне откат делать пришлось))))))) хитрый какой косяк...
Дык яж написал что место забивается... Вобщем буду делать определение места с подсчётом фалов, как пс2дев и Мортем советует... пока беру паузу до понедельника.
pspowner
18.07.2007, 16:01
А чего ап? Ввиду выхода м33 это ещё актуально?
конечно) что собственно изменилось? :)
pspowner
19.07.2007, 18:50
Ну ладно, ща попытаюсь доделать...
А у меня были глюки со шрифтом на какой-то игре. Как я понял, в файл японского шрифта ещё внедрён и английский. Я не помню, какая это была игра, но весь текст в игре просто сбился до нечитабельности. Когда вернул родной файл с японским шрифтом, всё стало нормально.
pspowner
19.07.2007, 22:05
Всё стёр до финального релиза.
pspowner
23.07.2007, 16:03
Чуток подправить осталось
http://img372.**************/img372/9654/screen1bk1.jpg
pspowner
24.07.2007, 12:12
Ну вроде всё готово. Можно релизить.
http://seed.10gb.ru/Homebrew/FCleaner.rar
Что есть -
+ Замена и восстановление файлов шрифтов на flash0.
+ Проверка свободного места.
+ Русские буквы.
+ Отлов нештатных ситуаций. Например провал функции malloc.
+ Проверка целостности копирайта (это для всяких уродов ворующих проги- кселлбом и псп-клуб)
Спасибо:
- xorloser за pspsdk for win32
- wSlava за PSPxIDE
- Mortem за MGF
:prankster:
pspowner
24.07.2007, 12:24
Это Мортем сделал фреймворк. Там работа со шрифтами, графикой ну много всего интересного, собственно я пользовался только шрифтами...
http://www.pspx.ru/forum/showthread.php?t=37390
И тут - http://elmortem.mirgames.ru/?path=psp
P.S. + Проверка на низкий заряд батарейки тоже работает, проверил. Где-то в районе 3-4%% при мигающей лампочке прога выдаёт соответствующее сообщение и отказывается работать.
P.P.S. Решил траблу с компиляцией без kxploita. Просто make из командной стоки :)
чтобы было также изпод ИДЕ нужно подправить буилд.мак
all: $(EXTRA_TARGETS) $(FINAL_TARGET)
kxploit: $(EXTRA_TARGETS) $(FINAL_TARGET)
и будет всё красиво.
pspowner
25.07.2007, 19:12
Есть мысли по улучшению.
1) Мне вот кажется или я видел прогу которая не даёт выключить консоль во время своей работы...? когдато давно но вроде я видел. Неплохо было бы добавить в прогу такую фитчу.
В сэмплах нашёл забавную прогу, это в папке power, нечто похожее. Она отлавливает нажатия рычажка включения...
cbid = sceKernelCreateCallback("Power Callback", power_callback, NULL);
scePowerRegisterCallback(0, cbid);
2. Ну разобраться со спрайтами. Чтобы облагородить интерфейс
3. Сейчас проверка целостности копирайта осуществляется простой суммой.
Ну типо так -
char copyright[] = "Copyright";
for (cnt=0; cnt<sizeof(copyright); cnt++) sum+=сopyright[cnt];
if (sum!=CORRECT_SUM) sceKernelExitGame();
Это в принципе можно допереть как обойти, планирую добавить циклический сдвиг по типу sum=sum<<1;
Но это всё пока мысли....
Вобще всётаки хочу реализовать свою заветную мечту - написать собственную читалку )) Как заядлому чтецу мне просто необходимо так самовыразиться ))
Если подержать кнопку ~4сек то даже без обработки калбека у меня гасится.
pspowner
25.07.2007, 20:26
так собственно вопрос-то, как(и можно ли) обработкой колбека заставить ЗЫЗ не вырубаться... то что она без обработки вырубается это понятно.
Я имею в виде что если даже я сделал пустой калбек на павер, она всёравно вырубается если подержать...
pspowner
26.07.2007, 09:50
Т.е. вырубается она безусловно... просто даётся проге 4 секунды на то чтобы она прибила все свои касяки.
Вобще можно проверить, повесить на повер колбек бесконечный цикл, и поглядеть вырубится ли...
Будет некоторое время мигать лампочкой но потом всёравно погаснет.
pspowner
18.10.2007, 23:35
Дык вроде в какой-то из своих прошивок или их интсаллеров Дакс делал запрет на вырубон... интересно как
DAX запретил вырубать во время работы с flash0 в рекавери меню.
Программистам советую поставить мою сборку пандоры, в результате чего любые косяки при программировании приведшие к брику будут решены выключением ПСП и включением ее с удержанием "L". (можно будет восстановить нанд дамп и прошивка будет такойже что и была несколько минут назад до запуска закосячившей программы)
А также с помощью моей сборки можно получить usb доступ к flash0 и flash1 или запустить какое-нибудь home-brew, так что кроме тупого отката можно еще попытаться продиагносцировать ситуацию (что к примеру в flash0 у нас испортилось). Ну и конечно же возможность перепрошивки на разные кастомки (можно из нанд дампов) чтобы проверить работу программ под другой прошивкой.
(под слим конечно моя сборка лишь поможет с перепрошивкой до 3.71М33-2, весь дополнительный сервис лишь для Phat)
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot