Page 136 of 153

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Wed Jun 03, 2009 5:12 pm
by Kojima_Devotee
Hey, thanks for the link; I had no idea Wii translations were a possibility! I was quite saddened by the fact that they weren't bringing Fatal Frame over. I guess no one bought The Tormented. :cry:

Posted: Wed Jun 03, 2009 6:59 pm
by JonnyTanna
Like I said, bad marketing/publicity. I actually forgot about Tormented until I picked it up in Malaysia..

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Thu Jun 04, 2009 12:34 pm
by midori_fox
off topic 2 new MGS games =D

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Thu Jun 04, 2009 12:46 pm
by Fly
midori_fox wrote:off topic 2 new MGS games =D
The two-week long clocktease was totally worth it just for Big Boss wrestling on the beach bare-chested in the rain, I think. If that and the 'Love Pack' are actually in the game, I don't see how it can be bad.

But I'm coming from a biased perspective here.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Thu Jun 04, 2009 12:48 pm
by Artemio
midori_fox wrote:off topic 2 new MGS games =D
Please don't bring that here. Most of us don't like the idea of that. Discussion is at: viewtopic.php?f=20&t=2408&p=33658#p33658

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sat Jun 06, 2009 3:17 pm
by Kojima_Devotee
I'm amazed by how quiet it has become - It wasn't even this dead during the Silent Year. :P

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sat Jun 06, 2009 3:21 pm
by Fly
We're all waiting with bated breath for Comrade Slowbeef's next move, that's why.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 12:40 am
by Andrigaar
Kojima_Devotee wrote:I'm amazed by how quiet it has become - It wasn't even this dead during the Silent Year. :P
I kept up chit-chat about sidebar, but most of the people nixed that and went back to asking the questions that cannot be.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 1:10 am
by Piratero
No point in asking for updates. The updates will come when they come.

Hopefully, I'll be able to finish the current games I'm playing before Policenauts!

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 10:57 am
by Crane
Personally speaking, I'm just hoping against hope that it's out some time before the end of September, so I can play it before I have to go back to university.
Ah well, even if not, at least it'll probably be out before the next end-of-year crunch period.

And guys?
Great work.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 11:53 am
by slowbeef
I'm going to be quiet for a little while. Good things are happening on the backend. We actually ran into a couple of issues on hardware (and not the emulators) which was a little scary for a bit, but we were able to recover, though I'm still retooling one final hack in that regard.

Since Piratero is going to ask, the key issues are the following things emulators apparently don't account for:

- Byte alignment: I don't fully get this as the emulators respect the fact that MIPS won't load unaligned words or half-words, so it shouldn't have worked in the emulators, but it somehow did. At any rate, we had to make sure the patching we were doing led to byte aligned data blocks (i.e. all locations in memory should start at locations which are multiples of 0x04, like 0x00, 0x04, 0x08, 0x0C, 0x10, etc.) Once we figured out the problem, it wasn't a terribly hard fix.

- Pipelining: This was huge. I'll just post what I wrote to Artemio when we figured it out:

I think the problem is pipelining.

The following instruction set failed for me:

addiu r20, r0, 0x006E ; r20 = 6E, the control code
...
lbu r2, 0x0000(r16) ; read a byte
beq r2, r20, 0x0005; if the byte read == 6E, jump ahead

The branch was failing even when I knew the data was a 6E and should have been succeeding.

This fixed it:

lbu r2, 0x0000(r16) ; read a byte
nop
beq r2, r20, 0x0005; if the byte read == 6E, jump ahead

Throwing a nop in there meant the branch was now true. Why?

I think because the MIPS architecture pipelines the instructions. In an emulator "lbu" happens atomically, i.e. it definitely begins and ends before the next instruction is processed.

In a real chip, though, it's doing stuff in parallel, so:

Code: Select all

FIEMW (lbu)
 FIEMW (bne)
(Fetch instruction, Instruction decode, Execute, Memory access, Writeback - in previous example, lbu is doing memory access simultaneously while bne is actually executing.)

So the branch executes (E) while the previous instruction is doing memory access (M). In other words, the branch fails because the register hasn't actually been loaded with memory yet. The nop makes it so:

Code: Select all

FIEMW
nop
  FIEMW
(In this example, the lbu is doing a Writeback to memory - which is effectively nothing, since that only counts for a "store" instruction - while the branch executes. Memory access has now happened while the branch was decoding instructions.)

So NOW the instruction has "time" to do memory access. I rewrote the in-game text hack with some extra nops after memory reads and hoping that it magically makes it all work.

