Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Talking_Sword

Страницы: Назад 1 2 3 4 [5] 6 7 8 9 ... 35 Далее
121
Прошу посоветовать новые игры для Mega Drive, а также интересные хаки. Под "новыми" имею в виду те, что вышли уже задолго после окончания выпуска приставки, то есть 2010 и новее.

Интересуют только те игры, у которых размер ROM-а не более 4 МБ (или 4194304 байт, или 32 мегабита). Также, не интересуют игры, использующие SRAM-память в картридже. Также, нужно, чтобы полную версию игры можно было скачать в интернете.

Также интересуют хаки. Хаки желательно не слишком "простенькие", в которых не очень много изменений.

Насчет жанров, все точно так же, как и в теме по SNES: люблю платформеры, а также "просто аркады". Что касается жанра STG (его тоже можно отнести к аркадам) не большой любитель этого жанра, так что "стандартные" представители со всякими звездолетами\военной техникой не интересуют. Но можно советовать всякое с нестандартной визуальной стилистикой или анимешное.

Не люблю бит-эм-апы и файтинги. RPG и стратегии еще больше не люблю.

Это уже нашел сам:

Eyra
Devwill Too
FoxyLand
Old Towers

Про эти игры тоже знаю:

Xeno Crisis
Tanzer
Demons of Asteborg
Life on Mars

122
Но ценник ломят они конешн. Такие игры 2200 не стоят уж точно.
Можно скачать пиратскую версию. Возможно уже даже выложили (не проверял). Я сейчас стараюсь не покупать игры, так как "прямого" способа оплаты сейчас нет, а всякие "посредники" берут коммисии, не особо хочется им платить. Да раньше не покупал игру, если она достаточно популярная\имеет какую-то свою фанбазу, ибо в таком случае и без меня получат свои деньги. А вот покупал не слишком известные, но годные игры, больше в поддержку того, что такое кто-то выпускает.
А в эту гаму играл? https://store.steampowered.com/app/1402120/9_Years_of_Shadows/
Нет, первый раз вижу.

123
VitanoL, как играется?
Огорчает только что INTI CREATES никак не хотят делать русиш в своих играх. А пираты переводить их игры не берутся.
Да не страшно. Игра не на Японском, и на этом уже спасибо.

124
Hard'n'Soft / Re: Про YouTube и всё такое
« : 02 Декабрь 2023, 06:56:22 »
Freeman665, нет, это не то. Ссылки на другие каналы пользователя в описании канала были и раньше, но раньше была и вкладка "каналы". И на ней некоторые пользователи размещали ссылки на каналы других пользователей. Некоторые еще писали что-нибудь в духе "Мои друзья", "Советую посмотреть" и т.д. А у некоторых пользователей можно было посмотреть и их подписки.

Сейчас же посмотрел у пары пользователей, у которых точно были ссылки на "чужые" каналы на вкладке "каналы" - в описании канала этих ссылок нет, там только "свои".

Вообщем, я совсем не понимаю смысл таких изменений.

125
И там точно подключали не той полярностью.
7805 скорее всего выгорел.

126
Сейчас наткнулся на такую игру - "Yohane the Parhelion: BLAZE in the DEEPBLUE". Уже вышла, но относительно недавно (16.11.2023), так что наверно можно отнести к новостям.

Что интересного:

1. Игра по мотивам аниме "Genjitsu no Yohane: Sunshine in the Mirror" - аниме, по поводу которого у меня были самые лучшие ожидания в этом году. Само аниме - ответвление "Love Live! Sunshine!!", но в фентези-антураже.
2. Игра в жанре платформера. Этот жанр я просто обожаю, к тому же есть у меня такой "запрос" на платформеры в аниме-стилистике, где нужно бы было играть за женского персонажа. Тут, по понятным причинам оба эти условия выполняются. А игровая индустрия, вероятнее всего в силу того, что Японцам не интересен жанр платформеров, нас такими платформерами не балует.
3. Про платформу Windows не забыли. Возможно даже игра изначально разрабатывалась под Windows.

Я что, сплю? Хотя возможно радоваться еще рано, важно, чтобы это еще игралось хорошо.

127
Hard'n'Soft / Про YouTube и всё такое
« : 01 Декабрь 2023, 11:47:51 »
Там еще некоторые ютуберы размещали ссылки на "дружеские" каналы. Это было очень удобно, можно было узнать о других похожих каналах. Подписки там тоже были.

128
Hard'n'Soft / Про YouTube и всё такое
« : 01 Декабрь 2023, 10:25:49 »
Кстати, кто-нибудь заметил? На страницах каналов на YouTube исчезла вкладка "каналы".

