Author |
Message |
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Залип на неделю, ничего с собой поделать не могу.
Занимаюсь реверс инженерингом Супер Марио. Пишу на Си. Давным давно я задумал перенести его на советские компьтеры. Так, что бы геймплей был 1 в 1.
Музыку из Марио я давно выдрал, и давно сделал демо программу для Апогея (клон Радио 86РК) демонстрирующую, как будет выглядеть Марио и что это в принцепи возможно.
(На палитру и прозрачность пока пофиг)
Какие успехи
1) Музыкальная часть полностью расшифрована и портирована на 8080 и КР580ВИ53
2) Работа с видеопроцессором полностью переписана и адаптирована.
2) Программу построения уровней я написал, но проверял пока на первом уровне.
3) Логика моба "Гриб" написана
4) Управление Марио повторено на 100% (разбег, торможение, прыжки, прыжки с разбегу)
5) Бонусы работают (грибы бегают, звездочки прыгают по экрану), время работает.
Сейчас занимаюсь отладкой взаимодействия мобов, игрока и карты.
Ну и главная цель разобраться с функцией/именем каждой переменной.
|
15 Aug 2013 12:43 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Насколько я знаю, что уже лет 7-10 назад SMB был отреверсирован и аккуратно откомментирован. Исходники гуглятся в принципе не сложно.
|
15 Aug 2013 22:12 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Я искал ведь и ничего не нашел.
Видел несколько похожих Марио, но всё это лишь подобия.
|
15 Aug 2013 23:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Никогда не играл в эту игру... может к сожалению, а может и нет...
_________________ iLavr
|
16 Aug 2013 03:59 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Фанаты NES однозначно соглашаются с тем, что это лучшая игра на NES. (Не считая продолжений этой игры).
А на советских компах с играми не очень хорошо.
Вот я и подумал, что стоит её перенести. Причем, перенести одинв один со всеми глюками.
Прикиньте, текстовый Марио на 86РК
Я с самых первых часов ковыряния стал находить всякие закладки, например если нажать A+Start в меню, то продолжишь играть с того же мира, где погиб. Уверен на все 200%, что это давно всем известно, но вдруг есть другие, неизвестные глюки и закладки.
А так же научится писать марио-подобные игры
Пока что пытаюсь найти ошибку в программе контроля пересечения Марио и мобов. Всё было бы просто, но там куча неизвестных полка переменных.
|
16 Aug 2013 04:37 |
|
|
MC68k
Retired
Joined: 25 Jul 2011 00:14 Posts: 1331 Location: WWW
|
|
16 Aug 2013 05:18 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Как будто я в неё играл
|
16 Aug 2013 05:50 |
|
|
MC68k
Retired
Joined: 25 Jul 2011 00:14 Posts: 1331 Location: WWW
|
и тебе тоже.
да, марио вроде как на спек пилили, но что-то не срослось. лучше пили рокманов или гунисов.
|
16 Aug 2013 06:08 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Вот, нашел. Шедевр врать не будет.
|
16 Aug 2013 12:06 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Во, спасибо. А я не нашел
А я делаю вот такую штуку.
| | | | Code: // a=0 Рисуем верхнюю строку подписей // a=1 WORLD // a=2 TIMEUP / LUIGI TIMEUP // a=3 GAME OVER / MARIO GAME OVER // a=4 WELCOME TO WARP ZONE 432 // a=5 WELCOME TO WARP ZONE 5 // a=6 WELCOME TO WARP ZONE 876 void drawScreen_8808() { // DEBUG // m.switch2_73C--; // m.menuPlayer_77A = 1; // a = 5;
static uchar byte_87FE[] = { 0,0,0x27,0x27,0x46,0x4E,0x59,0x61,0x6E,0x6E };
uchar a1 = a; // PHA
// Расчет смещения y = a << 1; // ASL A TAY if(y >= 4) { // CPY #4 BCC loc_881B if(y >= 8) y = 8; // CPY #8 BCC loc_8815 LDY #8 loc_8815: if(m.menuPlayer_77A==0) y++; // LDA m.menuPlayer_77A BNE loc_881B INY } // loc_881B: x = byte_87FE[y]; // LDX m.byte_87FE,Y
// Вывод на экран y = 0; // LDY #0 do { // loc_8820: a = byte_8752[x]; // LDA m.byte_8752,X if(a==0xFF) break; // CMP #$FF BEQ loc_882E (&m.byte_301)[y] = a; // STA m.byte_301,Y x++; y++; // INX INY } while(y!=0); // BNE loc_8820 loc_882E: (&m.byte_301)[y] = 0; // LDA #0 STA m.byte_301,Y
// Это вывод WELCOME TO WARP ZONE x = a = a1; // PLA TAX if(a >= 4) { void loc_8882(); loc_8882(); return; } // CMP #4 BCS loc_8882
x--; // DEX if(x == 0) { // BNE loc_885F // Заставка WORLD. Выводим жизни. a = m.lives_75A+1; // LDA m.lives_75A CLC ADC #1 if(a >= 10) { // CMP #$A BCC loc_884D a -= 10; // SBC #$A m.byte_308 = 0x9F; // LDY #$9F STY m.byte_308 } // loc_884D: m.byte_309 = a; // STA m.byte_309 // Выводим уровень m.byte_314 = m.world_h_75F+1; // LDY m.world_h_75F INY STY m.byte_314 m.byte_316 = m.world_l_75C+1; // LDY m.world_l_75C INY STY m.byte_316 return; // RTS } // loc_885F: // Игра на одного, не выводим MARIO/LUIGI if(m.menuPlayer_77A==0) return; // LDA m.menuPlayer_77A BEQ locret_8881 // Какая то блокировка a = m.byte_753; // LDA m.byte_753 x--; // DEX if(x==0 && m.switch0_770!=3) { // BNE loc_8873 LDY m.switch0_770 CPY #3 BEQ loc_8873 a ^= 1; // EOR #1 } // loc_8873: if((a & 1)==0) return; // LSR A BCC locret_8881
// Заменяем надпись MARIO на LUIGI y = 4; // LDY #4 do { (&m.byte_304)[y] = byte_87ED[y]; // LDA m.byte_87ED,Y STA m.byte_304,Y y--; // DEY } while(y < 0x80); // BPL loc_8878 } // RTS
| | | | |
|
16 Aug 2013 13:43 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 866
|
Это у тебя автоматом генерится, что-ли?
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
16 Aug 2013 23:17 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Ручками. Но есть идея на будущее, сделать автоматическое преобразование. А потом автоматическую оптимизацию и рефакторинг, что бы код красиво выглядел.
|
17 Aug 2013 05:40 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ручками - декомпильнул ASSM-комментарии?
_________________ iLavr
|
17 Aug 2013 06:17 |
|
|
vinxru
Retired
Joined: 27 Mar 2013 04:55 Posts: 587 Location: 62.192.229.16
|
Сначала в IDA сделал ассемблерный файл, а потом дня три делал Си-шную программу.
Ошибок море, сначала оно даже не запускалось. Теперь по мелочи глючит. Например, черепахой нельзя сбивать грибы, но можно других черепах.
|
17 Aug 2013 07:42 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Хардыч, меня по твоей ссылке вот что заинтересовало неожиданно:
Но что-то я не понял - где там по ссылке исходники? Вроде как там разговор о ботах на С идёт...
_________________ iLavr
|
18 Aug 2013 12:49 |
|
|