Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
saxman

DOOM 32X WAD Converter

Recommended Posts

Flash carts exist for Genesis/32X. I've even modded one to accept data <4MB. If I have time I'll post a video over the next few days with HT32X running on my real hardware.

I was thinking about doing some sort of very limited 32X edition of Hypertension - I know how to build/assemble/etc the cartridges, but yeah, it takes a lot of time. Who would actually want a copy though?

;)

Share this post


Link to post
Chu said:

Who would actually want a copy though?

;)


:D

EDIT: Updated the Jag TC again. MAP13 now includes the BFG and the geometry has been corrected to better reflect the Jaguar version. Intermission music is now also included. Invul haze has been edited slightly to better reflect the Jaguar version and the Chaingun and Plasma rifle now fire at the correct speeds. Also now contains the Jag status bar, thanks to InsanityBringer.

If I need to update this again I'll create a seperate thread, rather than spamming up saxman's all the time ;)

Share this post


Link to post
Chu said:

Flash carts exist for Genesis/32X. I've even modded one to accept data > 4MB. If I have time I'll post a video over the next few days with HT32X running on my real hardware.

I was thinking about doing some sort of very limited 32X edition of Hypertension - I know how to build/assemble/etc the cartridges, but yeah, it takes a lot of time. Who would actually want a copy though?

;)


Fixed.

Share this post


Link to post
Guest DILDOMASTER666

Here's a quick and dirty conversion project status report. What's happening is, me and a friend are cutting down the Doom2 maps just enough to fit in the 96KB limit for map data, then giving them "rough equivalent" textures. Then, once we have a complete map progression with all the maps optimized for performance in the emulator and they all play through properly, then we'll start importing more Doom2-specific art into the IWAD and retexturing everything a bit closer to their PC counterparts.





(You can see that the 32x doesn't like areas much taller than 512 units...)

Share this post


Link to post

I'm going to use this thread to post debugging information. I'm hellbent on porting Hypertension to this 32X, and if it means reverse engineering Doom32X, so be it.

Right now I'm debugging the Genesis VDP Registers in realtime, on 32x PAL Doom. This is what I have so far (and indeed proves that the Genesis renders the statusbar separate from the SH2 cores):

*All* of the status bar sprites are generated through the Genesis VDP. All face sprites are 32x32, while the status bar "font" graphics are all 16x16 (M_DOOM is separated into 7 pieces at 32x32). Face sprites seem to alternate between 277/279 (X POS - when the marine is looking around near 100 health). This all seems normal in realtime - I dumped some of the face graphics and it looks like they are interlaced (as in, only dumps half the face). Leads me to believe the face graphics are actually 32x16 (so the VDP laces the other register with the right graphic in realtime) - this reason is because only the top part of the face is being animated, so that extra x16 is the genesis running through each 4bpp graphic (4x4=16),(16x2=32) to render the bottom register. The Genesis laces the lower width part and only changes it in memory as the marine takes damage in the normal Doom increments. This isn't new, as the HEX stuff showed, but instrumental in changing how this works.

When I bring the menu up the debug table changes to reflect the menu graphics.

Looksee:


EDIT: I have successfully patched into the Genesis Yamaha 2612 debugger (again, the 32X does not take care of music - the PWM in the 32x only takes care of sounds). The YM2612 has 6 channels that control the music - I found all of the operators, where the frequencies are in the HEX, Octave, etc etc. I can change the music, which will be later on down the road.

EDIT2: I'm having some trouble deciphering the sound code in the mSH2 but it looks like these values might have something to do with sounds being played:
022EA686:b24b - bsr -22EAB1E

-2243D84:BFFF - bsr -02243d86

Among other things,
I see standard mov.1 r3, (028, r10) which looks like movement code of either the player or monsters, but the main SH2 core looks like it might be the one to play these sounds.

If this thread isn't appropriate for debugging stuff I've created one here that we can discuss more debugging/patching/dis-assembly stuff. I'll post future updates at that link, as I've also linked other 32X enthusiasts to that board - hopefully we can get Hypertension ported in glory, rather than being a Doom32X clone.

Share this post


Link to post

Fisk: while this is off topic, I had to mention that the font in your second picture is exactly the same font used by the GBA game Castlevania: Circle of the Moon. Weird :)

