PDA

View Full Version : News about GenesisPlusDC



DCEmu_Newsposter
January 1st, 1970, 01:00
Will Sams (aka Storminator16) reported about a few games he has tested with a new but still early WIP version of BlackAura's GenesisPlusDC:[br]"Note: When I say highly playable, I mean it's fast! [br][br][b]Sonic - runs well with the current emu's settings; highly playable [b]Alien 3 - seems to run a tad slower with varying speed ups, but playable [b]NHLPA '93 - right off the bat I got a 'pvr_wait_ready: timed out' then proceeded to some errors in the title screen, in-game menu, and game. My VGA monitor may be jacked up, but it seems I'm getting a black ice :/ Probably my monitor, it has been inverting colors lately. Playable, and speed runs well with current emu's settings. Highly playable asside from graphic errors. [b]Ghostbusters - Status bar at the bottom of the screen missing, would be highly playable but the status bar is important Runs fantastic otherwise [b]Chakan - The Forever Man seems to move slow, and the scrolling is jerky at times. Nevermind, this is how bad the game usually is. I have no reason why I tested this. Highly playable....if you like this garbage game. [b]Thunderforce 3 - Status bars missing, but highly playable I guess you have some foreground sprites not working or disabled, BA? [b]Streets of Rage 2 - Status bar missing, seems to run a tad slow. First "alleged" 16 meg rom I tried with this. [b]Valis 3 - Well, there is a color problem. All text in the opening cinema were black (or I just couldn't see it) and the in-game conversations are fudged. Overall all, the tiles on the right side of the screen are fudged. 'Course, status window is non-existent. Not very playable because of the graphical glitches, but speed-wise it's fine if you love this game. [b]Street Fighter 2 Turbo - The other "alleged" 16 meg rom I tried. Memory issue? The emu refuses to run it, and crashes. [b]Sonic 2 - Read what I said about Sonic 1. Works fine."[br][br]You can download the source code here (http://files.frashii.com/~sp00nz/Doom/files/BlackAura/gpdc-pvr.tar.bz2) [br][br]For a development status report by BlackAura have a look at the comments.

[Modified 06/21/04 14:36:07 by DCEmu_Newsposter]

Christuserloeser
June 21st, 2004, 09:26
Here's what BlackAura wrote about the progress he had the last two days with emulating the VDP:


Update: I have it displaying sprites almost correctly.

I fixed a bug which was causing massive graphics corruption (because the emulator byte-swaps the whole of VRAM, every 2 pixels were flipped, so instead of 1,2,3,4 I was getting 3,4,1,2), now that patterns are all being drawn perfectly. It's just that multi-cell sprites which are made of more than one tile are borked.

So that means 8x8 sprites are displayed perfectly, but anything else isn't. It can draw a wide sprite if the sprite isn't flipped (and I think I know how to fix that one), but trying to draw sprites more than 1 cell high results in a garbled mess. Obviously there's a bit of a gap between my understanding of the VDP and the way it actually works. The documentation I have is a little sparse when it comes to the way things are actually rendered, and the Genesis Plus software renderer isn't a lot of help.

I tried using the PVR's texture flip bits to emulate the tile flipping, but I couldn't get that to work, so it's just futzing around with the texture coordinates at the moment. Somewhat inelegant, but it works.

Aside from that, I need to start using the punch-through display list so we can start getting some transparency, and it's rendering the sprites in the wrong order (thinking of OpenGL, I thought that higher Z coordinates meant further away, when they're the opposite way around on the Dreamcast. D'oh!)

Edit: Just dropped the screen resolution back to 320x240 (was using 640x480 for some debug info which I no longer need), and the graphic corruption is still there. Now it's swapping every alternate pixel, but the distortion wasn't bad enough to notice on 640x480.

Other than that, sprites now work 99% correctly. Figured out the multi-cell sprite thing (I was drawing width first, should have been drawing height first) and the flipping stuff. Woohoo!

Edit 2: Fixed the GFX corruption. Apparently the DC and Genesis pack their colour values into one byte in the opposite order. Now sprites are almost perfect (for now). I tried to use the Punch-through display list, but it crashed on me. Bugger.

---

There's only one (major) problem with the sprites at the moment. For whatever reason, some of the sprites look completely screwed up. Basically, they look as if they're displaying the wrong graphics. However, even if it's displaying the wrong graphics every single frame and you pause it, it suddenly fixes itself. So that probably means it's an issue with the tile cache code. It's probably because of deferred rendering - I think I'm uploading textures for frame X when the PVR is still rendering frame X-1, so the frame gets bits of the graphics from the next frame...

---

I'm going to let you guys play with this thing as soon as I've fixed one bug related to horizontal scrolling (and me not having a bloody clue how horizontal scrolling works, or what the hell Charles MacDonald was doing in Genesis Plus - both have been causing a lot of problems). Basically, the tile offset into the name table is scrolling the wrong way, but the pixel offset onto the screen is scrolling correctly.

Aside from that, it works, and it's a hair's breadth from being full speed (every few frames it just passes over the 16.6ms boundary and takes two frames instead of one). Compatability is utter crap at the moment, and there are a lot of graphics glitches on every game I've tested on, but it works!

(Thirty minutes later)

Fixed. [...] If anyone wants to try to fix a few of the more glaringly obvious bugs [...] please feel free. The fact that the rendering code ignores virtually every single register used to control the display is a major problem (stuff like the display enable bit, background colour, vertical scroll mode, that kind of thing), it doesn't handle 32-cell display modes properly (draws them as if they were 40-cell), column-based vertical scrolling doesn't work, shadow/hilight doesn't work, theres some weird graphics glitches on the sprites, it's a bit slow, and it draws garbage outside the borders of the display.

I'd like to thank all of you that are involved with Genesis / Mega Drive emulation on DC, especially Stef and BlackAura for their outstanding achievments.

Chris

WHurricane16
June 22nd, 2004, 08:41
BA corrected me on something: no frameskipping. This is truly fullspeed!

quzar
June 22nd, 2004, 09:23
its not fullspeed, he already talked about that. fullspeed would mean that each frame takes 16ms to render, but this takes 18ms to render each frame. (im pretty sure about those numbers). So in effect it is around 90% or something. With C68k though, this will definetly be fullspeed, with room to spare.

Christuserloeser
June 22nd, 2004, 11:04
:o ...the c68k isn't even implemented? *:o


I opened the source code yesterday. You must be correct with that: I saw only the Musashi as CPU core iirc *:-X

Unbelievable that is*;D


@Storm: I've read that BA wrote about that 18ms frame render time lag and changed the newspost.


...unbelievable *:)



