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

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


Сообщения - Марат

Страницы: Назад 1 2 [3] 4 5 6 7 ... 19 Далее
61
В нём у меня используется оптимальный разбор строки, который я вычитал то ли в какой-то книжке, то ли в методичке.
И получился абсолютно такой же результат.
Вспомнил автора: Кадач А.В. и это была не методичка, а диссертация под названием "Эффективные алгоритмы неискажающего сжатия текстовой информации" из его диссертации следует,
Цитата
Как показали эмпирические испытания, ограничения на расход памяти М =  128
более чем достаточно для практического применения, т. к. во всех испытаниях m ни разу
не достигло этого значения (следовательно, порядок кодирования был оптимальным).
Т.е. тот алгоритм, который он реализовал даёт оптимальный разбор, если M не достигает 128. А у меня он и не достиг 128 при сжатии картинки MK. Но если, кто сможет сжать ещё лучше, то это будет интересно.

62
Сейчас адаптировал мой старый медленный алгоритм, но с хорошим сжатием (вроде не предел), получилось 533 448 байт
Хм-м, адаптировал один из своих пакеров под стандарты Дино Кризис. В нём у меня используется оптимальный разбор строки, который я вычитал то ли в какой-то книжке, то ли в методичке.
И получился абсолютно такой же результат.




Добавлено позже:
PS:У меня то сначала результат получился хуже и я, было, уже подумал, что Sharpnull нашёл какой-то более оптимальный код разбора словаря, а так как я уже давно считал, что нашёл самый оптимальный разбор словаря, то стало интересно. Но оказалось, что просто у меня в поиске закралась ошибка, из-за которой функция поиска не находила максимально длинную фразу.

63
moveq (причем без вариантов типов переменной .w или .l или .b видимо существует только что-то одно)
MoveQ - Move quick - передача с расширением знака.
Например Moveq #$80,D0
Теперь в D0 = $FFFFFF80;

Moveq #$7F, D0 - > D0 = $0000007F;
Т.е. самый старший знаковый бит в байте копируется во все старшие биты.
Это нужно, чтобы отрицательное число всегда оставалось отрицательным, а положительное - положительным.
А quick, видимо, потому операнд дата занимает всего один байт.

64
точно $ffe446 ? не $ffffe446 или не $e446 ?
Да без разницы, всё равно запись будет в ОЗУ по адресу ffe446. Видимо, в самой команде уже указано, что запись идёт в ОЗУ. Поэтому компилируется более короткий код без ff.

65
ясно что ничего не ясно... это пока ладно. листаю https://info.sonicretro.org/SCHG:68000_ASM-to-Hex_Code_Reference
и там есть такой момент:
move.b (a2,d0.w), d1и как его осознать то? :) как бы понятно что move это копирование чего-то куда-то. скопировать a2 куда-то я еще понимаю. скопировать (а2) куда-то я еще понимаю. но здесь что происходит (a2,d0)
Это индексная адресация.
Надо сложить содержимое регистров А2+D0.
Причем у d0 надо брать только два младших байта на что указывает .w.
Это будет адрес откуда надо прочитать один байт и поместить его в d1.


Добавлено позже:
второе:
move.b $5E(pc,d3.w), ($FFFFE446).w 0001 0001 1111 1011 11FB 305E E446что за pc?
pc - это program counter.
Здесь относительная адресация.
Означает взять адрес по-которому происходит исполнение + 2 байта(размер команды) + $5E + D3.w. Полученное значение будет адрес по которому нужно прочитать один байт в память по адресу $ffe446

66
И он показывает валидные параметры при вводе и наведении, или только подсвечивает ошибки?
Не думаю. Подсветка какая-то была.

67
A7 - это стек поинтер

Добавлено позже:
Есть ещё симулятор easy68k.
Я на нём компилирую код.

68
А что push start button не переведено?

69
Надо выключать экран при перерисовке
При нажатии клавиш, у вас вызываются функции top и top2, в этих функциях у вас почему-то закомментированы функции All_Off, All_On. Надо их раскомментировать.
void top (void){
//All_Off(); // turn off screen
//Load_Palette();
summ_tile();
//All_On(); // turn on screen
}


void top2 (void){
//All_Off(); // turn off screen
//Load_Palette();
summ_tile2();
//All_On(); // turn on screen
}

70
Привет, можете подсказать, как находить, когда отправляются таблицы тайлов в VDP_DATA?
Смотрел на примере заставки Sega в Дюне, с помощью дебаггера, запись в VDP_DATA идет всего пару раз, и не понятно, что там в DMA, длина данных 0x800, вроде похоже на правду, но диапазон адресов откуда писать странные 7F8000 - FF0000 (Ram).
Направьте так сказать, куда смотреть, вроде перечила мат. часть, но что-то не сходится.  :neznayu:

Ну как бы вот написано DMA_SRC = 0x4A320 , DMA_LEN = 0x2C80, VDP_DST = 0x4000



Добавлено позже:
Это в IDA показывает так.

71
Обнуление какого-то места в видеопамяти. В a3 порт данных видеопамяти.  Он не в начало пишет. Адрес указывается изначально через адресный порт видеопамяти $C00000. после каждой записи адрес автоинкрементируется внутри видеопамяти. Здесь есть довольно много интересной информации http://tv-games.ru/media/open/igrovie_pristavki_remont.html

72
А что не так? Он ожидает пока что-то извне изменит память по адресу ffe006.
Это может быть одно из прерываний процессора: строчное, кадровое, переферийное(джойстик).

73
Не силён в питоне. Но вроде ничего такого в коде нет, что переворачивает байты. Может дамп кривой и в нём байты перевёрнуты. Попробуй открыть vram.bin в тайловом редакторе, если там всё нормально, то значит где-то в коде ошибка.

74
Что здесь не так можно сказать, только увидев код. Возможно, ты читаешь данные не побайтно, о по словам или лонгами и у тебя байты переворачиваются. Так видится по крайней мере

75
Только Gens r57shell mod чудовищно медленный, если открыть HEX-редактор, по крайней мере на Win10 с FX-8300 и Ryzen 5600X, чем выше окно, тем больше просадка, на FX-8300 было меньше 30FPS из 60, на 5600X лучше, но всё равно. Вроде на Win7 было лучше, думаю дело в отрисовки (API и код плохой), например, на HxD плохо меняет размер на 5600X тоже. Его пилить и пилить, переписывать GUI.
Для дампы палитра не особо важно. Палитру в формат RGB888 он правильно дампит.

76
У меня вот так
      rgbBlue:= (Value shr 4) and $F0;
      rgbGreen:= Value and $F0;
      rgbRed:= (Value shl 4) and $F0;
Никаких лишних констант.

Добавлено позже:
Хотя там должно быть and $E0. Как-то проглядел этот момент.

77
Gens by Shell. У него правильная палитра, а ещё он может дампить палитру в формате RGB888.

Добавлено позже:
Regen вроде правильный порядок дампит уже. Размер правда, всё также, 512 байт, вместо 128
Потому что размер CRAM 512 байт

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

79
Учитывая, что скомпилирована она на Дельфи 7, то должна.

80
Тогда вытащи шрифт из видеопамяти. Там он должен быть в привычном виде. Затем сравнить последовательное расположение байт с Z-образным, чтобы понять алгоритм перестановки байт. Гугл выдают кучу разных вариаций Z-образных расположений байт.
https://en.wikipedia.org/wiki/Z-order_curve

Он же привёл ссылку на Z-Order описанмие.

В тайл молестере нет этого Z-mode свиззла.
http://problemkaputt.de/gbatek-3ds-video-texture-swizzling.htm

Вот накидал конвертер

81
Понятно. Я думаю, ему этой информации вполне достаточно, чтобы ковырять хак.

82
Хорошая работа!
А я тоже на ромхакинг.нет сразу полез в раздел утилиты, думал, может, кто выложил компрессор, а так только утилиты для работы с параметрами игроков, да редактор сценария. Думаю, перестановка байт нужна для лучшего сжатия. Это точно сжатая графика, а не карта тайлов? Потому что как то последовательно идут байты с очередностью характерной для карты тайлов.

83
Вообще надпись похожа на спрайтовую. А у спрайтов координаты.

84
А зачем расстояния между буквами искать? Только ширины букв искать надо.

85
which snes decompressor do you indicate me,? if you have a tutorial help me friend
I not found decompressor for this game.

86
Думаю вам надо искать таблицу ширин.
Надо измерить ширину нескольких букв идущих подряд в оригинальном шрифте.
К примеру. A,B,C,D,E,F,G,H,I,J,K могут составлять такую последовательность 8,8,8,8,8,8,8,8,4,6,8 Соответственно надо искать такую таблицу. Также надо иметь в виду, что размеру шрифта может быть ещё добавлено 1,2 пикселя для расстояния между буквами в строкее.

87
Almost certainly all the graphics are compressed. That's why you need a decompressor/compressor in the first place. The compressor from the Sega Genesis will most likely not be suitable for snes, since snes uses Little endian byte order, while Sega Big Endian.

88
На эмуляторе ps3 совсем недавно проходил эту игру. Учитывая, что графика там гораздо лучше чем на sega, лучше, конечно, играть в версию ps3.

89
Сделал сет на игру Over Horizon.nes. Сет сделан под европейскую версию рома Over Horizon (E) [!].nes. Скачан с сайта Эму-ленд.
Доступны для редактирования все уровни, титл скрин, скрина редактирования оружий и дронов, а также скрин меню редактора.
Формат блоков: Linear(2x2), формат экранов: (-)T, (palByteX)T

90
Выбрать процессор Моторолла M68000 и нажать set. После этого должно появится окно с gens ida plugin

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