Enterprise Forever  |  :HUN  |  Emulátorok  |  Topic: iEP128emu
Author Topic: iEP128emu  (Read 3177 times)« previous next »
IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux 64 bit
Browser:
Firefox 5.0


View Profile
New Posts
« Reply #75 on: 2012.February.13. 15:03:49 »

Tehát a Spectrum mód nem gyorsabb jelentősen (PC-n legalább 1.5x a különbség Alt+W-nél). ds_icon_confused

CPC 6128 konfiguráció beállítása:
Code
    vm.resetMemoryConfiguration(128);
   vm.loadROMSegment(0x80, "cpc6128.rom", 0);
   vm.loadROMSegment(0xC0, "cpc6128.rom", 0x4000);
   vm.loadROMSegment(0xC7, "cpc_amsdos.rom", 0);
Elvileg az EP és a Spectrum között kellene lennie a sebességnek, de közelebb az EP-hez.
Logged

Enterprise Forever
« Reply #75 on: 2012.February.13. 15:03:49 »

 Logged

Ep128
EP addict
*
Offline Offline

Hungary

Posts: 1012


OS:
Windows Vista
Browser:
Firefox 10.0.1


View Profile WWW
New Posts
« Reply #76 on: 2012.February.13. 17:12:56 »

és ez a sebesség iPhone 3G-n 10-15%, iPad 1-en pedig 86%-90% (ez utóbbi már majdnem elegendő)

Na, akkor (ha jól értelmezem) az iPhone 4G S -en már elvileg mennie kellene viszonylag normálisan. Smiley
Reménykedés...
Logged


varrogy
User
*
Offline Offline

Posts: 67


OS:
Mac OS X
Browser:
Safari


View Profile
New Posts
« Reply #77 on: 2012.February.14. 18:38:23 »

Tehát a Spectrum mód nem gyorsabb jelentősen (PC-n legalább 1.5x a különbség Alt+W-nél). ds_icon_confused

CPC 6128 konfiguráció beállítása:
Code
    vm.resetMemoryConfiguration(128);
   vm.loadROMSegment(0x80, "cpc6128.rom", 0);
   vm.loadROMSegment(0xC0, "cpc6128.rom", 0x4000);
   vm.loadROMSegment(0xC7, "cpc_amsdos.rom", 0);
Elvileg az EP és a Spectrum között kellene lennie a sebességnek, de közelebb az EP-hez.


Sehogy sem akar a speccy emu gyorsabb lenni az EP-nél Smiley
CPC-t még nem próbáltam idő hiányában.

Már ennyire leegyszerűsítettem a kódot, de minden esetben ugyanazok az eredmények jönnek ki!
Code:
int main(int argc, char *argv[])
{
    @autoreleasepool {
             
        Ep128Emu::AudioOutput    *audioOutput    = NULL;
        Ep128Emu::VideoDisplay   *videoDisplay   = NULL;
        Ep128Emu::VirtualMachine *vm             = NULL;
        Ep128Emu::VMThread       *vmThread       = NULL;
        Ep128Emu::Timer          statsTimer;

        int32_t oldSpeedPercentage = 0;     
             
        audioOutput     = new Ep128Emu::AudioOutput();
        videoDisplay    = new Ep128Emu::OpenGLDisplay();
       
        vm = new Ep128::Ep128VM(*videoDisplay, *audioOutput);

        NSString *path = [[NSBundle mainBundle] pathForResource:@"exos21" ofType:@"rom"];
        vm->loadROMSegment(0x00, [path cStringUsingEncoding:NSUTF8StringEncoding], 0);
        vm->loadROMSegment(0x01, [path cStringUsingEncoding:NSUTF8StringEncoding], 16384);
       
        path = [[NSBundle mainBundle] pathForResource:@"basic" ofType:@"rom"];
        vm->loadROMSegment(0x10, [path cStringUsingEncoding:NSUTF8StringEncoding], 0);
       
        vmThread = new Ep128Emu::VMThread(*vm);
        vmThread->setSpeedPercentage(0);
        vmThread->pause(false);

        while (1) {
            Ep128Emu::VMThread::VMThreadStatus  vmThreadStatus(*vmThread);

            if (statsTimer.getRealTime() >= .5) {
                statsTimer.reset();
                int32_t newSpeedPercentage = int32_t(vmThreadStatus.speedPercentage + 0.5f);
                if (newSpeedPercentage != oldSpeedPercentage) {
                    oldSpeedPercentage = newSpeedPercentage;
                    printf("%i%%\n", oldSpeedPercentage);
                }
            }
            usleep(10000);
        }
    }
}

