Register - Login
Views: 99389102
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 07:48:29 AM
Jul - The Cutting Room Floor - Virtua Racing (MD/32x) findings New poll - New thread - New reply
Next newer thread | Next older thread
Tamkis
Member
Level: 27


Posts: 75/148
EXP: 109441
For next: 6718

Since: 03-12-12


Since last post: 3.2 years
Last activity: 3.1 years

Posted on 10-09-13 05:53:49 AM (last edited by Tamkis at 10-09-13 03:50:00 PM) Link | Quote
A few days ago, I decided to open up the rom file for the Sega Genesis and Sega 32x version of Virtua Racing in a hex editor, to see if there was any TCRF-worthy material inside. You know, the only MD game with the fancy Sega Virtua Processor (SVP) chip in it, and with the awesome 3D graphics. I did not perform a Motorola 68k nor Hitach SH-2 disasm for either version, as dissasembling are above my head; however, I did perform a simple peek for string-based data.

Some interesting things were found, especially for the special SVP MD version. Below are some text strings, and their ROM addresses, for both the Genesis/32x versions. Some are unused, while others are simply in-game text (useed), which I decided to list anyways, for potential ROM-hackers.
--

Virtua Racing MD:

$4E07
(Garbage? Or character sets? There seems to be a lot of unusual type of padding like this throughout the rom. On the hexadecimal level, each character's value is incremented by 1, which is... odd.)
!"#$%&`()0123456789@ABCDEFGHIPQRSTUVWXY

$4F6C (Debug info!)
Communication Error!
DRAM clear check
Draw start
Read error !!
Line length over !!
Calculate matrix
Make polygon data
Draw polygon
Draw bitmap
DSP completed
ST reg error !!
Soft SP error !!

$1B376 (Debug info!)
ROM CHECKSUM 1
DRAM R/W 2
DSP ROM RD 3
DSP DRAM R/W 4
DSP IRAM R/W 5
DSP DRAM OVER WRITE 6
DSP POINTER

$1b3fc (Debug info!)
ERROR SKIP OK??
COMMUNICATION ERROR !!!!!

$20028 ("SEGA" TMSS String?)
SEGA

$2ECFD (In-game text)

INSTANT REPLAY? YES NO

$2FBF9 (In-game text)
\<=> RANKING \<=>
@
RANK
NAME
TIME
VR MODE

\<=> FASTEST LAP \<=>
1st
2nd
3rd
4th
5th
6th
7th
8th
9th

10th
11th
12th
13th
14th
15th

16th
17th
18th
19th
20th
21st

22nd
23rd
24th

$2FF9C (In-game text)
BEGINNER
COURSE RANKING
MEDIUM
COURSE RANKING
EXPERT
COURSE RANKING
EXIT
RECORDS

$301CE (In-game text)
BIG FOREST
BAY BRIDGE
ACROPOLIS

$33075 (In-game text)
PLAYER 1
PLAYER 2
PRESS A,B,OR C
----

Virtua Racing DX (32x)

$202A3 (What appears to be uncompiled Hitachi SH-2 Code? Repeats twice)
RSRV;
INST3
SLOT
CPUA
DMA
NMI
UBRK
TRAP
IRL
=====

What is most interesting in my findings are what I strongly believe to be the is debug info for the SVP MD version of Virtua Racing. For those who do not know, this version of virtua racing was recently emulated, via Notaz PicoDrive emulator ports. According to the Notaz's notes and other's research, the SVP is actually a Samsung SSP1601 DSP processor, which drives polygon drawing. The contents of some of the strings, which mention "DSP", "polygon", matrix", do seem to be related to some kind of debug function.

Also, according to Notaz's notes, he mentions that somewhere in the rom is indeed an arcade style SMC function. These strings must have something to do with it!

Originally posted by "Notaz's docs"

-------------------------------------------------------------------------------
4. Other notes
-------------------------------------------------------------------------------

The game has arcade-style memory self-check mode, which can be accessed by
pressing _all_ buttons (including directions) on 3-button controller. There was
probably some loopback plug for this...

The entry point for the code seems to be at address 0x800 (word 0x400) in ROM,
but it is not clear where the address is fetched from when the system powers
up. The memory test code also sets up "ld PC, .." opcodes at 0x7f4, 0x7f8 and
0x7fc, which jump to some routines, possibly interrupt handlers. This means
that mentioned addresses might be built-in interrupt vectors.



I tried (and nearly failed, physically) at pressing "_all_" butons at once on his emulator with VR running at the title screen, but nothing happened. Also, I noted that those debug strings are not in the 32x version, which shows further support that they are SVP-specific debug info. (The 32x version did 3D via its sheer horsepower.)


As for the 32x version, that data at that single rom address appears to be some kind of uncompiled SH-2 commands; however, I am not entirely sure. I also found an Easter Egg in the 32x version, in the form of a Sonic reference. If you go backwards on Sand Park, before the fork in the road, you will find the word "Knuckles"!


----

So, does anyone more knowledgable on Sega Genesis ROM hacking (Andlabs?) want to research for and enable the long lost SMC debug data? Is there a known SMC for the Arcade version of Virtua Racing?]

I do not have a TCRF account, so if anybody wants to throw this data on the wiki, be my guest

EDIT: Verified to indeed be debug data, and to also be accessable on hardware! So next post...
Tamkis
Member
Level: 27


Posts: 76/148
EXP: 109441
For next: 6718

Since: 03-12-12


Since last post: 3.2 years
Last activity: 3.1 years

