Page 3 of 4

Posted: Tue Jul 06, 2010 3:59 pm
by evildragon
Tasco, here's a runthrough of your second patch.

http://www.youtube.com/watch?v=6_DIdJrZsN8

Not really any changes I see audio wise. Graphically there are some things different, including some what looks to be VSync tearing.

I plan to get a capture card for my Mac today and will try to post some high quality 60fps videos..

Posted: Tue Jul 06, 2010 5:21 pm
by Chilly Willy
V2 ips: Still some glitches, but it doesn't look quite as bad. Still won't reset.

Posted: Tue Jul 06, 2010 9:34 pm
by Mairtrus
hey guys, you don't need to patch my game, I can do it by myself :D
But, seriously, I have a revision ready to be launched who SHOULD works on the real thing: it fix some bugs, now initialize the controlers, the H40 cheat is gone(useless adition) but now you can set the interlace mode (as requested localh), and the checksum is gone, because makes no sence to have it (anyone can hack it), but those bugs in the real hardware really worry me. In the next revision, I will implemet a buffer for avoid the VRAM reads, but for now, what solutions I have? Should I put some NOPs between each "adress set" and "read" instructions?

Posted: Tue Jul 06, 2010 9:49 pm
by Eke
well, patches were more a quick way to test if stuffs are really handle on real hardware as we thought it was, your ROM is also very interesting as it can help improving accuracy of emulators :wink:

Regarding VRAM access, here's what official tech bulletins are saying:

Image

Hope that helps, good luck for next releases, I'm sure all the bugs can be ironed out and as you can see, there is a lot of interest for this port !

Posted: Wed Jul 07, 2010 12:32 am
by TascoDLX
Where was that memo hiding? :P

So it seems the delay belongs after the last read. If you reorganize the code, you probably don't need any artificial delays (NOPs or such) -- just move anything you can between the last read and setting the address for the next write. But, using a buffer is a wonderful idea.

And, before I forget, a couple more bugs I spotted:

* In DigitsMathRoutine, OperMode is read from the wrong location (ROM instead of RAM). Probably just a typo. The effect is rather interesting, though.

* In TopScoreCheck at around 'bcc NoTopSc', bad flag check (because SUBQ alters the X flag).

Posted: Wed Jul 07, 2010 4:33 am
by Chilly Willy
TascoDLX wrote:Where was that memo hiding? :P
It's part of the MCD SDK and docs, under misc. The same tech memo also describes how accessing areas not defined for the MCD or MD may not assert DTACK and therefore hang the processor.

Posted: Fri Jul 09, 2010 8:47 am
by TascoDLX
One last shot: hackpatch v3. Only fixes for hardware in this one.

Sorry, couldn't help myself. :wink:

I believe the tearing evildragon pointed out is caused by updating the scroll values midscreen. I didn't bother myself with that.

Posted: Fri Jul 09, 2010 9:11 am
by bastien
hey ! very nice.
no bug in my MD2+Megacart.
Now all works fine , the only bug i found is the reset.

Very Thanks :twisted:

Posted: Fri Jul 09, 2010 9:29 am
by Eke
TascoDLX wrote:One last shot: hackpatch v3. Only fixes for hardware in this one.

Sorry, couldn't help myself. :wink:

I believe the tearing evildragon pointed out is caused by updating the scroll values midscreen. I didn't bother myself with that.
cool, what fixes did you add ?

Posted: Fri Jul 09, 2010 10:35 am
by bastien
actually there is no graphical glitches in real hardware with this V3 patch :P

Posted: Fri Jul 09, 2010 2:09 pm
by evildragon
Can't wait to get home and flash my cart. :D

Posted: Sat Jul 10, 2010 12:16 am
by Mairtrus
I'm interested too in know what you did this time. I'm ready to release a new version, but I will wait until your explanation.

Posted: Sat Jul 10, 2010 4:17 am
by TascoDLX
I basically just rearranged the VRAM code according to the tech memo: plenty of time between the last read and next setting the control reg. Didn't do much more than reorder the instructions, really.

I made sure to spend at least 116 CPU clocks following each read sequence (consecutive reads are not a problem, so says the doc). To get there, I had to insert a very small busy loop. Don't know if that was absolutely neccessary, but I just assumed it was.

As suspected, reading VRAM immediately after writing VRAM is perfectly OK. In fact, here's a piece of it:

Code: Select all

MOVE.L    D6,$0004(A6) ; A6 = $C00000
MOVE.L    D3,(A6)
MOVE.L    D4,(A6)
MOVE.L    D7,$0004(A6)
MOVE.L    (A6),D3
MOVE.L    (A6),D4
Maybe a bit extreme, but apparently it works.

Posted: Sat Jul 10, 2010 5:48 am
by Chilly Willy
TascoDLX wrote:One last shot: hackpatch v3. Only fixes for hardware in this one.

Sorry, couldn't help myself. :wink:

I believe the tearing evildragon pointed out is caused by updating the scroll values midscreen. I didn't bother myself with that.
Works great on my Neo Myth. Nice work. :D

Posted: Sat Jul 10, 2010 8:58 am
by LocalH
And now we wait for Mairtrus to come out with a proper v2 release, with an improved palette (and I hope he switched the A and B buttons :))