Logged

varrogy
User
*
Offline Offline

Posts: 67


OS:
Mac OS X
Browser:
Safari


View Profile
New Posts
« Reply #78 on: 2012.March.28. 18:33:26 »

Tehát a Spectrum mód nem gyorsabb jelentősen (PC-n legalább 1.5x a különbség Alt+W-nél). ds_icon_confused

IstvanV:
Az OpenGL ES lett a szūk keresztmetszet,
 az lenne a kérdésem, hogy tudnál-e nekem segíteni abban, hogy a
drawFrame_quality1(Message_LineData **lineBuffers_,
                                         double x0, double y0,
                                         double x1, double y1, bool oddFrame_)
hogyan lehetne módosítani, hogy minél kevesebb textura rajzolassal tudjon lefutni (glTexSubImage2D sor).
Ugyanis úgy láttam, hogy minden képernyő renderelés (double buffer, display quality 1 esetében) 21db texturát rajzol!
Sajnos ez az iOS-en iszonyat sok processzort megeszik, viszont ha mondjuk a generaált textura magasságát (GLsizei txtHeight = 48;) ra emelneém akkor mindehez csak 7 textura kellen ami 3x gyorsabb renderelést eredményezne.
De akár lehet, hogy egy textura segítségével is meg lehetne oldani, ezt nem tudom.
Szerinted megoldhato lehet a fent leirtak valahogy?

Koszi
Gyuri
Logged

IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux 64 bit
Browser:
Firefox 5.0


View Profile
New Posts
« Reply #79 on: 2012.March.28. 20:12:57 »

Valószínűleg megoldható, akár 1 textúrával is, ami egyszerűsítene is a kódon. A textúra "darabolását" egyébként eredetileg azért építettem be, mert (legalábbis 5-10 évvel régebbi PC hardveren) javította a sebességet.
Logged

IstvanV
EP addict
*
Offline Offline

Posts: 2104

OS:
Linux 64 bit
Browser:
Firefox 5.0


View Profile
New Posts
« Reply #80 on: 2012.March.28. 23:59:15 »

Módosított verzió (nem biztos, hogy hibátlan):
  * texture.diff (32.57 KB - downloaded 7 times.)
  * gldisp.cpp (45.91 KB - downloaded 8 times.)
  * gldisp.hpp (4.84 KB - downloaded 8 times.)
Logged

varrogy
User
*
Offline Offline

Posts: 67


OS:
Mac OS X
Browser:
Safari


View Profile
New Posts
« Reply #81 on: 2012.March.29. 11:33:25 »

Módosított verzió (nem biztos, hogy hibátlan):
  [ *** Specified attachment missing ]
  [ *** Specified attachment missing ]
  [ *** Specified attachment missing ]


Tökéletesen mūködik és gyors lett köszi szépen!!
Az alábbi módosítást tettem még bele, a glBegin(GL_QUADS); ... glEnd(); sorok helyett.
így az openGL és openGL-ES1 is megeszi. 
Esetleg ezt a mostani emuba is lehetne használni, de a kompatibilitáson kívul megsporolhatunk vele egy plusz haromszoget Smiley


Code:
void OpenGLDisplay::drawFrame_quality1(Message_LineData **lineBuffers_,
                                         double x0, double y0,
                                         double x1, double y1, bool oddFrame_)
  {

.
.
.
      GLfloat textureCoords[] = {
          GLfloat(0.0), txtycf0,
          GLfloat(384.0 / 512.0), txtycf0,
          GLfloat(0.0), txtycf1,
          GLfloat(384.0 / 512.0), txtycf1,
      };
     
      GLfloat vertices[] = {
          x0, ycf0,
          x1, ycf0,
          x0, ycf1,
          x1, ycf1,
      };

      glEnable(GL_TEXTURE_2D);
      glEnableClientState(GL_VERTEX_ARRAY);
      glEnableClientState(GL_TEXTURE_COORD_ARRAY);
     
      glVertexPointer(2, GL_FLOAT, 0, vertices);
      glTexCoordPointer(2, GL_FLOAT, 0, textureCoords);
      glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
     
      glEnableClientState(GL_VERTEX_ARRAY);
      glDisableClientState(GL_TEXTURE_COORD_ARRAY);
      glDisable(GL_TEXTURE_2D);
     
.
.
.
}
Logged
Tags: javascript  Spectrum  zx  z80  ispeccy  iOS 
Enterprise Forever  |  :HUN  |  Emulátorok  |  Topic: iEP128emu

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.136 seconds with 24 queries.
Google visited last this page Today at 06:22
Follow ep4ever_news on Twitter