Posted on 10-09-13 04:07:18 PM (last edited by Tamkis at 10-09-13 11:20:02 PM) Link | Quote
I hate to double post, but I found some more research on the Virtua Racing SVP debug feature. Apparently, Nemesis of SonicRetro fame discovered how to access the SMC debug feature on hardware in this article. On compatible Sega Genesis hardware, and with a Game Genie (not a PAR) device, enter the GG code REAT-E61A and run the game.

Here are some emulator screenshots of the Self-Memory check function. The first is what happens in an emulator that does not support SVP, and the second in PicoDrive.



EDIT: Added the pics of the SMC debug function



Next newer thread | Next older thread
Jul - The Cutting Room Floor - Virtua Racing (MD/32x) findings New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

29 database queries, 1 query cache hits.
Query execution time:  0.111781 seconds
Script execution time:  0.008552 seconds
Total render time:  0.120333 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 301 - Warning: unescaped & or unknown entity "&page"
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 202 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 91 - Warning: missing </font> before </table>
line 156 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 158 column 9 - Warning: missing <tr>
line 176 column 13 - Warning: missing <tr>
line 177 column 102 - Warning: unescaped & or unknown entity "&postid"
line 298 column 3166 - Warning: missing </s> before <blockquote>
line 300 column 3356 - Warning: inserting implicit <s>
line 300 column 3356 - Warning: missing </s> before <hr>
line 301 column 1 - Warning: inserting implicit <s>
line 301 column 1 - Warning: missing </s> before <hr>
line 314 column 4219 - Warning: inserting implicit <s>
line 315 column 1 - Warning: inserting implicit <s>
line 330 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 332 column 9 - Warning: missing <tr>
line 350 column 13 - Warning: missing <tr>
line 351 column 102 - Warning: unescaped & or unknown entity "&postid"
line 353 column 262 - Warning: unescaped & or unknown entity "&showuser"
line 353 column 477 - Warning: unescaped & or unknown entity "&st"
line 366 column 17 - Warning: missing <tr>
line 366 column 17 - Warning: discarding unexpected <table>
line 369 column 35 - Warning: missing <tr>
line 369 column 50 - Warning: missing </font> before </td>
line 369 column 91 - Warning: missing </font> before </table>
line 371 column 35 - Warning: missing <tr>
line 371 column 50 - Warning: missing </font> before </td>
line 372 column 37 - Warning: unescaped & or unknown entity "&id"
line 371 column 202 - Warning: missing </font> before </table>
line 373 column 17 - Warning: discarding unexpected </textarea>
line 373 column 28 - Warning: discarding unexpected </form>
line 373 column 35 - Warning: discarding unexpected </embed>
line 373 column 43 - Warning: discarding unexpected </noembed>
line 373 column 53 - Warning: discarding unexpected </noscript>
line 373 column 64 - Warning: discarding unexpected </noembed>
line 373 column 74 - Warning: discarding unexpected </embed>
line 373 column 82 - Warning: discarding unexpected </table>
line 373 column 90 - Warning: discarding unexpected </table>
line 375 column 9 - Warning: missing </font> before <table>
line 387 column 25 - Warning: discarding unexpected </font>
line 396 column 57 - Warning: discarding unexpected </font>
line 374 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 112 - Warning: <img> lacks "alt" attribute
line 161 column 162 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 176 column 92 - Warning: <font> attribute "color" had invalid value "97ACEF" and has been replaced
line 320 column 4933 - Warning: <img> lacks "alt" attribute
line 325 column 5323 - Warning: <img> proprietary attribute value "absmiddle"
line 325 column 5323 - Warning: <img> lacks "alt" attribute
line 335 column 22 - Warning: <img> lacks "alt" attribute
line 335 column 63 - Warning: <img> lacks "alt" attribute
line 335 column 112 - Warning: <img> lacks "alt" attribute
line 335 column 162 - Warning: <img> lacks "alt" attribute
line 346 column 15 - Warning: <img> lacks "alt" attribute
line 350 column 92 - Warning: <font> attribute "color" had invalid value "97ACEF" and has been replaced
line 357 column 861 - Warning: <img> lacks "alt" attribute
line 360 column 1052 - Warning: <img> lacks "alt" attribute
line 372 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 372 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 372 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 381 column 25 - Warning: <img> lacks "alt" attribute
line 386 column 267 - Warning: <img> lacks "alt" attribute
line 149 column 50 - Warning: trimming empty <font>
line 314 column 4219 - Warning: trimming empty <s>
line 366 column 17 - Warning: trimming empty <tr>
line 369 column 50 - Warning: trimming empty <font>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 177 column 27 - Warning: <nobr> is not approved by W3C
line 351 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 92 warnings and 0 errors!


The alt attribute should be used to give a short description
of an image; longer descriptions should be given with the
longdesc attribute which takes a URL linked to the description.
These measures are needed for people using non-graphical browsers.

For further advice on how to make your pages accessible
see http://www.w3.org/WAI/GL.
You are recommended to use CSS to specify the font and
properties such as its size and color. This will reduce
the size of HTML files and make them easier to maintain
compared with using <FONT> elements.

You are recommended to use CSS to control line wrapping.
Use "white-space: nowrap" to inhibit wrapping in place
of inserting <NOBR>...</NOBR> into the markup.

About HTML Tidy: https://github.com/htacg/tidy-html5
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/
Validate your HTML documents: http://validator.w3.org/nu/
Lobby your company to join the W3C: http://www.w3.org/Consortium

Do you speak a language other than English, or a different variant of
English? Consider helping us to localize HTML Tidy. For details please see
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md