Gigadrive 0.019 Released


pip

Active Member
Joined
Apr 8, 2003
Messages
615
The front page is too slow, they talk about 0.018 when 0.019 is already released (actually it must have been released a few minutes ago since I refreshed it not long ago and then it wasn't there).

What's New

0.019
Cyclone changes:
+ Added movep opcode (Sonic 3 works)
+ Fixed a problem with DBcc not decrementing if the condition is false (Shadow of the Beast)
 
maybe he tries to make a new speed record?!
or he was drinking 20 cups of coffee..ah, just kidding :p

great work, fdave!

i won't pass any tests this semester, when there are so many new releases...ahh this little machine makes so much fun!
 
There have been some major improvements in the past versions, which I didn't notice. I had the GBAX competition version and a lot of the games it didn't run now works. Phantasy Star 3 wouldn't even start in that version but now it starts and you can play it (though it has the window bug so it isn't really playable in that sense of the word), same with Shadow of the beast. Just praying for sound and save states now :)
 
GPJosh posted on May 11 2004 at 10:02 PM said:
Dave's fast! At this rate, we'll have fullspeed genesis emulation with sound by tommorow. ;)

Ermm, not really - only worked on it for a few minutes in fact (well maybe an hour). 0.018 is a cumulation of last couple of days, 0.019 is the movep opcode I added.
Sorry to disappoint :)
This is the only real code I added :)

// --------------------- Opcodes 0x0108+ ---------------------
// movep.x (Aa),Dn - 0000nnn1 dx001aaa nn
int OpMovep(int op)
{
int nea=0,dir=0,size=0,ea=0;
int use=0,bytes=0,i=0;

nea =(op>>9)&7;
dir =(op>>7)&1;
size=(op>>6)&1; size++;
bytes=1<<size;
ea =0x10|(op&7);

use=op&~0x0e07;
if (op!=use) { OpUse(op,use); return 0; } // Use existing handler

OpStart(op); Cycles=20;

EaCalc(11,0x0007, ea,size);
ot("\n");
EaCalc( 0, 0, 0x3c,1);
EaRead( 0, 0, 0x3c,1,0);
ot(" add r11,r11,r0 ;@ Add on address offset\n\n");

if (dir==0)
{
ot(";@ Get bytes from address r11, r11+2, etc:\n\n");
EaRead (11, 10, ea,0,1);

for (i=1;i<bytes;i++)
{
ot(" add r11,r11,#2\n\n");
EaRead (11, 0, ea,0,1);
ot(" orr r10,r10,r0,lsr #%d\n",i*8);
}
ot("\n");

ot(";@ Save the value into the data register:\n");
EaCalc (0,0x0e00,nea,size);
EaWrite(0, 10,nea,size,1);
}

if (dir)
{
ot(";@ Get the value from the data register:\n");
EaCalc (0,0x0e00,nea,size);
EaRead (0, 10,nea,size,1);

ot(";@ Save bytes into address r11, r11+2, etc:\n\n");
for (i=0;i<bytes;i++)
{
EaWrite(11, 10, ea,0,1);
if (i<bytes-1)
{
ot(" add r11,r11,#2\n");
ot(" mov r10,r10,lsl #8\n\n");
}
}

}

OpEnd();

return 0;
}
 
Last edited by a moderator:
// --------------------- Opcodes 0x0108+ ---------------------
// movep.x (Aa),Dn - 0000nnn1 dx001aaa nn
int OpMovep(int op)
{
int nea=0,dir=0,size=0,ea=0;
int use=0,bytes=0,i=0;

nea =(op>>9)&7;
dir =(op>>7)&1;
size=(op>>6)&1; size++;
bytes=1<<size;
ea =0x10|(op&7);

use=op&~0x0e07;
if (op!=use) { OpUse(op,use); return 0; } // Use existing handler

OpStart(op); Cycles=20;

EaCalc(11,0x0007, ea,size);
ot("\n");
EaCalc( 0, 0, 0x3c,1);
EaRead( 0, 0, 0x3c,1,0);
ot(" add r11,r11,r0 ;@ Add on address offset\n\n");

if (dir==0)
{
ot(";@ Get bytes from address r11, r11+2, etc:\n\n");
EaRead (11, 10, ea,0,1);

for (i=1;i<bytes;i++)
{
ot(" add r11,r11,#2\n\n");
EaRead (11, 0, ea,0,1);
ot(" orr r10,r10,r0,lsr #%d\n",i*8);
}
ot("\n");

ot(";@ Save the value into the data register:\n");
EaCalc (0,0x0e00,nea,size);
EaWrite(0, 10,nea,size,1);
}

if (dir)
{
ot(";@ Get the value from the data register:\n");
EaCalc (0,0x0e00,nea,size);
EaRead (0, 10,nea,size,1);

ot(";@ Save bytes into address r11, r11+2, etc:\n\n");
for (i=0;i<bytes;i++)
{
EaWrite(11, 10, ea,0,1);
if (i<bytes-1)
{
ot(" add r11,r11,#2\n");
ot(" mov r10,r10,lsl #8\n\n");
}
}

}

OpEnd();

return 0;
}
Hey fDave, you should have thought about this before! :D
 
Ermm, not really - only worked on it for a few minutes in fact (well maybe an hour). 0.018 is a cumulation of last couple of days, 0.019 is the movep opcode I added.
Ok. I just ment that the progress is great. :p
 
yes! this deffinently is the best time to own a gp32 ever
gigadrive
fgen32
and a new release of osnes coming soon
life is good
 
A couple BugReports:

-Contra is really f'ed up I suggest you take a look at that one dave, you teleport randomly across the map

-Shining Force II now plays the opening menus with the witch and the sega logo, but anything involving the game's engine goes straight to a bios monitor

Other than those, I noticed that Sonic 3 and Knuckles loaded up on this emulator... the good thing is that it's 4.1mb, and I always thought that this emu was limited to ROMS of 4mb or less. That's awesome :D

i guess it muct be a very complex game, as it only runs at 15-20fps during gameplay (when overclocked)

Great work dave!
 
I've already mentioned contra to Dave as well as others. Let me know if you want me to beta test the new version dave or wait for another one.
 
Back
Top