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

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


Сообщения - Томахомэ

Страницы: [1] 2 3 4 5 ... 31 Далее
1
Чтобы получить +3  попадания, в начале игры сходите на кухню и съешьте дерьмо с тарелки.  :nyam:

Тонкая отсылка к "Зелёному Слонику"?

2
На новой железке сработало, вот только внутриигровые анимации сильно ускорены, из-за чего в катсценах реплики быстро начинают накладываться одна на другую, а самой игре наносится серьёзный удар по плэйабельности. Да ещё и движения у мыши какие-то дёрганные...

3
А современный адаптер Coleco Master для SMS? У него встроенный BIOS от CV?

Пока не смотрел.

4
У CV и SG-1000 одни и те же процессор, видео и звук

Тут дело ещё и в том, что у ColecoVision был собственный биос, на который игры многое переваливали в своей работе, а у семейства SG - нет. Поэтому роскошь поиграть в Coleco'вские игры на Sx-x была доступна только на комбайнах вроде Dina 2-in-1.

5
Таааак, с загрузкой больших чисел в регистры вроде разобрался (хоть эта процедура и получилась очень уж многоступенчатой),  и даже с прерываниями. Остаётся только вопрос - почему выбранный кусок изображения всё ещё не выводится на экран?

6
тебе в какой регистр грузить то надо?

Загрузить число $4000000 (адрес регистра DISPCNT у GBA) в R0 - чтобы подготовиться к переводу в режим битмэпа. А ведь кроме DISPCNT,  видеорегистов есть ещё штук 40 (то есть с адресами $40000xx), и фиг ещё знает, какие понадобятся в дальнейшем - в случае с ними одной прокруткой точно не обойдётся.

7
Кстати, об ассемблере ARM - а у него есть вообще способ загрузить командой mov полноразмерное 32-битное число, где все 16-ричные цифры были бы разные?

Просто, как оказалось, соответствующий модуль у ASMX откровенно сырой и недопиленный - на данном этапе загрузить таким способом в регистр можно только однобайтные числа. Допилить за Томлином самому мешает тот факт, что структура такого типа опкодов у ARM специфическая (см. главу Data Processing), и далеко не всякое 32-битное число можно "ужать" до 8-битного методом банальной прокрутки.

long ARMImmed(unsigned long val)
{
    // note: can't abort assembling instruction because it may cause phase errors

    if ((val & 0xFFFFFF00) == 0)
        return (val & 0xFF);
    else
    {
        // FIXME: need to handle shifts
        // bit 25 (I) = 1
        // bits 8-11 = rotate (immed8 is rotated right by 2 * this value)
        // bits 0-7 = immed8
        // the smallest value of rotate should be chosen
    }

    Error("Invalid immediate constant");
    return 0;
}

8
Обзоры игр / [NES] Venus Senki
« : 18 Декабрь 2024, 16:27:05 »
off: Я вроде вообще с сабами смотрел, без озвучки...

В 1080p-издании с Рутрекера сабы как раз от MC. Может, и на других ресурсах так же...

9
Обзоры игр / [NES] Venus Senki
« : 18 Декабрь 2024, 04:33:38 »
так как я смотрел аниме, то сразу что-то недоброе заподозрил

А смотрели в переводе от MC Entertainment, или чьего-то ещё?

Просьба не делать огромную цитату сообщения, которое находится рядом с вашим. ghostdog3

10
Я тут встряну немного.

Первый раз такое вижу.
 BRA - это же аналог JMP, разница лишь в размере инструкции. То есть это более быстрый способ перейти на короткие ветвления, если мне память не отшибло bra.s это скачок на 7E вперёд или назад, а bra.w на 7FFE. Во первых надо было короткий переход использовать, а во вторых - переход без адреса, как может вообще работать? И какая задача? зациклить текущий узел кода или хде?

Именно как-раз таки зациклить. Про "отсутствующий адрес" - вот исчерпывающе всё объясняющая вырезка из руководства от самого разработчика того ассемблера, которым я пользуюсь (см. прикрепления). Что интересно, когда адрес не указан, то к bra даже постфикс s добавлять не требуется - она уже автоматом транслируется как $60fe.

