nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 14:29



Reply to topic  [ 20 posts ]  Go to page 1, 2  Next
Super Mario 
Author Message
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Залип на неделю, ничего с собой поделать не могу. :)

Занимаюсь реверс инженерингом Супер Марио. Пишу на Си. Давным давно я задумал перенести его на советские компьтеры. Так, что бы геймплей был 1 в 1.

Музыку из Марио я давно выдрал, и давно сделал демо программу для Апогея (клон Радио 86РК) демонстрирующую, как будет выглядеть Марио и что это в принцепи возможно.

Image
(На палитру и прозрачность пока пофиг)

Какие успехи
1) Музыкальная часть полностью расшифрована и портирована на 8080 и КР580ВИ53
2) Работа с видеопроцессором полностью переписана и адаптирована.
2) Программу построения уровней я написал, но проверял пока на первом уровне.
3) Логика моба "Гриб" написана
4) Управление Марио повторено на 100% (разбег, торможение, прыжки, прыжки с разбегу)
5) Бонусы работают (грибы бегают, звездочки прыгают по экрану), время работает.

Сейчас занимаюсь отладкой взаимодействия мобов, игрока и карты.

Ну и главная цель разобраться с функцией/именем каждой переменной.


15 Aug 2013 12:43
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Насколько я знаю, что уже лет 7-10 назад SMB был отреверсирован и аккуратно откомментирован. Исходники гуглятся в принципе не сложно.


15 Aug 2013 22:12
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Я искал ведь и ничего не нашел.

Видел несколько похожих Марио, но всё это лишь подобия.


15 Aug 2013 23:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Никогда не играл в эту игру... может к сожалению, а может и нет...

_________________
iLavr


16 Aug 2013 03:59
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Фанаты NES однозначно соглашаются с тем, что это лучшая игра на NES. (Не считая продолжений этой игры).

А на советских компах с играми не очень хорошо.

Вот я и подумал, что стоит её перенести. Причем, перенести одинв один со всеми глюками.

Прикиньте, текстовый Марио на 86РК :)

Я с самых первых часов ковыряния стал находить всякие закладки, например если нажать A+Start в меню, то продолжишь играть с того же мира, где погиб. Уверен на все 200%, что это давно всем известно, но вдруг есть другие, неизвестные глюки и закладки.

А так же научится писать марио-подобные игры :)

Пока что пытаюсь найти ошибку в программе контроля пересечения Марио и мобов. Всё было бы просто, но там куча неизвестных полка переменных.


16 Aug 2013 04:37
Profile
Retired
User avatar

Joined: 25 Jul 2011 00:14
Posts: 1331
Location: WWW
Reply with quote
Post 
Lavr wrote:
Никогда не играл в эту игру... может к сожалению, а может и нет...
дай я пожму тебе руку


16 Aug 2013 05:18
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Как будто я в неё играл :)


16 Aug 2013 05:50
Profile
Retired
User avatar

Joined: 25 Jul 2011 00:14
Posts: 1331
Location: WWW
Reply with quote
Post 
vinxru wrote:
Как будто я в неё играл :)
и тебе тоже.

да, марио вроде как на спек пилили, но что-то не срослось. лучше пили рокманов или гунисов.


16 Aug 2013 06:08
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
vinxru wrote:
Я искал ведь и ничего не нашел.

Видел несколько похожих Марио, но всё это лишь подобия.

Вот, нашел. Шедевр врать не будет.


16 Aug 2013 12:06
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Во, спасибо. А я не нашел :)

А я делаю вот такую штуку.

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
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
vinxru wrote:
А я делаю вот такую штуку.

Это у тебя автоматом генерится, что-ли?

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


16 Aug 2013 23:17
Profile WWW
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Ручками. Но есть идея на будущее, сделать автоматическое преобразование. А потом автоматическую оптимизацию и рефакторинг, что бы код красиво выглядел.


17 Aug 2013 05:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
vinxru wrote:
Ручками. Но есть идея на будущее, сделать автоматическое преобразование. А потом автоматическую оптимизацию и рефакторинг, что бы код красиво выглядел.

Ручками - декомпильнул ASSM-комментарии?

_________________
iLavr


17 Aug 2013 06:17
Profile
Retired

Joined: 27 Mar 2013 04:55
Posts: 587
Location: 62.192.229.16
Reply with quote
Post 
Сначала в IDA сделал ассемблерный файл, а потом дня три делал Си-шную программу.

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


17 Aug 2013 07:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
HardWareMan wrote:
vinxru wrote:
Я искал ведь и ничего не нашел.
Видел несколько похожих Марио...

Вот, нашел. Шедевр врать не будет.

Хардыч, меня по твоей ссылке вот что заинтересовало неожиданно:
Quote:
Solomon's Key - интересно, что в игре используется кооперативная многозадачность!

Но что-то я не понял - где там по ссылке исходники? Вроде как там разговор о ботах на С идёт...

_________________
iLavr


18 Aug 2013 12:49
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 20 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.