Разработка и ромхакинг > Ромхакинг
[SMD] Rock 'n' Roll Racing -= Ломаем игру=-
r57shell:
не, двойку надо тоже анимировать
Добавлено позже:
добавил hexdumper. (всё остальное такоеже)
BARAKA:
продолжаем адский бред из мозга!
Добавлено позже:
я схожу с ума.но почемуб в игру не вставить персов из других игрр?например мк?!
Добавлено позже:
воть
Добавлено позже:
гроуви!встречаем червя джима!
Остановите меня кто нибудь!а то сюда и кирби думаю залезет...
Добавлено позже:
АХТУНГ!ещё 2 идеи,точнее одна но в двух воплощениях.
олафу одному скучно в игре,вот я и подумал его развеселить другом БАЛЕОГОМ!
topos84:
Балеог №2 неплохо впишется, имхо.
Nemesis_c:
--- Цитата: topos84 от 26 Апреля 2010, 20:48:57 ---Балеог №2 неплохо впишется, имхо.
--- Конец цитаты ---
физиономии не должны сильно выезжать по бокам за рамку и не должны выезжать по высоте
topos84:
--- Цитата: Nemesis_c ---физиономии не должны сильно выезжать по бокам за рамку и не должны выезжать по высоте
--- Конец цитаты ---
Я имел в виду по дизайну. А так да - нужно рамку передвинуть, да и рожу подуменьшить чуть-чуть.
Nemesis_c:
--- Цитата: Ti_ от 16 Апреля 2010, 18:52:41 ---+отображение ховера в меню апгрейдов исправлено.
адреса для замены его графики:
$1D2720 gfx --- не должен превышать $1000 байт
$1D3720 gfx2 -- не должен превышать $400 байт
--- Конец цитаты ---
нарисовал Hover для замены его отображения в магазине, но в ром не лезет:
gfx -- $1283
gfx2 - $497
Добавлено позже:
нарисовал Topos84, в ром не лезет:
gfx -- $1663
gfx2 - $4B9
r57shell:
Так! Ура я сделал это. Короче изменил ром так, что теперь архивы будет в разы проще менять. Баги просьба сообщать. Вроде покачто не найдены.
Теперь на счёт как теперь архивы менять: толкаем архив по любому адрессу только первые 2 байта - размер архива и меняем в таблице адресс и ТАДА ВСЁ БЕЗ ГЛЮКОВ ).
Добавлено позже:
Ti_ мало места выделил... поэтому глюки :)
Nemesis_c:
нарисовал DD BTR X6 1, в ром не лезет:
gfx -- $150F
gfx2 - $4B9
нарисовал DD BTR X6 2, в ром не лезет:
gfx -- $1482
gfx2 - $4B9
topos84:
--- Цитата: Nemesis_c ---нарисовал Topos84, в ром не лезет:
--- Конец цитаты ---
А смотрится этот "топомобиль" конечно ужасно. На дороге лучше намного (может, потому что там колеса больше кажутся?).
Добавлено позже:
--- Цитата: Nemesis_c ---нарисовал DD BTR X6 2, в ром не лезет
--- Конец цитаты ---
А если ему фары чуть выше бампера поднять, лучше будет смотреться, как думаешь?
topos84:
--- Цитата: Nemesis_c ---его не планировали вставлять в хак - но можно дорисовать и воткнуть. правда машин и так много, а толку мало
--- Конец цитаты ---
Да хотя бы ради прикола можно поэкспериментировать и дальше. Например, мародер на гусеницы поставить, а? :)
topos84:
--- Цитата: Nemesis_c ---можно. займись - это очень просто. я тебе обьяснял как Улыбка
серьезно просто. но долго.
--- Конец цитаты ---
Я и сам хочу, да все никак с семеркой до конца не разобрался. Мне и самому уже стыдно. :-\
r57shell:
прога которой можно менять влёгкую архивы: только скажи ей какой ром изменить, какой архив заменить, по какому оффсету вставить архив.
работает ТОЛЬКО с lzss версией.
Nemesis_c:
нарисовал Pantera (DeLorean), в ром не лезет:
gfx -- $1289
gfx2 - $4B9
Doctor Venkman:
Nemesis_c,
Жутко кривая она. Колеса не соединены осью. Да и находятся они в одной проекции, а машина в другой.
Nemesis_c:
--- Цитата: Doctor Venkman от 27 Апреля 2010, 02:58:13 ---Nemesis_c,
Жутко кривая она. Колеса не соединены осью. Да и находятся они в одной проекции, а машина в другой.
--- Конец цитаты ---
ну... как умею так и малюю. можете все говорить что не умею, мне все-равно. :lol: других желающих что-то нарисовать пока нет...
а машинка получилась в карикатурном стиле - когда вся плоскость выгнута и увеличена не пропорционально.
но за критику спасибо :)
Добавлено позже:
попытался нарисовать Formula. в ром не лезет:
gfx -- $14B3
gfx2 - $4B9
AKM1989:
--- Цитата: topos84 от 27 Апреля 2010, 00:07:59 ---Да хотя бы ради прикола можно поэкспериментировать и дальше. Например, мародер на гусеницы поставить, а? :)
--- Конец цитаты ---
Вот на этот вариант я бы с удовольствием посмотрел))
Тут недавно поиграл в вариант SNES... Сначала было немного непривычно, но в итоге впечатленния оказались приятные) Музыка, графика, звук - все на порядок лучше версии на сеге. Очень приятно реализованы резкие повороты... Удобнее чем на сеге) Ну это так...
BARAKA:
Nemesis_c,молодец,рисуешь хорошо,все машинки норм,вот только пантера как-то не ахти.она и на дороге ИМХО не ахти.
а с гибридами идея не очень,т.к надо по моему надо новые рисовать.однако кроме Nemesis_c никто вообще не рисует.
Критиковать то все мастера,а вот наваять что получше не может никто.(сори,накипело)
А по поводу лиц было сделано в пэинте от скуки и от отчаяния что я не программер.
а если что можно подрисовать кого нибудь ещё
r57shell:
--- Цитата: BARAKA от 27 Апреля 2010, 11:44:51 ---и от отчаяния что я не программер.
--- Конец цитаты ---
учись.
Добавлено позже:
#include <stdio.h> //подключаем библиотеку ввода вывода
#include <io.h> //ввод вывод только более низкого уровня
#include <fcntl.h> //для констант открытия файлов (каким образом открыть файл)
void usage() //функция которая будет выводить "Usage"
{
printf( //функция которая выводит строки на консоль
"Usage:\n" //С++ так устроен что если видит подряд идущие строки то склеивает их в одну
" .exe rompath archive_id offset archivepath\n" // \n это перевод строки
"\n" // аналогично \t табуляция
" Author r57shell@uralweb.ru\n"
" last update 27.04.10");
} //функция закончилась
int gi(char *s) //объявим функцию другую (параметр указатель(адресс) на символ(на первый в строке))
{ //эта будет по строке определять какое число написано
int r=0; //сначала число "ответ" равно нулю
while(*s>='0'&&*s<='9') //если в строке видим цифру
{ //конец строки по определению символ с кодом 0
r*=10; //умножим текущий ответ на 10 это тоже самое что r=r*10;
r+=*s-'0'; //т.к. символы это их коды, то чтобы узнать число нужно вычесть код нуля
++s; //увеличим адресс на единичку
}
return r; //вернём ответ
} //конец функции
int gx(char *s) //аналогично только теперь щестнадцатиричное число надо распознать
{
int r=0;
while((*s>='0'&&*s<='9')
||(*s>='A'&&*s<='F')
||(*s>='a'&&*s<='f'))
{
r*=16;
if (*s>='0'&&*s<='9')
r+=*s-'0'; //если цифра то вычесть код нуля
else if (*s>='A'&&*s<='F')
r+=*s-'A'+10; //если буква то вычесть код буквы и прибавить 10 т.к. A = 10
else if (*s>='a'&&*s<='f')
r+=*s-'a'+10;
++s;
}
return r;
}
//эта функция запускается при запуске .exe
int main(int argc, char ** argv) //argc - кол-во параметров командной строки, argv - сами параметры (указатель(адресс) первого указателя(адресса) на первый символ строки))
{
if (argc!=5) //если параметров не 5 (путь к текущему .exe + параметры) то нам не всё ввели
{
usage(); //выводим как использовать
return 0; // выходим
}
int rom=_open(argv[1], _O_BINARY|_O_RDWR); //открываем файл (первый аргумент путь к рому) открываем с флагами "бинарно" и "чтение-запись"
if (rom==-1) //если несмог открыть то он вернёт -1 поэтому проверяем если -1 то несмогли открыть
{
printf("Can't open file \"%s\"",argv[1]); //выводим что несмогли открыть такойто файл
usage(); // вдруг просто пользователь не те параметры указал, показываем ему как использовать
return 0; // выходим
}
FILE *f=fopen(argv[4],"rb"); //открываем файл (это другая функция, тут по другому открывается)
if (!f) //она выдаёт 0 если несмогла открыть а 0 тоже самое что false, а "!" это оператор логического "не", то есть тут написано если f==0 (в таком случае (не(лож)) будет равно истина)
{ //тогда
printf("Can't open file \"%s\"",argv[4]); // неможем открыть файл
usage(); //использование
return 0; //выходим
}
int id=gi(argv[2]), // обьявляем id и переводим второй аргумент в число
len,
size=2, //размер архива сначала говорим = 2 т.к. там эти 2 байта... сюда мы вычислим размер архива
offset=gx(argv[3]);
lseek(rom,offset+2,SEEK_SET); //lseek выставляет позицию чтения/записи (на подобии курсора) в файле. говорим перейти на адресс offset+2 - туда будем писать архив сжатый
unsigned char buff[1000]; //обьявим массив - будет буфером
for (;;) //цикл без условий (бесконечный)
{
len=fread(buff,1,1000,f); //попытаемся считать 1000 символов. функция выводит кол-во считанных
if (!len) //несчитали не один значит файл закончился
break; //прерываем цикл
_write(rom,buff,len); //пишем в ром из буффера ровно len байтов
size+=len; //увеличиваем значение размера на то скока считали.
}
//разделим размер архива на 2 байта
buff[0]=size>>8; //сначала старший байт (">>" битовый сдвиг вправо(тоже самое что целочисленное делние на 2) правый операнд - кол-во делений(на сколько бит сдвинуть) ) 8 бит - один байт
buff[1]=size; //теперь младший байт. фишка в том что символ - один байт, и всё что не влезает в байт просто обрезается - остаются только младшие 8 битов
lseek(rom,offset,SEEK_SET); //перейдём на оффсет
_write(rom,buff,2); //запишем размер архива
lseek(rom,0x6B000+id*4,SEEK_SET); //6B000 - адресс таблицы адресов архивов. Перейдём к id значению таблицы
offset-=0x6B000; //разберём оффсет на 4 байта (запись в таблице адресов архивов - 4 байта)
buff[3]=offset; //сначала младший
buff[2]=offset>>8; //2-й байт
buff[1]=offset>>16; //третий
buff[0]=offset>>32; //четвёртый
_write(rom,buff,4); //запишем в таблицу 4 байта
//теперь почему buff[3] а байт младший. а потому что в сеге little-endian - то есть маленький - последний. младший байт - последний.
//а вот на x86 наоборот - big-endian старший - последний.
return 0;
}
Добавлено позже:
поднимаю старые исходники, привожу впорядок. вот пересобрал CarEdit вроде ничего нового нету, только может русские имена файлов теперь не глючат, ито не факт. просьба баги сообщать.
Добавлено позже:
Аналогично (а ну + более удобный интерфейс) ImageToSega
Добавлено позже:
И Palette
Vivi the Black Mage:
Почему бы не сделать шапку темы в которой можноо указывать ссылки на старые и новые версии рома и утилит для редактинга?
Brick_Man:
Вот нарисовал... бред, конечно, но всё же... верхнюю часть начиная с очков планируется сделать металлической, и металлический ирокез, а подбородок и зубы - живые человеческие. Этакий киборг-металлист... :D Конечно это вам не фотошоп :lol:
Навигация
Перейти к полной версии