Search found 591 matches

by Mask of Destiny
Sat Jun 03, 2017 7:45 am
Forum: Tools
Topic: Blastem 0.5.0 - Many accuracy improvements, basic SMS support, runs OD2
Replies: 33
Views: 11919

Blastem 0.5.0 - Many accuracy improvements, basic SMS support, runs OD2

Hello folks, I am happy to announce the latest stable release of BlastEm. This release is largely focused on accuracy and completeness. YM2612 SSG-EG and CSM modes are implemented, VDP Mode 4 is implemented, a bunch of timing issues have been fixed, etc. Since I added Mode 4 support, I also went and...
by Mask of Destiny
Wed May 31, 2017 12:27 am
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

The easiest way to run Genesis Plus GX on Windows is probably to use the Genesis Plus GX core in Retroarch. There is code in the repo for making a basic SDL build. I've had audio sync issues with that build when run under Linux (not sure how it does on Windows), but it might be sufficient if you jus...
by Mask of Destiny
Tue May 30, 2017 8:36 pm
Forum: Video Display Processor
Topic: Sprites emulation and how they work on Exodus
Replies: 6
Views: 3975

Re: Sprites emulation and how they work on Exodus

Says that bits 0-9 are used for the position (10 bits) Ah sorry, I got my bit counts and bit numbers crossed when reading your post originally. In interlace mode 2, the range is & 0x3FF, but in interlace mode 0 or 1, its 0x1FF :P The document doesn't say it properly, but its actually either 8 or 9 ...
by Mask of Destiny
Tue May 30, 2017 6:14 pm
Forum: Video Display Processor
Topic: Sprites emulation and how they work on Exodus
Replies: 6
Views: 3975

Re: Sprites emulation and how they work on Exodus

So I can't speak to what's going on in Exodus, but I think your problem is that you're not subtracting 128 from the 9-bit coordinate. To make it easier to have sprites that are partially offscreen, the Genesis/MD VDP uses a 9-bit coordinate system in which the top left corner of the screen has the c...
by Mask of Destiny
Tue May 23, 2017 6:21 am
Forum: Megadrive/Genesis
Topic: M68K Interrupt Processing
Replies: 7
Views: 3152

Re: M68K Interrupt Processing

After I implemented this, it seemed my interrupt latency was now too high, at least in some cases. I dug back into the 4,325,121 patent and realized that my description above is not correct. Like most things in the 68000, latching of the interrupt state is controlled by microcode. Specifically, it's...
by Mask of Destiny
Mon May 01, 2017 7:39 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

I am doing it in a naive way though (re-fetch all found sprites attributes if writes happen after phase 1 and before the start of phase 2, based on the number of active sprites found during phase 1) Are you preserving the list of sprites determined to be on the current line when you do the re-fetch...
by Mask of Destiny
Sat Apr 29, 2017 7:25 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

No idea what causes the vertical stripes in the 3rd pic, though, incorrectly emulated illegal plane modes maybe? BlastEm had these too and I believe fixing that is what got rid of them. Regarding those remaining glitches, please check what I wrote here about re-fetching of sprite Y coord and size: ...
by Mask of Destiny
Fri Apr 28, 2017 5:44 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

There is no mirroring effect going on when the width is 64 tiles, only the first 32 rows get used Well that makes sense. The top 3 address bits are always fixed to the value from the appropriate register. 128x64 will give you 128x32 and 64x128 will give you 64x64 for the same reason. Thanks for doi...
by Mask of Destiny
Thu Apr 27, 2017 8:54 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

invalid vertical size with valid horizontal size will behave as if vertical size was set to 32. I have a hunch that it actually gives you a weird setup that looks like it's 32 high, but actually has 64 distinct rows with some duplication. Specifically I think you'll get: 0-31, 0-31, 64-95, 64-95. T...
by Mask of Destiny
Thu Apr 27, 2017 6:12 pm
Forum: Sound
Topic: z80 BankSwitch reset/initialize
Replies: 2
Views: 3066

Re: z80 BankSwitch reset

The bank register is a simple serial shift register. Each time you write to it a bit is shifted in as the new most significant bit, with the existing bits shifted to the right by one, with the old least significant bit getting shifted out entirely. Effectively, each time you write it's always the ne...
by Mask of Destiny
Thu Apr 27, 2017 6:06 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

EDIT: judging from your twitter screenshots it looks like you might not be emulating invalid plane size 0x22 correctly, it's supposed to result in a 32x1 tile plane which I use a lot to get rid of planes when I don't need them You are indeed correct. Specifically my handling of an invalid horizonta...
by Mask of Destiny
Thu Apr 27, 2017 1:10 am
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

The code assumes all sprite Y writes to occur between phase 1 and 2. Only 8 sprites are visible on a row and as I noted in the doc for phase 2 "If there are less than 20 ones visible then they're checked late" there is plenty of time before the VDP re-evaluates sprite Y in phase 2. If you don't re-...
by Mask of Destiny
Wed Apr 26, 2017 6:48 pm
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

3) yeah, this part requires halfway precise timing (but it's actually kinda relaxed since this routine also has to account for cycles stolen by the Z80) The per-line update code doesn't seem so bad. I imagine writing it was a pain, since it seems to have strategic nops inserted to avoid having the ...
by Mask of Destiny
Fri Apr 21, 2017 8:54 am
Forum: Video Display Processor
Topic: Titan's Mega Drive tech docs including Debug Register
Replies: 36
Views: 16199

Re: Titan's Mega Drive tech docs including Debug Register

Lots of work was spent on getting rid of all the unwanted garbage, but 2 effect makes explicit use of what one would normally consider garbage ;) So based on a comment/question from alk on IRC, I'm guessing one of those is the dissolve of the white border in the post-Titancade screen. What's the ot...
by Mask of Destiny
Tue Apr 18, 2017 11:24 pm
Forum: Hardware
Topic: DS 16
Replies: 2
Views: 3226

Re: DS 16

Well if you look at the cart slot PCB, it's clear that there aren't nearly enough pins on that ribbon cable for everything to be going through the cart slot. There are only 26 pins, but at a minimum you need 21 address lines, 16 data lines, !CE_0, !CAS_0, +5V and GND which is a total of 41 lines. So...