Вот совсем не понимаю, чем она им там помешала? Прямо так и представляю, как они сидят там и думают, что бы еще ухудшить. >:(

129
Все-таки надо для начала помярять напряжение на входе и на выходе стабилизатора (во время работы). Заодно неплохо бы померять потребляемый ток.

130
Hard'n'Soft / Наушники от телефона
« : 29 Ноябрь 2023, 17:47:59 »
Сëдня здох правый ух на проводной  аудиотехнике.
Думаю, там с наушником все в порядке. Там, скорее всего, перемозолился провод. Хотя, может еще быть обрыв концов обмотки. Я на Koss Porta Pro оборванные концы обмоток восстанавливал, кстати.

От обрывов концов обмоток, кстати беспроводные не спасут.

131
5 поколение / Лазер ps one.
« : 29 Ноябрь 2023, 17:35:54 »
Кто-то копал эту тему?
Слышал, там при сборке нужна точная юстировка, которую в домашних условиях провести, якобы, нереально.

132
О сайте Emu-Land.net / Re: Пожелание форуму!
« : 28 Ноябрь 2023, 21:22:21 »
Что-то вообще ничего непонятно. В чем пожелание-то? Хотя, вижу сообщение отредактировано, возможно, там изначально было какое-то пожелание.

Но в текущем виде все равно ничего непонятно.

133
Народ, есть, кто из проверенных юзеров, кто на себя возьмёт задачу сдампить GBA карт?
Я бы мог вам помочь, но не уверен, на сколько меня можносчитать "проверенным".

134
Hard'n'Soft / Доработка Burn2Slot
« : 26 Ноябрь 2023, 06:23:15 »
О, вижу мои сообщения перенесли в отдельную тему. тем не менее, переименовал тему, так как она больше не о картриджах, а о правке кода Burn2Slot. Надеюсь, модераторы не будут сердиться.

Идентификаторы можно записать в массив и перебирать - медленно, но просто. Вместо кучи switch, можно использовать словари (std::unordered_map) или множества (std::set), которые быстро находят элемент или позволяют проверить наличие элемента. Также есть простой вариант с массивами: например, у нас id от 0 до 255, определяем массив:
const char* arr[] = {
/* 00 */   "ID00"
/* 01 */ , "ID01"
...
/* FF */ , "IDFF"
};
Тогда простая инструкция быстро даёт значение по ключу: str = arr[id]. Это https://en.wikipedia.org/wiki/Lookup_table.
Про массив и сам думал, но мне кажется, это будет неэффективно, придется делать цикл, который проверяет каждый элемент массива, наверно будет долго. Словари или множества - для моего уровня это слишком сложно.
Talking_Sword, я согласен с wolfer, что компиляторы хорошо оптимизируют. Поэтому тебе надо думать над твоей задачей, а не париться над оптимизацией.
Протестую! Вот именно из-за таких программистов, которые думают над задачей, а не парятся над оптимизацией и выходит множество ПО, которое жрет память как не в себя, и ничего не может показать на устаревшем компьютере, хотя аналоги из прошлого делают то же самое, но при этом куда менее требовательны.

135
Hard'n'Soft / Картриджи под перепрошивку
« : 23 Ноябрь 2023, 16:53:03 »
Явно ведь делаешь для хакинга ромов?
Нет.
If-Else можно продолжать:
Знаю, но слышал, что этим увлекаться не стоит, якобы switch эффективнее. Думаю, может кто-нибудь здесь знает такого разработчика YandereDev? Слышал, что причина тормознутости его игры как раз в том, что он злоупотребляет if-else.

Спасибо всем за советы. Не смотря на предостережения от Sharpnull, все-таки решил убрать return и break из case 2. Chip Erase не запустилось два раза, а это значит, что без break переходит на следующий вариант (в принципе, я знал об этом, но не уверен, стал бы он переходить на default), а также return прерывает функцию вместе с работающим в ней циклом.

Правда скомпилировалось не сразу - в одном месте забыл восклицательный знак в "!=", а потом еще удивлялся, про какую же lvalue говорит мне компилятор. А в функции writeByWord вообще умудрился как-то уничтожить одну "родную" фигурную скобку, когда вставлял туда свой switch.

Но когда исправил ошибки, код заработал с перврго раза. Сегодня уже попробовал прошить LH28F800BJE - микросхема прошилась и даже не сдохла после двух раз (первый раз прошил другой ROM, во второй вернул "старый"). Также прошил MX29LV320E - тоже прошилась нормально.

Осталась только загвоздка с Device ID. В программе просто захардкожены несколько Device ID:

if (((flashid >> 8) & 0xFF) == 0x22 || flashid == 0x7E7E || flashid == 0x57 || flashid == 0xF8)
То есть, если программа не "видит" знакомого Device ID, то считает, что микросхема не определилась. Стоит обратить еще внимание на это: ((flashid >> 8) & 0xFF) == 0x22 - на сколько я понимаю, это проверка только старшего байта, а у многих микросхем старший байт Device ID = 0x22. Таким образом, видимо автор пытался охватить большее количество микросхем, не прописывая все их Device ID.

Тем не менее, у многих, но не у всех - есть микросхемы, у которых Device ID "не подходит", но при этом у них такая же система комманд, и Burn2Slot потенциально может их прошить. У меня например есть TC58FVB160AFT (Device ID=0x0043), SST39VF1601 (Device ID=0x23BH), SST39VF1602 (Device ID=0x23AH). Чисто в теории, в программе нужно сделать какую-то "базу данных" по Device ID, как это уже сделано с Manufacturer ID в файле "ID.H". Но этих Device ID просто море, нужно в интернете найти какой-то список, пока не нашел. Плюс ко всему, надо еще придумать, как программа будет перебирать их все. Но судя по всему, так и делают - нашел пример.

Но я пока не знаю, где бы взять базу данных по этим самым ID, и как их проверять. Пока придумал только довольно костыльный метод - до посылания комманды идентификации считываю данные по адресам 0x0 и 0x1, затем после комманды считываю значения по этим же самым адресам - если они изменились, то значит считаю, что микросхема откликнулась. Но это не очень хороший метод, плюс ко всему, подумал, что так не получится корректно определить busType.

P.S.: Кстати, нашел ошибку в ID.h - в case MACRONIX_ID автор забыл break. А ведь у меня микросхемы фирмы Macronix определялись как "Sharp" в Burn2Slot. Я это сразу заметил, но сначала не предал значения - думал, может у Macronix как-то изменился Manufacturer ID, может у меня какая-то старая микросхема, у которой Manufacturer ID как у Sharp. Ну или может купили производство Flash-памяти у Sharp, а ID остался старый.

Но оказалось там просто нет break, а так как сразу за Macronix идет Sharp, то его функция и возвращала.

136
Hard'n'Soft / Картриджи под перепрошивку
« : 22 Ноябрь 2023, 21:52:29 »
Продолжаю дорабатывать код Burn2Slot. Как говорил в прошлый раз, тогда заменил "родную" функцию для прошивки слова своей, так как хотел максимально упростить себе задачу. Но из-за этого программа "разучивается" работать с "обычными" микросхемами. Изначально думал, что потом постараюсь сделать так, чтобы программа смогла работать с любым типом микросхем, то есть не заменять, а добавить свою функцию к уже имеющимся в программе. Но не хотелось эксперементировать на своих картриджах, так как каждый цикл стирание\запись может стать для микросхемы последним, а для тестирования кода это нужно. Но решил все-таки рискнуть.

Код пока не запускал, есть вопросы.

Решил переделать с if-else на switch, так как теперь нужен выбор из трех вариантов:

void erase(u32 needSpace)
{
for(int addr = 0; addr < needSpace; addr += 0x8000) {
switch(chipType) {
case 0:
eraseSector22XX(addr);
break;
case 1:
for(int smallAddr = addr; smallAddr < addr + 0x8000; smallAddr += 0x2000)
eraseSectorIntel(smallAddr);
break;
case 2:
eraseSharp();
return;
break;
default:
return;
}
printTop("\rERASE %d\%", (addr + 0x8000) * 100/needSpace );
}
printTop("\n");
}

Но суть в том, что в программе используется не полное, а "частичное" стирание, программа "расчищает" секторы под объем записываемого файла, остальные не трогает. Поэтому используется цикл, который выполняется столько раз, сколько секторов нужно стереть для записи файла. Но мне же было лень реализовывать посекторное стирание, поэтому в функции eraseSharp сделал Chip Erase - полное стирание, это удобно тем, что дал один раз комманду, а потом просто ждешь, когда микросхема сама себя сотрет. Но данную функцию нужно вызывать только один раз за прошивку.

Правильно ли я понимаю, что return; после вызова функции eraseSharp досрочно завершит цикл и прервет выполнение функции erase?

Также, прочитал здесь, что если не написать break;, то сразу начнут выполняться следующие операторы. Правильно ли я понимаю, что из case 2 можно смело убрать return; и break;, и после этого начнет выполняться default, в котором есть нужный нам return;?

137
Hard'n'Soft / Картриджи под перепрошивку
« : 19 Ноябрь 2023, 12:39:29 »
Си23
Цифра, я так понимаю год? Что-то совсем новое. Я больше тяготею к старым стандартам. В любом случае, так, как написал Sharpnull работает, а это самое главное.

Только единственное, что я сказал уже ранее, что надо бы еще сделать так, чтобы программа могла перезаписывать как и "22XX" так и Sharp. А то я сейчас заменил код для "обычных" микросхем, и их программа прошивать "разучилась".

Но похоже у меня это не получится сделать, так как для проверки кода нужна микросхема, на которой он будет проверяться, а я уже оба своих картриджа прошил нужными мне играми, и больше прошивать их не хочу.
Не тащи в русский гадости из английского :)
?

138
1-3 поколения / Ремонт денди
« : 19 Ноябрь 2023, 12:11:07 »
Использовал адаптер постоянного тока на 6V | 0.6A (я так полагаю проблема может быть в нем, ибо у симбы 9В и 0,85А ).
Надеюсь, полярность правильная? А то, если вы не обратили внимания на полярность, то все уже может быть плохо...

139
Hard'n'Soft / Картриджи под перепрошивку
« : 17 Ноябрь 2023, 20:36:55 »
И что этот код работает?
Да, только что стер микросхему. Уря! :jumpy: Только забыл добавить "\n" после "Chip Erase...".

Теперь осталось только написать код прошивки (опираясь на исходный код Burn2Slot).

Добавлено позже:
Сделал код для прошивки:

void writeWord22XX(u32 addr, u16 data)
{
write_word()(0x0, 0x70);
int timeout = 0x20000;
while(timeout && !(read_word()(0x0) & 0x80)){
timeout--;
wait();
}
write_word()(0x0, 0x40);
write_word_rom(addr, data);
timeout = 0x20000;
while(timeout && !(read_word()(0x0) & 0x80)){
timeout--;
wait();
}
}

И да, он работает. Заработало с первого раза! Даже сам не ожидал, что так легко получится.

Только сразу говорю, название функции "writeWord22XX", мягко так скажем, не соответствует действительности. Никакие "22XX" он прошить не сможет. Просто я хотел максимально упростить себе задачу, поэтому, просто заменил функцию "writeWord22XX" своей, чтобы не приходилось определять тип микросхемы, а затем выбирать на основе этого "правильную" функцию. Поддержка "нормальных" микросхем в моей модифицированной версии сломана, теперь она может прошивать только Sharp. Но я и не ставил цели сделать универсальную программу, цель была решить свою задачу, и реализация, как говорят по Английски "quick and dirty".