Chris

BlackAura
June 22nd, 2004, 11:14
Basically, the thing renders most frames in less than 16ms, but a few frames (depending on the game) takes a little longer, like 18ms or so, and those frames take 32ms before they actually display. Rough guess, I'd say it's running at around 55FPS or so.

C68k would fix that instantly, as would some optimization. I'd like to get it actually working more-or-less correctly on most games before I start doing that though.

curt_grymala
June 22nd, 2004, 11:43
This is absolutely incredible. I tried playing Castlevania: Bloodlines with this emu, and it ran near perfectly. I am amazed at how far everything has come in these last few months.

Is this a problem just I am having, or is this a real issue: When I played the game, the screen seemed to be squished up, and only showed on about the left two-thirds of my TV.

Christuserloeser
June 22nd, 2004, 11:50
If there'll be a Z80 core with some tweaking towards SHx as it's certainly needed for the final version of NeoCD anyway, this emu will be one of the best Genesis emus available for any system!

SegaCD? Here we come 8)

WHurricane16
June 22nd, 2004, 12:26
its not fullspeed, he already talked about that. fullspeed would mean that each frame takes 16ms to render, but this takes 18ms to render each frame. *(im pretty sure about those numbers). So in effect it is around 90% or something. With C68k though, this will definetly be fullspeed, with room to spare.

Must a person always choose his words carefully around here? What I love is the long winded explainations to prove someone wrong. :D

obelisk
June 22nd, 2004, 12:50
this is great! like i've said before, you guys are magicians!

