Bangai-O - Disponible Parche para soporte VGA

No lo he probado, pero parece que por fin han conseguido parchear este juego, tenéis más info en los foros de Dreamcast-talk

TapamN
I just spent like 9 hours straight doing this, so I don't really feel like going into detail. This could probably be turned into a Codebreaker code, maybe later. The instructions are to patch a clean GDI rip of the US version of Bangai-Oh. All the changes are on track 37. I've also included the RAM address from my notes of what needs to be patched, if you subtract 0x8c010000 from this, you can get the address into an unscrambled 1ST_READ.BIN, if you want to patch it that way.

Fix render glitches (results in 320x240 window in top-left of 640x480 screen):
Track 37 at 0x069DBBD4 (Ram address 0x8c0790e4) change [0x01] to [0xFF]

Fix slowdown:
Track 37 at 0x069C5108 (Ram address 0x8c065598) change from [0x01] to [0xFF]
Track 37 at 0x069C5156 (Ram address 0x8c0655e6) change from [0x2D 0x94] to [0x00 0xe4]

Make fullscreen (fix horizontal):
Track 37 at 0x069F1B3A (Ram address 0x8c08c32a) change from [0x01 0xc9] to [0x01 0xe0]

Make fullscreen (fix vertical):
Track 37 at 0x069F1278 (Ram address 0x8c08bb98) change from [0x00 0x41] to [0x02 0xe1]

Restore bottom 16 pixels of screen:
Track 37 at 0x069F1904 (Ram address 0x8c08c0f4) change from [0x1c 0x30] to [0x01 0x70]

Disable dither:
Track 37 at 0x069F1452 (Ram address 0x8c08bd72) change from [0x2b 0x1e] to [0xdb 0x1e]

With the patch applied, it probably still works on NTSC as well, but I haven't tested it. Now that I know what kind of surgery needs to be done to convert a 320x240 NTSC only game to 320x240 VGA, it will probably be much easier to do the same to other games (like KoF 98). Some other day.

Edit: Oh, this doesn't include a patch for the VGA support bit in IP.BIN. Someone else can figure that out if they want it.

Edit 2: Codebreaker version

0f0790e4 000088ff
0f065598 000088ff
0f0655e6 0000e400
0f08c32a 0000e001
0f08bb98 0000e102
0f08c0f4 00007001
0f08bd72 00001edb


Parche en formato Universal Dreamcast Patcher

ateam
Excellent work!

I documented some of my progress is developing VGA patches for the handful of heavy hitters that lack it. While I was able to get somewhere, I got distracted with the slew of other projects on my plate. God bless you for seeing it through on Bangai-O!

For everyone's convenience, here's a .DCP patch file for use with my Universal Dreamcast Patcher. It was built against the NTSC-U version of the game. Note that this patch also sets the VGA flag in IP.BIN, as well as includes the missing disc art PVR. Simply load up the .DCP and either a TOSEC GDI or Redump CUE/BIN of the original, and let the patcher do the rest!

Bangai-O (VGA Patch - TapamN).dcp
https://drive.google.com/u/0/uc?id=1DXp ... t=download



TapamN
How the patch works:

When setting the video mode, the functions that handle it take an integer where different bits control different parts of the video signal. The bottom two bits control the output type (0 = NTSC, 1 = VGA, 2 = PAL), and there is a pair of bits that control horizontal (0 = 320, 1 = 640) and vertical (0 = 240, 1 = 480) resolution. When using VGA, it goes out of its way to overrides/ignores/bypasses the resolution bits, and always runs at 640x480. The patch is mainly disabling the VGA resolution overrides so that the rendering hardware targets 320x240, then forcing the signal to 320x240 VGA. The 0x01 to 0xFF patches basically change code like this:
CODE: SELECT ALL

#define SIGNAL_TYPE(mode) (mode & 0x02)
#define VGA 1
if (SIGNAL_TYPE((requested_mode) == VGA) {
//Force 640x480
} else {
//Handle low resolutions, not run
}
...to this:
CODE: SELECT ALL

#define SIGNAL_TYPE(mode) (mode & 0x02)
if (SIGNAL_TYPE((requested_mode) == 0xFF) {
//Force 640x480 is not run because of impossible check
} else {
//Handle low resolutions, now always run
}


Some bits that control the resolution still don't get set correctly, so some additional changes were needed to force 320x240.

streeker wrote:
Though Scart/RGB output is now broken.

Hmm, keeping NTSC working was mainly kind of lucky. There was one patch that I think might have responsible for breaking RGB, maybe I'll check and see if I can modify it to work differently, but it's not something I'm going to go out of my way for. Anyone who wants RGB still has the original after all.

Getting other non-VGA games to remain working with NTSC will probably be more difficult. Bangai-Oh is unique in that it still kind of works if you bypass the BIOS's cable check; the game still checks the cable type and requests VGA, but runs at the wrong resolution because of the PVR driver. Other non-VGA games are probably be hard coded to NTSC, so squeezing in a cable check would be hard. Any patches for those will likely be VGA only, without NTSC support.
Entiendo que visualmente aunque salga con 480p son 240p reescalados y se verá practicamente igual que por scart, ¿no?
2 respuestas