Эмуляция > Эмуляторы консолей 5 поколения

Эмуляторы Jaguar'а

<< < (7/18) > >>

ParagonUnits:
Morphium, мать вашу, ничерта не работает, что 346, что 351! Ромы видит, биос закинул, указал, запускаю игру - ничего не происходит, даже чёрного экрана нет!

Photon9:
Биос нафиг нужен, у тебя видимо русский есть на пути эмуля

Добавлено позже:

--- Цитата: Morphium ---В ней ромы видно только если их закинуть в корневую папку эмулятора.
--- Конец цитаты ---
Без проблем находит и в папке roms. В этой реве они даже попытались включить звук,  хм вобщем пока кроме нового гуя особых различий с 1.0.1 не заметил, а ну да размер в 200 мегабайт с хвостиком  :)

Добавлено позже:
З.Ы. Хотя нет не совсем без проблем находит ромы, один раз запустишь видит, другой раз нет , некоторые же ромы вообще игнорирует и не обнаруживает, видимо есть список ромов по контрольным сумам и те которые в него не внесены эмуль тупо игнорирует

EdHell:
В VJ есть база имен, которые он хочет, желательное расширение j64. Возможно проблемы с поиском отличных от них. Кроме того, там же в базе имена коверов, по идее эти картинки надо класть к ромкам и эмулятор их "наклеит" на рисунок картриджа. Например:

Double Dragon V - The Shadow Falls (World).j64
double-dragon.jpg

Alien vs Predator (World)
alien-vs-predator.jpg

Atari Karts (World)
atari-karts.jpg

и т.д.

И еще у меня есть стойкое ощущение, что на имена эмулю может и пофиг, а вот чексуммы ромок он проверяет. При этом нужны ему нифига не гудовские, ибо в базе сидят ноинтро. Остается качнуть и проверить.



--- Цитата: Photon9 ---Биос нафиг нужен
--- Конец цитаты ---
Ну если вы не хотите запускать половину игр и не нужен звук - то да, нафиг этот биос. :D Иначе будьте так любезны положить его куда надо и указать в настройках. Эмуль кстати лопает зипы, как биос, так и картриджи.

Photon9:
У меня подцепляет ромы и с расширением bin и с jag и с rom , но вот некоторые вообще игнорирует например ARENA_Football_'95_(1995).jag , Hyper_Force_(1995).jag

EdHell:
Вот потому и не работает - внутри база ноинтро, построенная по принципу аркадных эмуляторов. Если ром не проходит по CRC либо в базе отсутствует, то его просто не запустить. Так что тащи ноинтро для гарантии, а уж если чего в нем нет, то облом (вот этого футбола нет например, а рабочий гиперфорс - есть).

Photon9:

--- Цитата: EdHell ---Ну если вы не хотите запускать половину игр и не нужен звук - то да, нафиг этот биос.  Иначе будьте так любезны положить его куда надо и указать в настройках. Эмуль кстати лопает зипы, как биос, так и картриджи.
--- Конец цитаты ---

Хм, ну уж не знаю как по мне то отличие только в заставке при запуске. Можно конкретные примеры?

EdHell:
ОК, навскидку. Alien vs. Predator, Raiden - без биоса не запускаются. Все, что запускается без биоса - идет без звука вообще. Удалил путь к биосу вообще - ни одна игра не запускается.

Morphium:

--- Цитата: EdHell от 30 Июнь 2011, 17:31:48 ---Вот потому и не работает - внутри база ноинтро

--- Конец цитаты ---
Ага, она в filedb.cpp:

RomIdentifier romList[] = {
   { 0x0509C85E, "Raiden (World)", FF_ROM },
   { 0x08F15576, "Iron Soldier (World) (v1.04)", FF_ROM },
   { 0x0957A072, "Kasumi Ninja (World)", FF_ROM },
   { 0x0AC83D77, "NBA Jam T.E. (World)", FF_ROM },
   { 0x0EC5369D, "Evolution - Dino Dudes (World)", FF_ROM },
   { 0x0F6A1C2C, "Ultra Vortek (World)", FF_ROM },
   { 0x14915F20, "White Men Can't Jump (World)", FF_ROM },
   { 0x1660F070, "Power Drive Rally (World)", FF_ROM },
   { 0x1E451446, "Trevor McFur in the Crescent Galaxy (World)", FF_ROM },
   { 0x20DBFF9F, "Breakout 2000", FF_ROM },
   { 0x27594C6A, "Defender 2000 (World)", FF_ROM },
   { 0x2E17D5DA, "Bubsy in Fractured Furry Tales (World)", FF_ROM },
   { 0x348E6449, "Double Dragon V - The Shadow Falls (World)", FF_ROM },
   { 0x3615AF6A, "Fever Pitch Soccer (World) (En,Fr,De,Es,It)", FF_ROM },
   { 0x38A130ED, "Troy Aikman NFL Football (World)", FF_ROM },
   { 0x3C044941, "Skyhammer (World)", FF_ROM },
   { 0x40E1A1D0, "Air Cars (World)", FF_ROM },
   { 0x42A13EC5, "Soccer Kid (World)", FF_ROM },
   { 0x45AA46BA, "Space War 2000 (World)", FF_ROM },
   { 0x47EBC158, "Theme Park (World)", FF_ROM },
   { 0x4899628F, "Hover Strike (World)", FF_ROM },
   { 0x53DF6440, "Space War 2000 (World) (OVERDUMP)", FF_ROM },
   { 0x55A0669C, "[BIOS] Atari Jaguar Developer CD (World)", FF_BIOS },
   { 0x58272540, "Syndicate (World)", FF_ROM },
   { 0x5A101212, "Sensible Soccer - International Edition (World)", FF_ROM },
   { 0x5B6BB205, "Ruiner Pinball (World)", FF_ROM },
   { 0x5CFF14AB, "Pinball Fantasies (World)", FF_ROM },
   { 0x5E2CDBC0, "Doom (World)", FF_ROM },
   { 0x61C7EEC0, "Zero 5 (World)", FF_ROM },
   { 0x67F9AB3A, "Battle Sphere Gold (World)", FF_ROM },
   { 0x687068D5, "[BIOS] Atari Jaguar CD (World)", FF_BIOS },
   { 0x6B2B95AD, "Tempest 2000 (World)", FF_ROM },
   { 0x6EB774EB, "Worms (World)", FF_ROM },
   { 0x6F8B2547, "Super Burnout (World)", FF_ROM },
   { 0x817A2273, "Pitfall - The Mayan Adventure (World)", FF_ROM },
   { 0x8975F48B, "Zool 2 (World)", FF_ROM },
   { 0x8D15DBC6, "[BIOS] Atari Jaguar Stubulator '94 (World)", FF_BIOS },
   { 0x8FEA5AB0, "Dragon - The Bruce Lee Story (World)", FF_ROM },
   { 0x97EB4651, "I-War (World)", FF_ROM },
   { 0xA27823D8, "Ultra Vortek (World) (v0.94) (Beta)", FF_ROM },
   { 0xA56D0798, "Protector - Special Edition (World)", FF_ROM },
   { 0xA9F8A00E, "Rayman (World)", FF_ROM },
   { 0xB14C4753, "Fight for Life (World)", FF_ROM },
   { 0xBCB1A4BF, "Brutal Sports Football (World)", FF_ROM },
   { 0xBDA405C6, "Cannon Fodder (World)", FF_ROM },
   { 0xBDE67498, "Cybermorph (World) (Rev 1)", FF_ROM },
   { 0xC5562581, "Zoop! (World)", FF_ROM },
   { 0xC654681B, "Total Carnage (World)", FF_ROM },
   { 0xC6C7BA62, "Fight for Life (World) (Alt)", FF_ROM | FF_BAD_DUMP },
   { 0xC9608717, "Val d'Isere Skiing and Snowboarding (World)", FF_ROM },
   { 0xCAF33BD6, "Towers II", FF_ROM },
   { 0xCD5BF827, "Attack of the Mutant Penguins (World)", FF_ROM | FF_REQ_DSP },
   { 0xD6C19E34, "Iron Soldier 2 (World)", FF_ROM },
   { 0xD8696F23, "Breakout 2000", FF_ALPINE },
   { 0xDA9C4162, "Missile Command 3D (World)", FF_ROM },
   { 0xDC187F82, "Alien vs Predator (World)", FF_ROM },
   { 0xDDFF49F5, "Rayman (Prototype)", FF_ALPINE },
   { 0xDE55DCC7, "Flashback - The Quest for Identity (World) (En,Fr)", FF_ROM },
   { 0xE28756DE, "Atari Karts (World)", FF_ROM },
   { 0xE60277BB, "[BIOS] Atari Jaguar Stubulator '93 (World)", FF_BIOS },
   { 0xE91BD644, "Wolfenstein 3D (World)", FF_ROM },
   { 0xEC22F572, "SuperCross 3D (World)", FF_ROM },
   { 0xECF854E7, "Cybermorph (World) (Rev 2)", FF_ROM },
   { 0xEEE8D61D, "Club Drive (World)", FF_ROM },
   { 0xF0360DB3, "Hyper Force (World)", FF_ROM },
   { 0xFA7775AE, "Checkered Flag (World)", FF_ROM },
   { 0xFAE31DD0, "Flip Out! (World)", FF_ROM },
   { 0xFB731AAA, "[BIOS] Atari Jaguar (World)", FF_BIOS },
   { 0xFFFFFFFF, "***END***", 0 }
};