(It did. Right now, we're trying to recompile the LZO decompressor so that it will pipeline correctly in the PSX - i.e. all the modified graphics work.)

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 1:52 pm
by Piratero
Excellent post. Thanks! :mrgreen:

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Sun Jun 07, 2009 3:13 pm
by akor1108
Whoa, sexy tech talk ahoy! Otacon would be proud of you Slowbeef and Snake is quite pleased.

This is good.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 6:13 am
by Jack
slowbeef wrote:I'm going to be quiet for a little while. Good things are happening on the backend. We actually ran into a couple of issues on hardware (and not the emulators) which was a little scary for a bit, but we were able to recover,
I won't even pretend to understand the rest, but if good things are happening, that cheers me up. :D

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 8:47 am
by infinityBCRT
slowbeef wrote:In a real chip, though, it's doing stuff in parallel, so:

Code: Select all

FIEMW (lbu)
 FIEMW (bne)
(Fetch instruction, Instruction decode, Execute, Memory access, Writeback - in previous example, lbu is doing memory access simultaneously while bne is actually executing.)

So the branch executes (E) while the previous instruction is doing memory access (M). In other words, the branch fails because the register hasn't actually been loaded with memory yet. The nop makes it so:

Code: Select all

FIEMW
nop
  FIEMW
(In this example, the lbu is doing a Writeback to memory - which is effectively nothing, since that only counts for a "store" instruction - while the branch executes. Memory access has now happened while the branch was decoding instructions.)

So NOW the instruction has "time" to do memory access. I rewrote the in-game text hack with some extra nops after memory reads and hoping that it magically makes it all work.
Hmm, but isn't this unsafe? Maybe it will work most of the time but once in a while its plausible that the memory access wasn't completed in time. I guess its not exactly easy to put in data access locks via machine language though.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 10:00 am
by slowbeef
infinityBCRT wrote: Hmm, but isn't this unsafe? Maybe it will work most of the time but once in a while its plausible that the memory access wasn't completed in time.
It's not exactly a timing issue like "it will take the processor 0.60 ms to read from memory." The notion is the processor can do Fetching, Decoding, Executing, Memory Read, Write simultaneously on five different instructions. If there's an instruction dependent on a load, it needs a nop to ensure it will read it. Without the nop, the memory load won't happen in time for the instruction to be executed correctly.

I guess I'm confused because this actually makes it much "safer" than not doing it, unless I'm misunderstanding.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 10:41 am
by infinityBCRT
slowbeef wrote:
infinityBCRT wrote: Hmm, but isn't this unsafe? Maybe it will work most of the time but once in a while its plausible that the memory access wasn't completed in time.
It's not exactly a timing issue like "it will take the processor 0.60 ms to read from memory." The notion is the processor can do Fetching, Decoding, Executing, Memory Read, Write simultaneously on five different instructions. If there's an instruction dependent on a load, it needs a nop to ensure it will read it. Without the nop, the memory load won't happen in time for the instruction to be executed correctly.
You know what? I was thinking of this in terms of a general programming language instead of machine language. In machine language the amount of time every instruction takes is constant and predictable whereas in programming language its not that simple due to the way the code is compiled and the thread management of the OS the program is running on.

Been years since I've done anything in machine language, I've been working with Java exclusively for the last 3 years now. ;)

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 2:35 pm
by Artemio
infinityBCRT wrote:I've been working with Java exclusively for the last 3 years now. ;)
Couldn't be more alienated from hardware than that.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 2:52 pm
by slowbeef
Artemio wrote:Couldn't be more alienated from hardware than that.
I'm a Java programmer. And our Ruby on Rails team considers me a low-level programmer nowadays.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 4:08 pm
by Artemio
slowbeef wrote:
Artemio wrote:Couldn't be more alienated from hardware than that.
I'm a Java programmer. And our Ruby on Rails team considers me a low-level programmer nowadays.
=)

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 7:38 pm
by akor1108
slowbeef wrote
I'm a Java programmer. And our Ruby on Rails team considers me a low-level programmer nowadays.
Does that mean no one thinks highly of you at your job? Well, screw them! I think you are quite excellent, hardworking, smart, and also have good humor too. You were the refreshing beverage that this project needed to feel better!

Don't ever feel dejected. Here, you are respected.
Nothing is as it seems when you follow your own dreams.
Everybody has a purpose, whether or not they think it's worth it.
No one knows until they try.
You've lit the candle, don't let it die!


(EDIT: That was freestyle by the way. slowbizzle.)

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 7:52 pm
by Artemio
akor1108 wrote:slowbeef wrote
I'm a Java programmer. And our Ruby on Rails team considers me a low-level programmer nowadays.
Does that mean no one thinks highly of you at your job? Well, screw them! I think you are quite excellent, hardworking, smart, and also have good humor too. You were the refreshing beverage that this project needed to feel better!
No, it only means you didn't understood a word of what we were talking about.

But... Weren't you on a trip Marc?

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 8:45 pm
by akor1108
Hey...
I may not understand the situation, but at least I cared for what I thought what was going on. I tried to make Slowbeef happy! So... Artemio, you get the AWESOME benefit of my literally just written (no sh!t lie here) poem called "Party-Pooped" that had nothing to do with this moment that happened even though it conveniently did.
So... enjoy.


Everybody’s waiting
On the side of the floor debating
If it’s cool to start dancing-
Like the story of Anson’s
But…
Nobody’s moving
Or gets the moment slowly going,
Some people are already thinking
“I wish I was at home sleeping”.
There’s…
A lack of an adventure,
But I’ll still take a picture
To make a holographic render
Seem like people having fun here.
This…
Scene is way too boring.
Is anyone even enjoying?
I’d rather leave than be enduring
A game without any scoring!
Before…
This party ever started,
Someone had torn apart it
By being a party-pooper.
May be better if they farted
Cause…
Although no one likes a stinker,
At least the smell won’t linger
And we’ll save ourselves the danger
Of a monkey-poo slinger.
Let’s…
Change the air’s essence
And learn a little lesson:
The next time you invite a stranger,
Hope he doesn’t leave disgusting presents
That…
Are unneeded and unwanted
And check the guest list to see if he is on it
For if something goes wrong then-
The host will be forever haunted
By…
The ghost who left his garbage.



Now... that you've been properly schooled, I wish a good many future parties result from the completion of this project!

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 10:02 pm
by Artemio
I never bother to read most of what you type under that nickname Marc, sorry. Even including that one above this.

I'll just add that account to my ignore list, hope you don't mind my friend.

Re: Current Status (4/26/09): 1 Bug Till Beta

Posted: Mon Jun 08, 2009 11:13 pm
by seraphssavior
Wait, we can do that? Because I'm not seeing a button...