Page 2 of 2

Posted: Fri Oct 19, 2007 11:04 pm
by dr. apocalipsis
Hi guys. I found this forum and love it.
A lot of technical resources for MD that nobody covered before ^^

About soft resets. In xmen you need to do a soft resets in a certain spot in the game to continue. I haven't found any emulator that can run this feature.

Also, when you soft reset Super Street Fighter II, high scores remains until power off.

Do you think this feature will be added in a next installement of such emulators like gens o Fusion?

Sorry about my english ^^

Posted: Fri Oct 19, 2007 11:38 pm
by Shiru
dr. apocalipsis wrote:Also, when you soft reset Super Street Fighter II, high scores remains until power off.
Same happens in other games, it's because RAM doesn't clears or corrupts after reset (on all systems, not only on SMD).

Posted: Sat Oct 20, 2007 12:38 am
by Lordus
Hi everyone. I've been reading this forum for a while now, and its really a great resource.

Just wanted to mention here, that my emulator implements both, random start up values in HV counter and soft reset.
It also has a debugger.

Too bad its in Java, so nobody would probably want to use it ;)

Posted: Sat Oct 20, 2007 7:04 pm
by TmEE co.(TM)
My random number code :

Code: Select all

GiveGarbage:            ; Return garbage
 MOVE.W (GARBAGE), D0
 MOVE.W D0, D1
 NOT.W  D1
 ROR.W  #3, D0
 EOR.W  D1, D2
 ADD.W  D1, D0
 ROL.W  #7, D1
 ADD.W  D1, D0
 EOR.W  D2, D0
 ADD.W  (HTIMER), D0
 MOVE.W D0, (GARBAGE)
 RTS

Posted: Fri Oct 26, 2007 12:44 pm
by Eke
I think that the issue with soft-reset comes from the fact that, on emulators, "soft reset key" input is handled like any other inputs, i.e at the end (or start) of each frame... so the cpu reset can never occur in a middle of a frame and HV counters are always the same since they are reseted at the start of the frame

(a simple but maybe unoptimised solution is to check the "soft reset key" on each scanline, I was able to reproduce the character randomization this way)

On hard-reset, as both CPU and VDP are reseted (and HV counters also), you should logically always get the same value for a given HVC read instruction... but maybe there is still some random timings differences between 68000 and VDP /RESET hold

Posted: Fri Oct 26, 2007 4:02 pm
by TmEE co.(TM)
easiest way would be to throw in a random value into HV counter after each reset, and start the VDP code somewhere in a frame after reset...