11
а что значит
bra $не должно ли было быть после доллара какое-то значение?

В синтаксисе asmx это - текущий адрес. По идее, программка должна тихонько стоять на месте в ожидании прерывания, вот только чё-то последнего не поступает. Точнее, поступает, но на него нет должной реакции.

12
а чем собиралось? есть ли альтернатива? типа несколькими сборщиками один и тот-же код собрать и посмотреть?

Всё тем же нашим общим "старым знакомым" - asmx. И собрал он, судя по тому, как слабо разнятся исходник с листингом MAMEовского дебаггера, правильно.

13
Решил я тут начать пилить небольшую демку для Playmark'овского железа Excelsior, и тут вырисовалась небольшая проблема - вроде прерывание №2 для данной железки я уже разрешил, однако самого перескока к соответствующему адресу, когда приходит время прерывания, не происходит - только значение 3-го нибла регистра SR меняется с 1 на 2, и MAME'овский дебаггер тоже никакого прерывания не регистрирует.
Внизу прикреплены иллюстрирующий странность в работе M68000 тестовый набросок кода и полученный в результате его сборки ром (запускать через командную строку - mame excelsr -d). Что же я всё-таки упустил?

14
Ну вот, братцы, допилил я таки свой ассемблер (в той, правда мере, в какой это касается общих для семейства MIPS в целом команд - специфические для Emotion Engine и спекоманды для сопроцессоров ещё только предстоит добавить) , испытал на работоспособность и подчистил "хвосты" от исходника ассемблера ARM, на который ориентировался, как на единственную дотоле присутствовавшую среди поддерживаемых ASMX RISC-архитектуру.

Исходник и готовый EXE-файл - в прикреплённом архиве.

15
Вы таки будете смеятся, но то, что я принял за баги трансляции команд addis andis. оказалось вовсе не багами, а просто дурной привычкой MAME'овского дизассемблера упрощать некоторые команды.
else if ((op & ~(M_RT|M_RA|M_SIMM)) == D_OP(15))
{
if (G_RA(op) == 0)
{
mnem += "li"; // addis rT,0,value -> li rT,(value<<16)
oprs = util::string_format("r%d,0x%08X", G_RT(op), value << 16);
}
else
{
mnem += "addi";   // addis rT,rA,SIMM -> addi rT,rA,SIMM<<16
oprs = util::string_format("r%d,r%d,0x%08X", G_RT(op), G_RA(op), value << 16);
}
}
else if ((op & ~(M_RT|M_RA|M_UIMM)) == D_OP(29))
{
mnem += "andi.";  // andis. rA,rT,UIMM -> andi. rA,rT,UIMM<<16
oprs = util::string_format("r%d,r%d,0x%08X", G_RA(op), G_RT(op), G_UIMM(op) << 16);
}

16
Все нужны. Желательно пихнуть кириллицу на месте расширенной латиницы.

Используется, я так понимаю, НЕ стандартный размер знакоместа 8x8? Потому что внизу, например, оригинального FixedsysTTF16B.dsfont куски латинских символов ещё узнаются (см. верхний скриншот), а вот в вырезанной из него монохромной части - уже нет (см. нижний скриншот).

17
Ромы NDS имеют свою собственную фс. Внутри лежат вполне себе файлы. Конкретно шрифты здесь - .dsfont

Какие из них именно необходимо отредактировать? Или все?

18
В файле лежит разметка, за ней текстура 4bpp gba.

Это файлы или чисто куски бинарных данных внутри рома, как в играх для более старых картриджных систем?

19
Решил тут воскресить проект Sails of Charon, но уже в новом качестве - будущего одного из бонусных режимов для порта Police of the Future на PS2/3, XBOX360 и Wii.

Для 7-го "тома" "Всё, что было после", подумалось мне, как один из множества источников ресурсов, неплохо подойдут спрайты рядовых солдат противника из Mercs для Capcom Play System 1. Вот первая база анимаций, и в дальнейшем список цитат оттуда, возможно, пополнится.
EnemySoldierSprites:
030F74: 0003 0FB8 ; EnemySoldierWalks
030F78: 0003 12D8 ; EnemySoldierWading
030F7C: 0003 14B8
030F80: 0003 15F8
030F84: 0003 1738
030F88: 0003 17D8
030F8C: 0003 1878
030F90: 0003 1918
030F94: 0003 19B8
030F98: 0003 1F78
030F9C: 0003 19D8
030FA0: 0003 1F98
030FA4: 0003 19F8
030FA8: 0003 1FB8
030FAC: 0003 24FC
030FB0: 0003 2602
030FB4: 0003 20A8
EnemySoldierWalks:
030FB8: 0003 0FF8 ; EnemySoldierWalk_0degrees
030FBC: 0003 1026 ; EnemySoldierWalk_22AndHalfDegrees
030FC0: 0003 1054 ; EnemySoldierWalk_45degrees
030FC4: 0003 1082 ; EnemySoldierWalk_77AndHalfDegrees
030FC8: 0003 10B0 ; EnemySoldierWalk_90degrees
030FCC: 0003 10DE ; EnemySoldierWalk_112AndHalfDegrees
030FD0: 0003 110C ; EnemySoldierWalk_135degrees
030FD4: 0003 113A ; EnemySoldierWalk_157AndHalfDegrees
030FD8: 0003 1168 ; EnemySoldierWalk_180degrees
030FDC: 0003 1196 ; EnemySoldierWalk_202AndHalfDegrees
030FE0: 0003 11C4 ; EnemySoldierWalk_225degrees
030FE4: 0003 11F2 ; EnemySoldierWalk_247AndHalfDegrees
030FE8: 0003 1220 ; EnemySoldierWalk_270degrees
030FEC: 0003 124E ; EnemySoldierWalk_292AndHalfDegrees
030FF0: 0003 127C ; EnemySoldierWalk_315degrees
030FF4: 0003 12AA ; EnemySoldierWalk_337AndHalfDegrees
EnemySoldierWalk_0degrees:
030FF8: 0006 0981 1204 8000 00FF
031002: 0006 09A1 1204 8000 00FF
03100C: 0006 09C1 1204 8000 00FF
031016: 0006 09A1 1204 8000 00FF
031020: FFFF
031022: 0003 0FF8 ; EnemySoldierWalk_0degrees

EnemySoldierWalk_22AndHalfDegrees:
031026: 0006 0984 1244 8000 00FF
031030: 0006 09A4 1244 8000 00FF
03103A: 0006 09C4 1244 8000 00FF
031044: 0006 09A4 1244 8000 00FF
03104E: FFFF
031050: 0003 1026 ; EnemySoldierWalk_22AndHalfDegrees

EnemySoldierWalk_45degrees:
031054: 0006 0987 1244 8000 00FF
03105E: 0006 09A7 1244 8000 00FF
031068: 0006 09C7 1244 8000 00FF
031072: 0006 09A7 1244 8000 00FF
03107C: FFFF
03107E: 0003 1054 ; EnemySoldierWalk_45degrees

EnemySoldierWalk_77AndHalfDegrees:
031082: 0006 098A 1244 8000 00FF
03108C: 0006 09AA 1244 8000 00FF
031096: 0006 09CA 1244 8000 00FF
0310A0: 0006 09AA 1244 8000 00FF
0310AA: FFFF
0310AC: 0003 1082 ; EnemySoldierWalk_77AndHalfDegrees

EnemySoldierWalk_90degrees:
0310B0: 0006 098D 1244 8000 00FF
0310BA: 0006 09AD 1244 8000 00FF
0310C4: 0006 09CD 1244 8000 00FF
0310CE: 0006 09AD 1244 8000 00FF
0310D8: FFFF
0310DA: 0003 10B0 ; EnemySoldierWalk_90degrees

EnemySoldierWalk_112AndHalfDegrees:
0310DE: 0006 0904 1244 8000 00FF
0310E8: 0006 0924 1244 8000 00FF
0310F2: 0006 0944 1244 8000 00FF
0310FC: 0006 0924 1244 8000 00FF
031106: FFFF
031108: 0003 10DE ; EnemySoldierWalk_112AndHalfDegrees