Share this post


Link to post
AlektorophobiA said:

Those "Hypertension32x" and "Doom II 32x" are looking great, keep it working.


Seconded! I honestly thought that an anyway accurate 32x port of Doom II was out of the question. Those shots prove otherwise!

Share this post


Link to post

This is great news. I was just looking into the Dehacked stuff - glad you are working on an automated patcher.

I found out a shitload more information on Doom32x, but I need to compile it all in a presentable format. I'm hoping it will fill in answers that we didn't know about the 32X and DOOM32X itself.

Share this post


Link to post

http://www.4shared.com/file/188740341/da3c3c32/DEH32X_010.html

DOOM 32X DeHackEd Patcher v0.10



It will import thing information from a DEH file. I can't guarantee it works perfectly the way it should as I have given it very limited testing. I know the "width" and "height" may be issues, as well as "speed" on certain things. Help me test it out and let me know what works, what doesn't, and so on. I also included a sample DEH file that modifies a couple enemies.

Share this post


Link to post

Heh. How about modding/fixing bugs in the 32X Doom engine? :-p

That should be fun, if anything, to discover/deduce what version of the source code it's based on. E.g. does it suffer from the ouchface bug? Ghost monsters? Is it really a source port or is there major rewriting in there etc.

Share this post


Link to post
Maes said:

Heh. How about modding/fixing bugs in the 32X Doom engine? :-p

That should be fun, if anything, to discover/deduce what version of the source code it's based on. E.g. does it suffer from the ouchface bug? Ghost monsters? Is it really a source port or is there major rewriting in there etc.


The face code in JaguarDoom is completely redone and from what I am seeing, I would say yes, that bug doesn't exist.

int		spclfaceSprite[NUMSPCLFACES] = 
		{0,sbf_facelft,sbf_facergt,sbf_ouch,sbf_gotgat,sbf_mowdown};
boolean doSpclFace;
spclface_e	spclFaceType;


	/* */
	/* face change */
	/* */
	if (stbar.godmode)
		DrawJagobj(faces[GODFACE],FACEX,FACEY);
	else
	if (!stbar.health)
		DrawJagobj(faces[DEADFACE],FACEX,FACEY);
	else
	if (doSpclFace)
	{
		int	base = stbar.health / 20;
		base = base > 4 ? 4 : base;
		base = 4 - base;
		base *= 8;
		DrawJagobj(faces[base + spclfaceSprite[spclFaceType]],FACEX,FACEY);
	}
	else
	if ((stbar.face != newface) && !gibdraw)
	{
		int	base = stbar.health/20;
		base = base > 4 ? 4 : base;
		base = 4 - base;
		base *= 8;
		stbar.face = newface;
		DrawJagobj (faces[base + newface], FACEX, FACEY);
	}

Also since 32x is based directly from JaguarDoom, it should also contain the gibface. Also, JaguarDoom has a lot of the existing code re-written from scratch as well as some stuff improved, or rather simplified.

Also Chu, what kind of assembly language are 32x roms usually compiled in? I could maybe disassemble it in IDA Pro..

Share this post


Link to post

@Kaiser - to assemble 32X roms, these are what's used:
Snasm68k Assembler - regular Motorola 68000 assembly for Sega Genesis
SnasmSH2 Assembler - SuperH(SH2) core assembly for 32X (also works for Sega Saturn)

I'm working on disassembling it in Eclipse but you are welcome to try your hand as well, since you are most likely more knowledgeable than I am with this.

Share this post


Link to post

At least a good portion of the source for 32x DOOM is available. Just get the JagDoom source and look for the #if(n)def MARS statements - MARS was the development codename for the 32x project.

Using that as a basis, it should be possible to fill in some of the blanks using a tool such as IDA :)

If 32x Doom has problems with areas of > 512 height, that would suggest that it suffers from a problem related to Moire error, which would probably place it circa Doom 1.2

Share this post


Link to post
Quasar said:

At least a good portion of the source for 32x DOOM is available. Just get the JagDoom source and look for the #if(n)def MARS statements - MARS was the development codename for the 32x project.

Using that as a basis, it should be possible to fill in some of the blanks using a tool such as IDA :)

If 32x Doom has problems with areas of > 512 height, that would suggest that it suffers from a problem related to Moire error, which would probably place it circa Doom 1.2

You're right - I'm looking through it and finding MARS stuff. I should have known that, oh well.

Fixing the >512 height is something I'm adamant about doing though.

More 32X specs should be coming later tonight.

Share this post


Link to post

Maybe while doing this someone can come up with a decent port of Doom for Sega Saturn...unless I have to do it ;)

Share this post


Link to post
Guest DILDOMASTER666

Out of curiosity, may I ask how one goes about getting maps >15 playable, as in the JAG32X hack by saxman? It would probably help making Doom 2 32x a bit more... Well, faithful. I really hate the idea that I'm having to cut some maps just because I just don't know what value at a particular address in the ROM to change, for example.

Share this post


Link to post
Fisk said:

Out of curiosity, may I ask how one goes about getting maps >15 playable, as in the JAG32X hack by saxman?

Edit from jag32x.32x. ;) You just use the converter to export the wad out of the 32x file and edit it directly, then import it back into jag32x.32x when you're done.

The Doom 2 conversion is looking great so far, let me know if you need any help on getting the maps within the limits.

As far as for what maps to skip, looking at PSX Doom would be a good start. I can tell you from my editing of Ultimate Doom, PSX Doom skips certain maps for a reason. Sure, you could split a map in two parts like GBA Doom 2, but then you're going to have to cut out but yet another map to make room for it. Also 32X Doom's limits are stricter than PSX Doom's, as I am having to edit maps beyond what PSX Doom did to get them not to crash 32X Doom because of seg/visiplane overflows.


Also:
I patched Jag32X Doom
DOWNLOAD (pick one)
http://ul.to/vor6yo
http://www.sendspace.com/file/jxskk3
http://www.speedyshare.com/files/20134118/JAG32X.zip

FIXES:

1)simplifies MAP20 so it can fit into the 32X's memory and thus be playable

2)fixes MAP20's yellow key secret door so it is accessable

3)all of the skull keys in the Jaguar maps are replaced with normal keys, as the skull keys have no icons in the 32X versions status bar when picked up (so you couldn't easily tell which ones you had)

Share this post


Link to post
Guest DILDOMASTER666
Nuxius said:

Edit from jag32x.32x. ;) You just use the converter to export the wad out of the 32x file and edit it directly, then import it back into jag32x.32x when you're done.


*facepalm*

Of course. I can't believe I didn't think of that :P

The Doom 2 conversion is looking great so far, let me know if you need any help on getting the maps within the limits.

As far as for what maps to skip, looking at PSX Doom would be a good start. I can tell you from my editing of Ultimate Doom, PSX Doom skips certain maps for a reason. Sure, you could split a map in two parts like GBA Doom 2, but then you're going to have to cut out but yet another map to make room for it. Also 32X Doom's limits are stricter than PSX Doom's, as I am having to edit maps beyond what PSX Doom did to get them not to crash 32X Doom because of seg/visiplane overflows


Of course. Anyone willing to contribute is absolutely welcome. AIM, MSN, YIM, PM, or whatever in my direction, if you'd please, while in the mean time I PM you with a current build of the ROM.

EDIT: Additional screenshots from Doom2 32x:


The upper-left (Tricks and Traps) was taken on the old NTSC ROM base; the rest were taken after the move to the JAG32X EU ROM.

Share this post


Link to post

This is unrelated to my utility, but I thought this was interesting:

http://www.4shared.com/file/189525118/8e320b90/D32X_music.html

Just a little experiment with music. Each level is given it's own song. The reason for this is I discovered some unused tracks in the ROM.

Level 10 -- Title
Level 11 -- Victory
Level 12 -- Intermission (version 1)
Level 13 -- Intermission (version 2)

The two intermission tunes get layered together in the game. Level 14 does that.



Also, the playlist found in the ROM has 21 entries (excluding the zero entry which is there only because level "1" is the first level, not level 0.) If you exclude the two Jag-specific maps and MAP20 which crashes the game, that would make 21 maps. That's me speculating a bit, but it appears the 32X version was going to have 21 levels.