EdHell:
Morphium, а CRC картинок там нигде нет, или куда их совать? Не видит скрины.

Morphium:

--- Цитата: EdHell от 30 Июнь 2011, 18:14:45 ---Morphium, а CRC картинок там нигде нет, или куда их совать? Не видит скрины.

--- Конец цитаты ---
EdHell, ничего такого не нашел - ни названий картинок, ни crc.

Может только что-то типа этого:

ImageDelegate::ImageDelegate()
{
   QImage cartImg(":/res/cart-blank.png");
   QPainter painter(&cartImg);
   painter.drawPixmap(23, 87, QPixmap(":/res/label-blank.png"));
   painter.end();
   cartSmall = cartImg.scaled(488/4, 395/4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}

Добавлено позже:
Хотя это за иконки в гуе отвечает

EdHell:
Morphium, в теле они есть. Но проверки по CRC нет, перед ромами указана, а перед картинками нет.

Photon9:

--- Цитата: EdHell ---Alien vs. Predator, Raiden - без биоса не запускаются
--- Конец цитаты ---
Первая у меня запускается, а вот Raiden таки да не хочет  :)

EdHell:
В r351 накосячили еще больше, не видит часть того, что 350я видела, ппц.

Morphium:

--- Цитата: EdHell от 30 Июнь 2011, 18:47:37 ---Morphium, в теле они есть. Но проверки по CRC нет, перед ромами указана, а перед картинками нет.

--- Конец цитаты ---
За картинки, скорее всего, отвечает imagedelegate.cpp

Полностью выглядит он так:

//
// imagedelegate.cpp - Qt Model/View rendering class
//
// by James L. Hammons
// (C) 2010 Underground Software
//
// JLH = James L. Hammons <jlhamm@acm.org>
//
// Who  When        What
// ---  ----------  -------------------------------------------------------------
// JLH  02/04/2010  Created this file
//

// This class takes care of rendering items in our custom model in the ListView
// class utilized in FilePicker.

#include "imagedelegate.h"

#include "filedb.h"
#include "filelistmodel.h"

//ImageDelegate::ImageDelegate(QObject * parent): QAbstractItemDelegate(parent)//, pixelSize(12)
//{
//}

ImageDelegate::ImageDelegate()
{
   QImage cartImg(":/res/cart-blank.png");
   QPainter painter(&cartImg);
   painter.drawPixmap(23, 87, QPixmap(":/res/label-blank.png"));
   painter.end();
   cartSmall = cartImg.scaled(488/4, 395/4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}

/*
Each item is rendered by the delegate's paint() function. The view calls this function with a ready-to-use QPainter object, style information that the delegate should use to correctly draw the item, and an index to the item in the model:
*/

void ImageDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
   if (option.state & QStyle::State_Selected)
      painter->fillRect(option.rect, option.palette.highlight());

/*
The first task the delegate has to perform is to draw the item's background correctly. Usually, selected items appear differently to non-selected items, so we begin by testing the state passed in the style option and filling the background if necessary.

The radius of each circle is calculated in the following lines of code:
*/

#if 0
   int size = qMin(option.rect.width(), option.rect.height());
   int brightness = index.model()->data(index, Qt::DisplayRole).toInt();
   double radius = (size/2.0) - (brightness/255.0 * size/2.0);
   if (radius == 0.0)
      return;
#endif

/*
First, the largest possible radius of the circle is determined by taking the smallest dimension of the style option's rect attribute. Using the model index supplied, we obtain a value for the brightness of the relevant pixel in the image. The radius of the circle is calculated by scaling the brightness to fit within the item and subtracting it from the largest possible radius.
*/

   painter->save();
#if 0
   painter->setRenderHint(QPainter::Antialiasing, true);
   painter->setPen(Qt::NoPen);

/*
We save the painter's state, turn on antialiasing (to obtain smoother curves), and turn off the pen.
*/

   if (option.state & QStyle::State_Selected)
      painter->setBrush(option.palette.highlightedText());
   else
      painter->setBrush(QBrush(Qt::black));

/*
The foreground of the item (the circle representing a pixel) must be rendered using an appropriate brush. For unselected items, we will use a solid black brush; selected items are drawn using a predefined brush from the style option's palette.
*/

   painter->drawEllipse(QRectF(option.rect.x() + option.rect.width()/2 - radius,
      option.rect.y() + option.rect.height()/2 - radius, 2*radius, 2*radius));
#else
//   painter->drawPixmap(option.rect.x()+8, option.rect.y()+8, 200, 94, QPixmap(":/res/labels/rayman.jpg"));
//   painter->drawPixmap(option.rect.x()+13, option.rect.y()+51, 433/2, 203/2, QPixmap(":/res/labels/rayman.jpg"));
//   painter->drawPixmap(option.rect.x(), option.rect.y(), 488/2, 395/2, QPixmap(":/res/cart-blank.png"));


   // This is crappy. We really should have a properly scaled image ready to go so we
   // don't get Qt's default ugly looking fast scaling...
#warning "!!! FIX !!! Need to create properly scaled down cart/label images!"
//   unsigned long i = index.model()->data(index, Qt::DisplayRole).toUInt();
#if 0
   unsigned long i = index.model()->data(index, Qt::DisplayRole).toUInt();
   QString filename = index.model()->data(index, Qt::EditRole).toString();
   QImage label = index.model()->data(index, Qt::DecorationRole).value<QImage>();
#else
   unsigned long i = index.model()->data(index, FLM_INDEX).toUInt();
   QString filename = index.model()->data(index, FLM_FILENAME).toString();
   QImage label = index.model()->data(index, FLM_LABEL).value<QImage>();
#endif

#if 0
   if (role == Qt::DecorationRole)
      return list.at(index.row()).label;
   else if (role == Qt::DisplayRole)
      return (uint)list.at(index.row()).dbIndex;
   else if (role == Qt::EditRole)
      return list.at(index.row()).filename;
#endif

//   if (romList.file[0] == 0)
   if (label.isNull())
   {
//   painter->drawPixmap(option.rect.x()+14, option.rect.y()+50, 433/2, 203/2, QPixmap(":/res/label-blank.png"));
//      painter->drawPixmap(option.rect.x()+7, option.rect.y()+25, 433/4, 203/4, QPixmap(":/res/label-blank.png"));
      painter->drawImage(option.rect.x() + 2, option.rect.y() + 2, cartSmall);
//Need to query the model for the data we're supposed to draw here...
//   painter->drawText(17, 73, QString(romList.name));
//   painter->setPen(Qt::white);
      painter->setPen(QColor(255, 128, 0, 255));
//   painter->drawText(QRect(option.rect.x()+20, option.rect.y()+73, 196, 70), Qt::TextWordWrap | Qt::AlignHCenter, QString(romList.name));
      painter->drawText(QRect(option.rect.x()+10, option.rect.y()+36, 196/2, 70/2), Qt::TextWordWrap | Qt::AlignHCenter, QString(romList.name));
   }
   else
   {
#if 0
      QString filename(romList.file);
      filename.prepend("./label/");
      QImage img(filename);
      painter->drawImage(QRect(option.rect.x()+7, option.rect.y()+25, 433/4, 203/4), img);
#else
      painter->drawPixmap(option.rect.x() + 2, option.rect.y() + 2, 488/4, 395/4, QPixmap(":/res/cart-blank.png"));
      painter->drawImage(QRect(option.rect.x()+2+7, option.rect.y()+2+25, 433/4, 203/4), label);
#endif
   }
//26x100
#endif
   painter->restore();
}

/*
Finally, we paint the circle within the rectangle specified by the style option and we call restore() on the painter.

The paint() function does not have to be particularly complicated; it is only necessary to ensure that the state of the painter when the function returns is the same as it was when it was called. This usually means that any transformations applied to the painter must be preceded by a call to QPainter::save() and followed by a call to QPainter::restore().

The delegate's sizeHint() function returns a size for the item based on the predefined pixel size, initially set up in the constructor:
*/

QSize ImageDelegate::sizeHint(const QStyleOptionViewItem & /* option */, const QModelIndex & /* index */) const
{
   // 488x395 --> blank cart (full size)
   // 400x188 --> label (full size) 433x203 <-- (actually, it's this)

   // 200x94 is shrunk dimension...
//   return QSize(100, 47);
//   return QSize(216, 110);
//   return QSize(488/2, 395/2);
   return QSize((488/4) + 4, (395/4) + 4);
}

/*
The delegate's size is updated whenever the pixel size is changed. We provide a custom slot to do this:
*/

//void ImageDelegate::setPixelSize(int size)
//{
//   pixelSize = size;
//}

iddqd:
Какие клавиши управления в Virtual Jaguar r351, кроме стрелки и ZXC? Не могу начать игру.

EdHell:
Апостроф - ' ("Э") и Enter.

iddqd:
EdHell, спасибо.

Morphium:
Собрали 356 ревизию - http://dbug.kicks-ass.net/various/vj2_r356.rar

Norther:
Когда же все наконец привыкнут, что не виндозой единой живы компы?
Собрал 357 ревизию под Linux - http://depositfiles.com/ru/files/sedp1q5ow

P.S.: уважаю тех программистов, которые не зацикливаются на одной виндозе, а умеют писать мультиплатформенные приложения. :)

Morphium:
357 ревизия под Windows - http://dbug.kicks-ass.net/various/vj2_r357.rar

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии