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

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


Сообщения - ViToTiV

Страницы: [1] 2 3 4 5 Далее
1
а где взять такой ром игры в оригинале? выглядит прилично на видосе

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

2
только тут наверное старая версия, а шапку уже не могу редактировать

3
Все работает на реальной А500+
фигасе)
подписано А1200 это для эмулятора, не помню на каком я тестировал, он брал эту инфу для кикстартера (или как он там назывался)

4
а хак на железе будет работать? пусть без увеличения fps, но хотя бы с исправлением глюков

5
я тут задумал самый эпичный ромхак Zero Tolerance на свете и к нему бы маленько музыки новой
пили под SEGACD, тогда с музыкой дело не встанет)

6
А Лунар был с Sega CD или PSOne?
https://vit-co.ru/viewtopic.php?f=3&t=69
самому даже обидно, что перевод канет в бездну, столько сил на него потрачено было, с одними только видеороликами несколько месяцев возился, когда субтитры вставлял

7
Guyver(X.B.M.), спасибо, но уже сделал свой, но если что, попробую твой вариант.
Редактор текста тоже готов, после "Magic Knight Rayearth" займусь SF3.


Что там по лунар?....прошла любовь, завяли помидоры?
Лунар уже трое брались доперевести, и все пропадали.

8
lupus, там же без курсива.
уже тогда рипать с рус версия предыдущих частей SF

9
продолжаю перевод "Magic Knight Rayearth" на сатурн, но случайно наткнулся на утилиты для перевода "Shining Force 3", попробовал - они даже работают, только надо сделать удобный редактор текста.


может у кого есть под рукой похожий шрифт? чтобы не тратить время на его поиски


10
Проверять текст гораздо проще в текстовом виде, а не во время тестирования. Готов помочь, если что.
помочь в редактуре или переводе?
если в редактуре, то как будет готов черновой вариант перевода, скину

11
Mefistotel, ну это самая первая тестовая вставка текста, многое конечно поправиться при тесте игры.

12
Начал перевод игры для Sega Saturn - "Magic Knight Rayearth". Надеюсь, доведу до конца, но текста конечно не мало.


13
Dagerjack, хм, я его уже начинал переводить лет 10 назад, но забил. Могу поделиться инструментами (правда не помню понятное дело что там к чему)

14
Dagerjack, какая игра, какая платформа?

15
выложил перевод игры "Elemental Gimmick Gear" на psxplanet

16
raller78, да наверное завтра уже выложу, т.к. ухожу на месяц в отпуск, а у меня вся эта кухня на работе.

17
не понял что это, но походу какая-то программа для изучения японского языка? :unsure:

18
а там MPQ архивы как и было? там же названия файлов насколько я помню захэшированы. и тексты точно пожаты скорее всего

19
он не сохраняет все игры как квикстейт в эмулях, он сохраняет игры, в которых предусмотрено сохранение (с батарейкой которые)

20
уже почти закончил перевод игры "Elemental Gimmick Gear", на след. неделе отдам на тест.
может кто-нить помочь найти графику в игре? всю что надо, нашёл и перерисовал, остались 2 картинки во весь экран с надписями локаций. Они в самом начале, после непродолжительного трындежа героев.
графика в PVR но без заголовков. перерыл почти все файлы, но чёт не вижу нигде.

Добавлено позже:
закончил перевод "Elemental Gimmick Gear", есть желающие протестировать? а то тот, кто изначально вызвался, уже молчит.

21
Ага, он говорил что где-то исходник или алгоритм сжатия нашёл.
я использовал модуль для Delphi, где взял не помню, где-то в нете, но очень давно.

unit LZss;

interface

uses
  Windows, Classes;

Procedure LZSSCompress(LZss_Ms: TStream);
procedure LZSSDecompress(LZss_Ms: TStream);

Type
  chunk_t = record
    code, bitcount: byte;
  end;

  lz_t = record
    length, offset, distance: Word;
  end;

const
  Window_Size = 4095;
  Max_Match_Length = 17;
  Min_Match_Length = 2;

implementation

Procedure search_lz(pos: integer; Buffer: Array of byte; inputsize: integer;
  var lz: lz_t);
var
  lz_off, lz_len: integer;
  match: byte;
  win: integer;
begin
  lz_off := 0;
  lz_len := 0;
  match := 0;
  win := pos - Window_Size;
  if win < 0 then
    win := 0;
  while (win < pos) and (win + Max_Match_Length < pos + Max_Match_Length) do
  begin
    if Buffer[win] = Buffer[pos] then
    begin
      match := 1;
      while (Buffer[win + match] = Buffer[pos + match]) and
        (pos + match < inputsize) do
      begin
        if match >= Max_Match_Length then
          Break;
        inc(match);
      end;
      if match > lz_len then
      begin
        lz_len := match;
        lz_off := win;
      end;
    end;
    if match > Max_Match_Length then
    begin
      lz_len := Max_Match_Length;
      Break;
    end;
    inc(win);
  end;
  lz.length := lz_len;
  lz.offset := lz_off;
  lz.distance := pos - lz_off;
end;

Procedure write_lz(var read_pos: integer; var write_buf: Array of byte;
  var write_pos: integer; var lz: lz_t; var chunk: chunk_t);
var
  lz1, lz2: byte;
  lz_dist, lz_len: Word;
  lz_d1, lz_d2: Word;
begin
  lz_dist := lz.distance;
  lz_len := (lz.length - Min_Match_Length) and $0F;
  lz_len := (lz_len shl 4) and $F0;
  lz_d1 := (lz_dist and $0F00) shr 8;
  lz_d2 := lz_dist and $FF;
  lz1 := lz_d2;
  lz2 := lz_d1 or lz_len;
  write_buf[write_pos] := lz1;
  inc(write_pos);
  write_buf[write_pos] := lz2;
  inc(write_pos);
  read_pos := read_pos + lz.length;
  chunk.code := chunk.code shr 1;
  chunk.code := chunk.code or $00;
  inc(chunk.bitcount);
end;

Procedure write_lit(var read_pos: integer; var read_buf: Array of byte;
  var write_pos: integer; var write_buf: Array of byte; var chunk: chunk_t);
begin
  write_buf[write_pos] := read_buf[read_pos];
  inc(write_pos);
  inc(read_pos);
  chunk.code := chunk.code shr 1;
  chunk.code := chunk.code or $80;
  inc(chunk.bitcount);
end;

Procedure LZSSCompress(LZss_Ms: TStream);
var
  input, output: Array of byte;
  inputposition, outputposition, headerposition: integer;
  inputsize: integer;
  lz, lz_alt: lz_t;
  chunk: chunk_t;
  bit_shift: byte;
begin
  chunk.code := 0;
  chunk.bitcount := 0;
  headerposition := 0;
  inputposition := 0;
  outputposition := 1;
  inputsize := LZss_Ms.Size;
  SetLength(input, inputsize);
  SetLength(output, inputsize);
  LZss_Ms.Read(input[0], inputsize);
  LZss_Ms.Size := 0;
  LZss_Ms.Position := 0;
  write_lit(inputposition, input, outputposition, output, chunk);
  while inputposition < inputsize do
  begin
    search_lz(inputposition, input, inputsize, lz);
    search_lz(inputposition + 1, input, inputsize, lz_alt);
    if (lz_alt.length > lz.length) and (lz_alt.length >= Min_Match_Length) then
      write_lit(inputposition, input, outputposition, output, chunk)
    else
    begin
      if lz.length < Min_Match_Length then
        write_lit(inputposition, input, outputposition, output, chunk)
      else
        write_lz(inputposition, output, outputposition, lz, chunk);
    end;
    if chunk.bitcount = 8 then
    begin
      output[headerposition] := chunk.code;
      chunk.code := $00;
      chunk.bitcount := 0;
      headerposition := outputposition;
      inc(outputposition)
    end;
  end;
  if (chunk.bitcount < 8) and (chunk.bitcount <> 0) then
  begin
    bit_shift := 8 - chunk.bitcount;
    chunk.code := chunk.code shr bit_shift;
    output[headerposition] := chunk.code;
  end;
  SetLength(output, outputposition);
  LZss_Ms.WriteBuffer(output[0], outputposition);
  LZss_Ms.Position := 0;
end;

procedure LZSSDecompress(LZss_Ms: TStream);
var
  Temp_Ms: Tmemorystream;
  ch, Temp_, Temp: byte;
  i, jump, Size, flag: integer;
  b: array [0 .. 16] of byte;
  Temp_Offset, Last_Offset: DWORD;
begin
  flag := 1;
  LZss_Ms.Position := 0;
  Temp_Ms := Tmemorystream.Create;
  while LZss_Ms.Position < LZss_Ms.Size do
  begin
    if flag = 1 then
    begin
      LZss_Ms.Read(Temp, 1);
      flag := Temp or $100;
    end;
    LZss_Ms.Read(ch, 1);
    if Bool(flag and 1) then
      Temp_Ms.Write(ch, 1)
    else
    begin
      LZss_Ms.Read(Temp_, 1);
      jump := ((Temp_ and $F) shl 8) or ch;
      Size := (Temp_ shr 4) + 2;
      Temp_Offset := Temp_Ms.Position;
      Temp_Ms.Position := Temp_Ms.Position - jump;
      Last_Offset := Temp_Ms.Position;
      for i := 0 to Size - 1 do
      begin
        Temp_Ms.Read(b[i], 1);
        if Temp_Ms.Position >= Temp_Ms.Size then
          Temp_Ms.Position := Last_Offset;
      end;
      Temp_Ms.Position := Temp_Offset;
      Temp_Ms.Write(b, Size);
    end;
    flag := flag shr 1;
  end;
  LZss_Ms.Size := 0;
  Temp_Ms.Position := 0;
  LZss_Ms.CopyFrom(Temp_Ms, Temp_Ms.Size);
  LZss_Ms.Position := 0;
  Temp_Ms.Free;
end;

end.

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

23
perfect_genius, а зачем может понадобиться достать речь без фона?  o_0 для озвучки как раз-таки нужен фон без речи

24
Спасибо, но я уже сделал свою прогу для извлечения графики

25
С тестированием могу помочь
ок, отпишусь как будет дело идти к завершению

26
шрифт 512*512, 4 бит, начинается с позиции 0х100, палитра с позиции 0х88 (вроде) с альфаканалом
редактируй любым тайловым редактором, например TileMolester

27
"Elemental Gimmick Gear" - занимаюсь в плотную, думаю через месяц (а то и меньше) будет перевод. Но нужен будет тестер

28
e2e41, спасибо, поглядим

29
видно она до пиратов не дошла в своё время.
делаю на основе полной версии с редампа, GDI переделанный в CDI при пересборке

30
недавно приобрел дримку, осваиваю платформу. Наткнулся на игру "Elemental Gimmick Gear", начало зацепило, но как оказалось русской версии вообще не существует, покопался в ресурсах - взялся переводить


а есть какая нить утилита для поиска PVR графики без заголовка? там графика именно в таком формате, в кучу свалены все PVR без заголовка

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