EnemySoldierWalk_135degrees:
03110C: 0006 0907 1244 8000 00FF
031116: 0006 0927 1244 8000 00FF
031120: 0006 0947 1244 8000 00FF
03112A: 0006 0927 1244 8000 00FF
031134: FFFF
031136: 0003 110C ; EnemySoldierWalk_135degrees

EnemySoldierWalk_157AndHalfDegrees:
03113A: 0006 090A 1244 8000 00FF
031144: 0006 092A 1244 8000 00FF
03114E: 0006 094A 1244 8000 00FF
031158: 0006 092A 1244 8000 00FF
031162: FFFF
031164: 0003 113A ; EnemySoldierWalk_157AndHalfDegrees

EnemySoldierWalk_180degrees:
031168: 0006 090D 1204 8000 00FF
031172: 0006 092D 1204 8000 00FF
03117C: 0006 094D 1204 8000 00FF
031186: 0006 092D 1204 8000 00FF
031190: FFFF
031192: 0003 1168 ; EnemySoldierWalk_180degrees

EnemySoldierWalk_202AndHalfDegrees:
031196: 0006 090A 1204 8000 00FF
0311A0: 0006 092A 1204 8000 00FF
0311AA: 0006 094A 1204 8000 00FF
0311B4: 0006 092A 1204 8000 00FF
0311BE: FFFF
0311C0: 0003 1196 ; EnemySoldierWalk_202AndHalfDegrees

EnemySoldierWalk_225degrees:
0311C4: 0006 0907 1204 8000 00FF
0311CE: 0006 0927 1204 8000 00FF
0311D8: 0006 0947 1204 8000 00FF
0311E2: 0006 0927 1204 8000 00FF
0311EC: FFFF
0311EE: 0003 11C4 ; EnemySoldierWalk_225degrees

EnemySoldierWalk_247AndHalfDegrees:
0311F2: 0006 0904 1204 8000 00FF
0311FC: 0006 0924 1204 8000 00FF
031206: 0006 0944 1204 8000 00FF
031210: 0006 0924 1204 8000 00FF
03121A: FFFF
03121C: 0003 11F2 ; EnemySoldierWalk_247AndHalfDegrees

EnemySoldierWalk_270degrees:
031220: 0006 098D 1204 8000 00FF
03122A: 0006 09AD 1204 8000 00FF
031234: 0006 09CD 1204 8000 00FF
03123E: 0006 09AD 1204 8000 00FF
031248: FFFF
03124A: 0003 1220 ; EnemySoldierWalk_270degrees

EnemySoldierWalk_292AndHalfDegrees:
03124E: 0006 098A 1204 8000 00FF
031258: 0006 09AA 1204 8000 00FF
031262: 0006 09CA 1204 8000 00FF
03126C: 0006 09AA 1204 8000 00FF
031276: FFFF
031278: 0003 124E ; EnemySoldierWalk_292AndHalfDegrees

EnemySoldierWalk_315degrees:
03127C: 0006 0987 1204 8000 00FF
031286: 0006 09A7 1204 8000 00FF
031290: 0006 09C7 1204 8000 00FF
03129A: 0006 09A7 1204 8000 00FF
0312A4: FFFF
0312A6: 0003 127C ; EnemySoldierWalk_315degrees

EnemySoldierWalk_337AndHalfDegrees:
0312AA: 0006 0984 1204 8000 00FF
0312B4: 0006 09A4 1204 8000 00FF
0312BE: 0006 09C4 1204 8000 00FF
0312C8: 0006 09A4 1204 8000 00FF
0312D2: FFFF
0312D4: 0003 12AA ; EnemySoldierWalk_337AndHalfDegrees

Для чего нужны последние 2 машинных слова каждого кадра анимации - пока не проверял, но первое - совершенно точно центровка спрайта, второе - номер начального тайла 16x16, а третье - прочие атрибуты (габариты, флиппинг, номер палитры) спрайта на буферовку с последующими прикреплением координат и загрузкой в видеопамять. Если покопаться, кстати, то выяснится, что формат тайловых данных в CPS1 - это старый добрый Master System, так что оригинальные графические ромы Mercs, из которых будет вырезано всё,  кроме тайлов вражеских солдат, ну, или ещё, может быть, "наших" юнитов сопровождения и охраны из начальной сцены вертолётной высадки, даже конвертировать заранее не потребуется - достаточно будет ограничиться лишь входящим в код игры программным конвертером.

20
Томахомэ, отзыв опубликован от человека, который обиделся именно потому что он христианин, как бы он лицемерно ни отрицал этого...

Меня, кстати, существование атеистов, которым обидно за Рождество, нисколько не удивляет, поскольку в игре с ног на голову ставится не только христианское, но и секулярное (милый праздник домашнего уюта, подарки, гуляния, фэмили-билдинг после длящейся большую часть года вынужденной необходимости пропадать на работе, индеечка-пряники-глинтвейн, вечер у камина, календари адвента, те же ёлочки - в общем, весь наросший вокруг Рождества за века шлейф традиций, обрядов и атрибутики, формировавшихся главным образом стараниями христиан, но которые и люди иных культур и мировоззрений за теми не прочь "подъесть") понимание Рождества.

21
Томахомэ, Вот это руководство не поможет?

Н-дя-а-а-а-аа-ааам... Решение запаковать на GD полноценный FATX-раздел - оно, конечно, экстраординарнейшее из возможных.... Тем не менее, его я всё-таки извлёк, но тут нарисовалась другая проблема - ни одна программа по работе с FATX-дисками не хочет его адекватно читать.

Добавлено позже:
Таааак, подходящий инструментик нашёл, работоспособность свою подтвердил. Теперь вопрос - у кого из вас версия Ghost Squad для Chihiro зависавет на Xemu при загрузке миссий, и вообще не запускается для неё же House of the Dead 3? Хотелось бы уже наконец понять, в неподходящем биосе дело или в чём-то ещё.

22
С недавних пор утилита chdman в составе MAME научилась наконец-таки извлекать GD-образы из CHD-файлов, и мне таки удалось посмотреть, что внутри у GD-дисков для Chihiro (см. прикреплённый скриншот). Теперь вопрос - как показанные в окне файлы доизвлекать дальше, чтобы в итоге получить xbe-шник с ресурсами, который можно будет потом или непосредственно запустить в CXBX, или собрать в ISO для Xemu?

23
что в игре используется попурри/интерпретации советской зимней музыки

Авторы Дума никому ничего не платили, как и большинство игр, типа Человека Паука (Spider-Man and Venom: Maximum Carnage), который на SNES/SMD юзает известную мелодию Black Sabbath. Просто они не подавали в суд, да и всё. https://youtu.be/6_tHPVFK2p4?t=154

Под платной музыкой обзорщик имел в виду, я так понимаю, Tarzan Boy'я. А то прикапываться к традиционным новогодним мелодиям было бы как минимум странно.

24
Кроме графических, могу делать и простенькие графические хаки - например, подменять картинки в эротических аркадах и головоломках - как, например, в прикреплённом хаке, где изменению подвергся фон для 2-го уровня. Запускать также через командную строку.

25
bass.dll не сможет такое конвертануть?

А у него поддержка VOX ADPCM есть?

26
Кому из вас хотелось бы заказать звуковой хак какой-нибудь автоматской игры, использующей для проигрывания цифрового звука чипы Oki M6295, YMZ280B или Seta X1-010?

Вот "вместо портфолио" - вот вам звуковой хак игры Paparazzi для MAME, где музыка для самого первого уровня заменена на самое начало Bolero группы Fancy. Нарезать эту песню, как бы мне хотелось - то есть по самым ключевым и узнаваемым кускам у меня не получилось, ибо конечному экспорту raw-файла при частоте дискретизации в 7576 Гц (округлённое до целых 1 МГц/132) всякий раз мешала какая-то неизвестная ошибка. Удивительно, что Audacity при такой конечной частоте её вообще целиком переварила. Для обхода проверки контрольных сумм запускайте хак через командную строку.

27
Кому из вас хотелось бы заказать звуковой хак какой-нибудь автоматской игры, использующей для проигрывания цифрового звука чипы Oki M6295, YMZ280B или Seta X1-010?

28
А наши геймеры, я смотрю, судьи строгие. Западные что на Ютубе, что на GenDev'е - несравнимо мягче.

29
Впрочем, для риппинга звука для Oki M6295 сгодится и старая добрая Audacity - сначала вырезаешь нужный тебе сэмпл из рома с помощью HEX-редактора, затем импортируешь полученный огрызок рома как RAW-данные, затем в открывшемся окне выбираешь кодирование VOX ADPCM и устанавливаешь частоту дискретизации, высчитанную из рабочей частоты Oki в той конкретной игре, из которой собираешься извлечь звук. Вот что мне в порядке эксперимента удалось таким образом получить из нескольких корейских пираток.

30
Из "чего попроще" есть Joe & Mac Returns, где весь звук - цифровой, воспроизводимый через два простых как палка, и за то, надо полагать, и любимых в своё время производителями игровых автоматов, Oki M6295 (которые в железе данной игры к тому же разделены для собственно музыки и для звуковых эффектов), и тащит управление им на себе единственный CPU. Структура музыки в игре также проста до безобразия - большинство треков, за исключением Boss,  Ending и ExtraStage, состоит из одного (удивительно, кстати, как при такой длине сэмпла Data East удалось ещё и соблюсти качество звучания), максимум - двух сэмплов, на последнем из которых мелодия и зацикливается. Младший байт каждого машинного слова ARM в нижнем из процитированных кусков кода - номер собственно сэмпла, второй - номер банка внутри рома okimusic, к которому этот сэмпл принадлежит, а самый старший нибл - громкость 1-го канала музыкального чипа. Третий байт может служить счётчиком сэмплов внутри одной мелодии, но этого я уже не проверял.
000491C: 0000495C ; Jungle1
0004920: 00004960 ; Glacier
0004924: 00004968 ; Ocean
0004928: 00004970 ; Volcano
000492C: 00004978 ; Jungle2
0004930: 00004980 ; Graveyard
0004934: 00004984
0004938: 00004988 ; Boss
000493C: 000049B8 ; Fanfare
0004940: 000049BC
0004944: 000049C0 ; Ending
0004948: 000049F8
000494C: 00004A00 ; ExtraStage
0004950: 00004A18 ; WorldMap
Jungle1:
000495C: 21000200

Glacier:
0004960: 21010500
0004964: 21010501

Ocean:
0004968: 21010301
000496C: 21010300

Volcano:
0004970: 21010600
0004974: 21010601

Jungle2:
0004978: 11010400
000497C: 11010401

Graveyard:
0004980: 11000000

Boss:
0004988: 01010100
000498C: 01020100
0004990: 01030101
0004994: 01040101
0004998: 01050102
000499C: 01060102
00049A0: 01070103
00049A4: 01080103
00049A8: 01090102
00049AC: 010A0102
00049B0: 010B0103
00049B4: 01020103

Fanfare:
00049B8: 20000104

Ending:
00049C0: 11010700
00049C4: 11020700
00049C8: 11030701
00049CC: 11040701
00049D0: 11050702
00049D4: 11060702
00049D8: 11070703
00049DC: 11080703
00049E0: 11090702
00049E4: 110A0702
00049E8: 110B0703
00049EC: 110C0703
00049F0: 110D0704
00049F4: 10000704

ExtraStage:
0004A00: 11010705
0004A04: 11020706
0004A08: 11030705
0004A0C: 11040706
0004A10: 11050705
0004A14: 11000706

WorldMap:
0004A18: 21000302

С инструментарием же для конвертации Oki ADPCM дело уже сложнее, хоть и проще, чем с другими чипами. tROMbone, например, во первых, давно устарел, а во вторых, конвертирует ром для Oki целиком, ему невозможно указать, какой именно сэмпл тебе нужен - как и рабочую частоту чипа в оригинальной игре, из-за чего скорость проигрывания в полученном VAW получается жутко искажена. Из более современных есть Williams OKI editor, но с ним не ясно, способен ли он работать с играми за пределами Midway'евских.

Страницы: [1] 2 3 4 5 ... 31 Далее