Author Topic: Blast Corps  (Read 5550 times)

Offline antilogic

  • bit
  • Posts: 2
    • View Profile
Blast Corps
« on: July 23, 2012, 11:44:45 PM »
Crashes right after the rare logo, which spins too fast.   

Offline OurFriendIrony

  • int
  • **
  • Posts: 78
    • View Profile
Re: Blast Corps
« Reply #1 on: July 25, 2012, 07:11:31 AM »
That game is crazy hard
Device: Samsung Galaxy S2
CPU: Dual-core 1.2 GHz Cortex-A9
GPU: Mali-400MPH
RAM: 1GB
Resolution: 480 x 800
Rom: v4.03 ICS (stock) (rooted)

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #2 on: July 25, 2012, 08:23:35 AM »
Seems to be a problem with the core (crashes even if video and audio are both disabled).
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline antilogic

  • bit
  • Posts: 2
    • View Profile
Re: Blast Corps
« Reply #3 on: October 20, 2012, 11:48:59 PM »
Looks like this is the issue maybe?

newbielink:http://code.google.com/p/mupen64plus/issues/detail?id=280 [nonactive]

It's not clear if this is actually fixed from reading the bug report.

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #4 on: October 21, 2012, 04:13:44 AM »
From reading that, sounds like they are on track to fixing the problem, but the issue is not marked as solved yet.  On a side note, if it is fixed in the near future, we probably won't be able to merge the fix into AE until we update Ari64's dynarec which breaks in a recent core update from the main repository.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Moshroum

  • Guest
Re: Blast Corps
« Reply #5 on: October 30, 2012, 08:16:20 AM »
The bug says that it is fixed. And mupen64plus also has parts of Ari64s dynarec merged. So what exactly is broken? Did you tell them that it is broken? Why aren't they affected when they also ship the newdynarec for x86?

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #6 on: October 30, 2012, 10:34:31 AM »
If I knew what exactly was broken then it wouldn't still be broken ;)

But seriously, it is related to a couple of recent changes in the main repository, both related to the new save/ load state infrastructure.  I am unable to fix it until I get my main development PC out of storage once we buy a house.  The screen on my netbook is simply too small for effective code comparison.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Catherine

  • bit
  • Posts: 9
    • View Profile
Re: Blast Corps
« Reply #7 on: November 01, 2012, 03:41:30 AM »
I think he didn't asked for the exact problem in the sense of "tell me what I need to change to fix it". But you've noticed a problem and therefore can describe what you've experienced. I just played with Ari64's dynarec on mupen64plus x86 and could save+load.

EDIT: Just saw that your version of the save function is full of TODO and half written code snippets. Of course, this cannot work.

I love this part:

Code: [Select] [nofollow]
+    if(r4300emu == CORE_PURE_INTERPRETER)
+        PUTDATA(curr, unsigned int, interp_addr);
+    else
+        #ifdef NEW_DYNAREC
+        //gzwrite(f, &pcaddr, 4);
+        //PUTDATA(curr, unsigned int, &pcaddr); // TODO: Correct alternative ?
+        #else
+        PUTDATA(curr, unsigned int, PC->addr);
+        #endif
 
     PUTDATA(curr, unsigned int, next_interupt);

I can spot sooo many bugs in just this small amount of lines. Funniest of it: now next_interrupt is only saved when we are not in CORE_PURE_INTERPRETER mode (which fucks up the savestate format btw.). The we would have to save the pcaddr and not the pointer to the pcaddr. Then we should always save PC->addr when not in CORE_DYNAREC mode && NEW_DYNAREC is compiled in.

EDIT: Forget my last comment. The loading part is even more funny:

Code: [Select] [nofollow]
+   
+    if(r4300emu == CORE_PURE_INTERPRETER)
+        interp_addr = GETDATA(curr, unsigned int);
+    else
+    #ifdef NEW_DYNAREC
+        gzread(f, &pcaddr, 4);
+        pending_exception = 1;
+        invalidate_all_pages();
+    #else
     {
         for (i = 0; i < 0x100000; i++)
             invalid_code[i] = 1;
+        jump_to(GETDATA(curr, unsigned int));
     }
-    generic_jump_to(GETDATA(curr, unsigned int)); // PC
-#endif
+    #endif

Same problem with the interp_addr vs. PC->addr, same problem with "r4300emu == CORE_PURE_INTERPRETER" vs. "r4300emu != CORE_DYNAREC". Same problem with scoping... (now pending_exception = 1; and invalidate_all_pages(); will always be executed when NEW_DYNAREC is enabled (but not the gzread(f, &pcaddr, 4); ... which sould be a "pcaddr = GETDATA(curr, unsigned int);" btw). And then the jump_to vs.  generic_jump_to.

Now I am sure comparing with upstream makes a lot of sense.  And now just assume about following scenario: Somebody would have send a patch to upstream which allowed to use the interpreter cores when NEW_DYNAREC is enabled (which this patch tries to do). Somebody upstream would hopefully notice the problem and informed you about the correct fix. Wouldn't that be nice?
« Last Edit: November 01, 2012, 04:17:27 AM by Catherine »

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #8 on: November 01, 2012, 08:52:03 AM »
True if I wanted to keep the core constantly up to date with Richard's, which I am not focused on right now.  Lioncash was doing this, until he hit a wall with save/ load state, which has had a major recent overhaul in the official repository.  Last version of the core I touched was 1.99.5. To be honest, my solution was going to be to regress the core a bit since having it perfectly up to date is lower priority than other problems, until this experiment is closer to completion.  But since others have already started to put the new dynarec in the official repo, now might be a good time to actually update the core.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #9 on: November 01, 2012, 08:56:17 AM »
Please note that my priority at the moment is to get a stable (not necessarily completely up-to-date with the official repo) build out since it has been a long time and folks want an update.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3495
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Blast Corps
« Reply #10 on: November 01, 2012, 02:42:11 PM »
BTW, I forgot to address your specific examples.  Those "TODOs" were added by lioncash because he doesn't know how to link with the new dynarec, and they were for me to look at when I get around to addressing the problem.  This is no reason to question someone's intelligence or programming ability - some of us are not experienced at writing emulators.  You are correct that "of course, this cannot work", but that doesn't mean it isn't fixable or that it is so ridiculous that it should be made fun of.  I just need some free time to fix it.  Again, I personally haven't touched the core/ dynarec linkage since the update to 1.99.5, so if my comments are a bit out-of-date, that is why.  Lioncash might be able to more intelligently talk with you about the specific TODOs he has added in there.
« Last Edit: November 01, 2012, 02:59:47 PM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted