Jump to content
NHL'94 Forums

Recommended Posts

Posted (edited)

I wanted to do a proof of concept to show that we should be able to mod NHL 94 to use the Sega CD music via an MSU-MD patch. This would make it compatible with specific emulators (such as Retroarch+GenesisPlusGX), real hardware (cartridge+cd) and also flashcarts that have Sega CD support (like the Everdrive Pro).

I was able to put this together today using the NHL 92 source code as a base for convenience since its fully disassembled at this point (thats not to say this can't be done in 94 today-- I think we have enough knowledge on the 94 source to do it)

 

How was it done?

1. Set up file structure to use within Retroarch+GenesisPlusGX. NHL92.md = rom file. NHL92.cue/bin is actually the NHL94 Sega CD game. You need to make sure the .cue file correctly points to the NHL92.bin file. All 3 file names need to match.

2. Include msu driver in code. I believe this is what allows a cartridge game to access the CD without going through the Sega CD bios. This also should work on real hardware as a result.

Stanleymap
	incbin ..\Extracted\Graphics\Stanley.map.jim
	even
EASNmap
	incbin ..\Extracted\Graphics\EASN.map.jim
	even
MSU_Driver:
	incbin msu-drv.bin

3. After the EA logo I initialize the MSU driver, wait for the CD to be ready, and then play the NHL 94 main menu music. This probably can be done smoother so that the game doesn't pause here. Note, for some reason the title screen does not always show after this and instead a black screen is rendered-- I believe it actually might be an emulator problem as I've seen it happen in Retroarch+GenesisPlusGX even without my mod do that.

Begin		
	move	#$2700,SR	
	move.l	#Stack,sp	
	move.l	#varstart,a0	;clear out ram
	; Call MSU-MD driver initialization (assuming loaded at MSU_Driver)
    jsr     MSU_Driver

    tst.w   d0
    bne.s   No_MCD          ; If d0 != 0, MCD not detected
; Wait for driver ready
.Wait_Ready
    move.b  $A12020,d0
    cmpi.b  #0,d0
    bne.s   .Wait_Ready

    ; Set volume to max (optional)
    move.b  #$15, $A12010   ; VOL command
    move.b  #255, $A12011   ; Volume 255
    addq.b  #1, $A1201F     ; Execute

    ; Wait ready again
.Wait_Ready2:
    move.b  $A12020,d0
    cmpi.b  #0,d0
    bne.s   .Wait_Ready2

    ; Play track 4 in loop
    move.b  #$12, $A12010   ; PLAY LOOP command
    move.b  #4, $A12011     ; Track 4 (NHL 94 menu music)
    addq.b  #1, $A1201F     ; Execute

4. Play NHL 94 Scouting Report/Intro music on Scouting report screen

ScoutingReport
	; Play track 3 in loop
    move.b  #$12, $A12010   ; PLAY LOOP command
    move.b  #3, $A12011     ; Track 3 (NHL 94 scouting report/intro movie music)
    addq.b  #1, $A1201F     ; Execute

5. Play Organ music at start of period

StartPer
	; Play track 7
    move.b  #$11, $A12010   ; PLAY command
    move.b  #7, $A12011     ; Track 7 (organ music)
    addq.b  #1, $A1201F     ; Execute

Next thing would be to detect when the organ music finishes playing so that I could play the ambient crowd track in a loop. It would likely need a check in one of the functions that runs every frame (periodicevents or vblank) I did attempt something but it didn't work. I also thought that maybe it might be easier if I just looked at what the Sega CD version did in it's code and reproduce that logic to manage playing the crowd track.

 

MSU-MD driver is available here: krikzz/msu-md: MegaCD driver for msu-like interfacing with CD hardware

More info on MSU-MD: MSU-MD Patches | Adding CD quality sound to MegaDrive/Genesis games.

Sample repositories:

YLFAndy/MSU-MD: A repository of my MSU-MD patches

ArcadeTV (ArcadeTV) / Repositories

Edited by bcrt2000
  • Love 1
  • Wow 1
  • bcrt2000 changed the title to Prototyping Sega CD MSU-MD mod for NHL 94 via NHL 92

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...