Also, on the note about accessing more levels, if you know how to use a hex editor, change the word at 0x000E74 to anything you'd like. This is certain to work in the EU ROM, but the NTSC ROM may have a different address.

As for indicating what level is the secret level, last level, etc... I'm not sure about it yet. I'm recently finding that for some reason when I try to enter the secret level from level 3, it's taking me to level 4 (is there something about this I'm forgetting???)

Share this post


Link to post

Music is another good point to investigate: if I'm not wrong the 32X uses the Mega Drive for FM music, and itself only adds 2 digital PWM channels or somesuch. Now, the sound chip used in the Mega Drive is pretty similar in capabilities to the OPL3, so it should be capable of delivering much superior music than the steaming pile of anal crap that's plaguing the 32X.

Is the music stores as MUS/MIDI lumps and are there timbre definitions in a GENMIDI lump, or are they using a completely different system? In the former case, it should be possible to reprogram the timbres using high-quality FM instruments, so that E1M1 doesn't sound like a aquarewave banjo :-p

Share this post


Link to post

The music in 32X DOOM is handled by the YM2612, that's OPL2. 32X's PWM takes care of DMA sounds and the Z80 is (we think) for management (disabling it almost removes the music).

They just wanted a quick port of the music, and that's why it sounds like crap. They did it in a literal soundfont-way than most Genesis/32X games did. Then again, can you really see Doom32X having any other OPL2 music common to Genesis games? :p

Share this post


Link to post
Chu said:

The music in 32X DOOM is handled by the YM2612, that's OPL2.


Wait...the OPL2 would be Yamaha YM3812, which has more channels but only two ops/channel. The YM 2612 is actually closer to an OPL3 locked in 4-op mode (6 channels, 4 operators), although I think it lacks some of the base waveforms and so some effects and sounds will sound off.

THe problem with shitty OPL2/3 timbres actually plagues many sound card drivers in the PC World, including DOS-era games and windows drivers. Doom was exceptional in its good use of the OPL2 chip (and AFAIK it doesn't actually have OPL3 timbres, using the OPL3 just adds stereo and double voices). When I first heard E1M1's music in the 32X, it reminded me of how a Yamaha Waveforce sounded through ZDoom using the on-board FM chip used as a MIDI device through windows: very poor, since the GENMIDI timbres weren't used, and instead they had some bland, placeholder "instruments".

That's why I'm curious: if they use a MUS + GENMIDI approach, then fixing GENMIDI (or the equivalent) should fix the music too ;-)

Now if they have the timbres hardcoded somewhere in special playback subroutines....heh...good luck with that.

Share this post


Link to post
Guest DILDOMASTER666

This seems relevant.



I'll be doing this for all the original Doom tracks that appeared in the 32x version along with the Doom2 music for distribution with Doom 2 32x. It's not much, but I agree that the original 32x Doom music is absolutely atrocious and I aim to provide an alternative. Sort of.

Share this post


Link to post

I checked out the ROM myself, and saw that there are no IWAD entries for sounds and/or music, so these must reside somewhere else, probably in a 68000 or Z80 chunk of code. If so, finding said code in there would be a good place to start. About changing it...well, that;s another matter altogether.

Edit: nm, I read about the Sh2 code above handling sound. Damn... my ASM sk1llz are too 0ldsk00l for that.

Share this post


Link to post

Nice work on the tunage, Fisk! That is so much better than the native 32x music. I always felt that the Mega Drive's wee FM sound chip was capable of a lot more (eg. Thunder Force IV, Gunstar Heroes or any of the Streets of Rage games) and this proves it. Good job!

Share this post


Link to post

The YM2612 is an OPN2 chip. It's actually two YM2203's in one, with the added ability to replace channel 6 with DAC. It's very closely related to the Yamaha DX/TX family of FM synthesizers. It's on the lower end of the scale in terms of quality and abilities, but it is definitely capable of doing better music than DOOM 32X.

Just download "Sonic Boom" to hear the Duke Nukem 3D theme song playing -- it sounds just like it would on a PC! So it seems to me that they just weren't all that concerned with the quality of the music when they ported DOOM to the 32X.

Share this post


Link to post
Guest
This topic is now closed to further replies.

×