BlackAura
June 22nd, 2004, 22:29
curt_grymala - Yeah, that's normal. Bloodlines uses 32-cell mode, which is only 256 pixels wide. Most games use 40-cell mode, which is 320 pixels wide. Someone (me) was too lazy to put in any special code to handle 32-cell mode yet, so it all gets squished on the left side of the screen. Same thing (and worse) happens with the special stage of Sonic 2.

After I've cleaned up the code a bit, and integrated some of the changes I've been given, I'll try to get the compatability up a little.

Alexvrb
June 22nd, 2004, 23:13
If there'll be a Z80 core with some tweaking towards SHx as it's certainly needed for the final version of NeoCD anyway, this emu will be one of the best Genesis emus available for any system!

SegaCD? Here we come 8)

I wouldn't jump the gun on SCD emulation. That adds a lot more than you'd think.

quzar
June 23rd, 2004, 00:19
Must a person always choose his words carefully around here? *What I love is the long winded explainations to prove someone wrong. :D



I just think it would be misrepresentation. Something that would turn off people new to the scene, saying "look its fullspeed" then they play it and it isnt, and they think its all there is and the last version or something and it has graphical errors and such. Then they might run to that OTHER genesis emulator...

guymelef
June 23rd, 2004, 01:24
anyone remember the good ol' days of emu's
back when nesticle was just getting off the ground
and snes9x barely did anything?
before zsnes
when most gameboy emu's had a debug screen instead of a fancy GUI
when waiting a year for a new emu was just a drop in the bucket.
man i miss it

BlackAura
June 23rd, 2004, 02:27
Well, it is full speed (or close enough that you won't be able to tell), but it's not (yet) as good as Sega's Smash Pack rip. It's still a bit slow (we need a faster Z80 emulator before we can enable sound, although it's still playable with sound enabled) and the VDP emulation isn't accurate enough yet. Still, most of what's there was done by me in two days, with a couple of day's worth of additional tweaks by a small group. Many games are playable, quite a few with only very minor graphics glitches.

WHurricane16
June 23rd, 2004, 05:06
Something that would turn off people new to the scene, saying "look its fullspeed" then they play it and it isnt, and they think its all there is and the last version or something and it has graphical errors and such. Then they might run to that OTHER genesis emulator...

Are you friggin' kidding me?

WHurricane16
June 23rd, 2004, 05:21
Preview release of BlackAura's Geneis Plus port with a menu by Speud & some code fixes by Ice88 (Warmtoe). *This is in elf format, so use Elf2bin to create a binary and Scramble to scramble it. *I'm sure releasing this in bin format will kill someone's server:

http://homepage.ntlworld.com/ian_edwards/ice88/gpdc.zip

or

http://www.storm-studios.net/gpdc.zip

Any noticeable bugs or the dreaded "how many roms can this hold" please notify Black Aura in this or another site.

Speud's menu controls:


you can freely browse your cd, everything that isnt a dir or doesnt have one of the predefined extenion (zip/ZIP, gz/GZ, bin/BIN, smd/SMD) is skipped.
press down/up to move the cursor or left/right to change the page.
press A to open a dir or launch a ROM.
press B to open the parent dir.
press X to choose the resolution between 640x480 (default) and 320x240.
press Y to disable (default) or enable sound.
while youre playing press L+R+start to return to the menu.
when youre finished pressed X+Y+A+B+start to exit the app.

curt_grymala
June 23rd, 2004, 09:37
@BlackAura - Yeah - I noticed the graphical errors in the "Sonic 2" special stage (actually I noticed them in the two-player mode, but it's basically the same idea). Still, the regular areas of Sonic 2 work beautifully.

The numbers at the top of the screen (I'm guessing they're keeping track of the frame rendering) - is anybody actually able to read those as they whiz by, or are you simply recording them to a log somewhere and going back over them?

WHurricane16
June 23rd, 2004, 10:13
I actually keep track of it in the console from time to time. It depends on the game, but with sound enabled it jumps all over the place, but 58/60 is common ground.

WaCk0
June 23rd, 2004, 20:09
Amazing job BA.. just tried Sonic and I was like :o