Но в будущем надо все-таки сделать отдельную функцию, и сделать определение типа микросхемы, чтобы выбрать правильную функцию.

P.S.: а вот перед тем, как стирать решил сравнить данные между двумя картриджами, так как покупал два одинаковых картриджа, данные в них должны совпадать. Делал это потому, что в теории, могут прислать картридж с битой памятью. Если данные в них не совпадут, значит один из них битый. И данные не совпали - один совпадал с No-Intro, у другого были расхождения в нескольких местах, ну и "родная" игра глючила как на приставке, так и на эмуляторе. Но при этом, когда перезаписал "плохой" картридж, то данные в него записались правильно, байт-в-байт. Странно, почему тогда "родная" игра была криво записана? Единственное, что могу предположить что может Flash-память какая-то "уставшая" и помнит данные только когда они недавно записаны, а потом "забывает".

140
Hard'n'Soft / Картриджи под перепрошивку
« : 17 Ноябрь 2023, 20:09:25 »
В C ненулевое значение - "истина" и не было изначально true, false и bool. Поэтому if (!0x80) и if (!1) не выполняется всегда, а if (!0) выполняется всегда.
Спасибо, понятно.

Родил вот такой код на основе того, что посоветовал Sharpnull:

void eraseSharp()
{
printTop("Chip Erase...");
write_word()(0x0, 0x70);
while(!(read_word()(0x0) & 0x80){
wait();
}
write_word()(0x0, 0x30);
write_word()(0x0, 0xD0);
while(!(read_word()(0x0) & 0x80){
wait();
}
printTop("Done.\n\n");
}

141
Hard'n'Soft / Картриджи под перепрошивку
« : 17 Ноябрь 2023, 18:12:55 »
Sharpnull, огромное спасибо, что бы я без вас делал! :thumbup:

И еще, "бесполезный" вопрос из разряда "просто интересно": num & 0x80 - это выглядит как логическая операция "И". Не совсем понял, а как это помогает "понять", установлен у нас 7-ой бит или нет?

По крайней мере, мне понятно, что 0x80 - это 10000000 в двоичной системе, то есть установленный 7-ой бит. А вот "if (!(num & 0x80)", по идее, чтобы условие if выполнялось, нужно, чтобы в скобках было true. А как "num & 0x80" дает true, если в num 7-ой бит будет равен "1"?

142
Hard'n'Soft / Картриджи под перепрошивку
« : 17 Ноябрь 2023, 15:29:36 »
Yoti, честно говоря, не слишком понятно. У меня с программированием не очень хорошо.

Можно ссылки на какие-нибудь статьи\уроки, где бы это понятно объяснялось? Желательно с примерами кода

143
Hard'n'Soft / Доработка Burn2Slot
« : 17 Ноябрь 2023, 13:50:19 »
У меня снова вопрос с некоторым уклоном в железо (скорее всего).

Покупал на Aliexpress картриджи под перепрошивку, но на этот раз попалась на них микросхема LH28F800BJE, а ее не поддерживает ни Burn2Slot, ни GBABF-SHN. Тут наверно я сам себе злобный Буратино, так как взял игру на 512 КБ, подумал, что большой объем для тех игр, которые хотел записать не нужен. Наверно, если бы взял что-то на 2 МБ, то могла бы попасться и какая-нибудь поддерживаемая микросхема.

Тем не менее, хочу попробовать дописать в Burn2Slot поддержку данной микросхемы.

Вопросы: вот Datasheet на микросхему. На странице 21 есть алгоритм в виде блок-схемы для прошивки одного слова\байта. На блок-схеме есть SR.7=, я так понимаю, это проверка Status Register, о котором написано на странице 18. Я так понимаю, нужно проверять бит 7. Для этого нужно считать информацию. Но там будет сразу считываться по 8, а может по 16 бит (не уверен, но шина 16-битная), и отображаться как шестнадцетиричное число.

А как в Си (Burn2Slot ведь на Си написан?) "посмотреть" отдельный бит?

144
Hard'n'Soft / Колонки для ПК из пассивных
« : 15 Ноябрь 2023, 09:55:31 »
Замеряю его сопротивление - GND и OUT1 регулируется от нуля до максимума нормально, GND и OUT2 не регулируется, сопротивление всегда максимально.
Наверно, все-таки дефект резистора. Если не хочется покупать новый, чтобы проверить заменой, можно выпаять, подпаять его же на проводках, поменяв местами IN1 и 2, OUT1 и 2. Если неисправность перейдет в другой канал, то значит дело точно в резисторе.

Можно даже другой резистор взять. Не обязательно такой же формы, можно подпаять другой формы на проводках. Даже не обязательно сдвоенный - можно один канал оставить "болтаться в воздухе". Только тогда нужно проверить оба канала по отдельно проверить.

145
warezhunter_, там два варианта - только картридж или приставка. Возможно ошибка продавца (или даже покупателя, но это нужно смотреть заказанный вариант в отзыве).

Снять распаковку на видео. Если будет только картридж, то открыть спор, приложить видео, отспорить разницу в цене.

146
stargazer, посмотрел. L78L33 не подходит по расположению выводов, да и не LDO. Остальных в нашем магазине нет.

Придется ставить XC6206P332MR в корпусе SOT23.

147
Есть какой-то сайт, где можно найти деталь по параметрам?

148
JRBVZ, нужны конкретные названия, на сайте нашего местного магазина можно искать только по названию детали.

149
Кстати, вот на такой плате есть место под стабилизатор справа. Какой стабилизатор можно поставить?



Расположение выводов такое:



На другом форуме советовали НТ7133, НТ7533, МСР1701, МСР1703, но таких у нас нету. Есть XC6206P332MR, но у него корпус меньше, не уверен, что до контактных площадок выводы достанут.

Есть еще варианты?

150
Rumata, он имеет в виду, что то, что предназначалось в качестве логического уровня используется в качестве напряжения питания. Еще есть такое: когда подключают приставочные джойстики к LPT, берут питание от сигнальных линий через диоды.
Мы же вроде выяснили, что клон твой трехвольтовый, разве нет? Или замеры производились на чем-то другом?
Если вы про замеры напряжения питания микросхемы в картридже, то они проводились на оригинальной Японской Mega Drive VA1.

Страницы: Назад 1 2 3 4 [5] 6 7 8 9 ... 35 Далее